Repository navigation
fix: advertise docs ai-catalog with rel="ai-catalog", drop unresolvable host.identifier - #747
Conversation
…scribedby did:web:shorebird.dev has no did.json behind it, so the identifier points at nothing. service-desc is for API descriptions (it still names the OpenAPI document); the ai-catalog describes the site, which is what describedby means. Matches shorebirdtech/website#426. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The AI Catalog spec registers rel="ai-catalog" and the media type application/ai-catalog+json, and isitagentready.com looks for that relation. Also set specVersion to the spec's Major.Minor "1.0". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Adversarial review (by a separate agent that didn't write the change)
Checked and fine: nothing else in the repo references the old relation. |
|
Responses to the adversarial review:
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AbhishekDoshi26
left a comment
There was a problem hiding this comment.
2 findings, both nits.
-
public/_headers:35: the catalog is served as
application/ai-catalog+json; charset=utf-8, but the spec's media type registration lists "Optional parameters: N/A" (UTF-8 JSON per RFC 8259, which defines no charset parameter). Serve exactlyContent-Type: application/ai-catalog+json, as the description says. -
PR description: "as the spec's Link Relation Discovery section registers" overstates it. That section defines the relation; registration is a separate IANA request, and
ai-catalogisn't in the IANA link-relations registry yet (checked link-relations-1.csv). Suggest "as the spec's Link Relation Discovery section defines (the spec requests IANA registration ofai-catalog; it is not in the IANA registry yet)".
Checked and correct: against Agent-Card/ai-catalog specification/ai-catalog.md at 9316f00, the relation is ai-catalog, specVersion "1.0" is Major.Minor, HostInfo's identifier is optional, every entry has identifier, type and url. https://shorebird.dev/.well-known/did.json is 404. The middleware's Link array is still well-formed and the OpenAPI document keeps service-desc. A clean npm run build puts the new <link rel="ai-catalog"> on every non-redirect page with no service-desc left in HTML, and no stale references remain in the repo.
I'll push the header fix and update the description.
AbhishekDoshi26
left a comment
There was a problem hiding this comment.
No findings.
Round 2, full diff at b1075d1 plus the description. Both round-1 nits are fixed: _headers serves exactly application/ai-catalog+json (the spec lists no parameters), and the description says the Link Relation Discovery section defines ai-catalog and that IANA hasn't registered it yet (no row in link-relations-1.csv). Re-checked against specification/ai-catalog.md at 9316f00: relation, media type, specVersion "1.0", optional HostInfo identifier, required entry members. shorebird.dev/.well-known/did.json is still 404. A clean build puts the new <link> on all 74 non-redirect pages with no service-desc left in HTML; the middleware Link list is valid RFC 8288 and the OpenAPI document keeps service-desc. No stale references remain.
Brings docs.shorebird.dev's AI catalog in line with the AI Catalog spec.
host.identifierremoved from/.well-known/ai-catalog.json. It wasdid:web:shorebird.dev, buthttps://shorebird.dev/.well-known/did.jsonreturns 404, so the DID resolves to nothing.identifieris optional.rel="ai-catalog"(type="application/ai-catalog+json") in both theLinkresponse header (functions/_middleware.ts) and the<link>inHead.astro, as the spec's Link Relation Discovery section defines (the spec requests IANA registration ofai-catalog; it is not in the IANA registry yet). It usedservice-desc, which RFC 8631 reserves for API descriptions; the OpenAPI document keeps that relation. isitagentready.com's ARD check looks forrel="ai-catalog"and currently passes only through the well-known fallback.specVersionis"1.0"(the spec requires Major.Minor), and_headersserves the catalog asapplication/ai-catalog+json.Screenshots
No visible change. Only response headers, a
<head>link and a JSON file change.Landing
As soon as approved.
🤖 Generated with Claude Code