Skip to content

Publish ARD v0.91 - #81

Merged
rvguha merged 4 commits into
mainfrom
publish-v0.91
Aug 26, 2026
Merged

Publish ARD v0.91#81
rvguha merged 4 commits into
mainfrom
publish-v0.91

Conversation

@rvguha

@rvguha rvguha commented Aug 26, 2026

Copy link
Copy Markdown
Contributor

Promotes the v0.91 draft to the published specification. spec/ard.md is now v0.91; v0.9 is preserved at spec/ard-v0.9.md.

  • Editorial scaffolding removed as the draft's own banner instructed — review box, ◆ breadcrumbs, footnotes, closing disposition table. 664 → 574 lines, all deletion; no prose rewritten.
  • §5.1: one well-known path. A consumer MUST fetch /.well-known/ard.json; consulting the predecessor path is MAY.
  • Conformance tester and ard.cddl brought in line with the entry model.
  • ardEntryProjection removed; $defs are PascalCase (ArdEntry, ArdManifest, EntryFields, TrustManifest).
  • README status updated to v0.91.

Companion: ards-project/ard-docs#19. The two should land together — the site renders spec/ard.md from this repo at build time.

🤖 Generated with Claude Code

Promotes spec/ard-v0.91-draft.md to spec/ard.md, the file the docs site
renders. v0.9 is preserved verbatim at spec/ard-v0.9.md so its text stays
reachable.

Editorial scaffolding removed as the draft's own banner instructed: the
review box, 4 breadcrumb blockquotes, 21 inline footnote markers, 25
footnote definitions, and the closing disposition table. 664 -> 574 lines,
all deletion; no prose was altered in the strip. Header set to v0.91,
status Proposal, dated today.

Section 5.1 changes policy: ARD defines one well-known path. A consumer
MUST fetch /.well-known/ard.json and honour rel="ard"; consulting the
predecessor ai-catalog.json path and rel="ai-catalog" is now MAY, not the
MUST introduced in bae99d1. Publishers publish ard.json only.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@rvguha rvguha changed the title spec: publish v0.91 — promote the draft, single well-known path Publish ARD v0.91 Aug 26, 2026
rvguha and others added 3 commits August 26, 2026 11:12
The v0.91 PR deliberately left the tooling behind the spec. This catches it up.

conformance-test now validates against ard-entry.schema.json rather than
ai-catalog.schema.json: the document against ardManifest, then every entry
against ardEntry. Previously it validated the whole manifest against the
catalog schema and never checked entries individually.

New `publisher <domain>` mode performs the resolution 5.1 requires of a
consumer: fetch /.well-known/ard.json, fall back to the predecessor path with
a warning that consulting it is optional so the publisher may go undiscovered,
and fail only if neither resolves. The tool previously had no well-known
handling at all, so nothing exercised the path the spec names.

Discovery constraints brought in line with D.2:

- representativeQueries absent is now a warning. It was silently skipped;
  D.2 requires flagging it, and it is what separates an ARD entry from a
  bare catalog entry.
- specVersion is no longer required. ARD requires only `entries` at the
  top level; other root members are transport-defined and reported, not failed.
- `collections` at root downgraded from error to warning, since ARD ignores
  unrecognized top-level members.
- Search results are validated as ardEntryProjection (5.3.2): only
  `identifier` is required. The old check demanded displayName, type and
  url/data on every result and would have failed a conformant registry.

ard.cddl reconciled with the entry model: catalog-entry becomes ard-entry,
host-info is gone with the Host Info Object, the manifest requires only
entries, ard-entry-projection is added and used by search and list responses,
trust-manifest gains trustSchema and stops being closed, attestation.mediaType
becomes optional, and maps carry extension wildcards so namespaced terms stay
valid. The JSON Schema remains authoritative where the two disagree.

examples/basic/ai-catalog.json renamed to ard.json, with the CI reference
and README updated. All four example manifests and the end-to-end demo pass;
verified against Ora's live manifest, which resolves via the predecessor
path with the expected warning and whose 5 entries validate as ardEntry.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ardEntryProjection introduced a second entry-shaped noun in a specification
whose point is that ARD is defined over exactly one thing. It bought a $ref
target used twice; it cost a reader having to ask which of two entry objects
they are meant to publish. The rule it carried is kept, the noun is not.

Section 5.3.2 now states the rule directly: in a response an entry MUST carry
identifier, and every other term is at the registry's discretion. The OpenAPI
inlines that over EntryFields at both sites, and the CDDL does the same via
result-entry-fields. Nothing about what a conformant registry may return has
changed.

$defs are PascalCase: EntryFields, ArdEntry, ArdManifest, TrustManifest,
matching the OpenAPI's own schema naming. Title is ArdEntry.

Verified: OpenAPI parses with the inlined shapes, every CDDL rule reference
resolves, the tester validates against ArdManifest/ArdEntry, all example
manifests and the end-to-end demo pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Status was still "v0.9 (Draft)". The intro also said ARD "builds on the
ai-catalog standard" — the claim v0.91 §4 retires, and the same one that
cost the docs site its AI Catalog page. Layout now lists the preserved
spec/ard-v0.9.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@rvguha
rvguha merged commit aa3e598 into main Aug 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant