Clarify AIR portability and registry identifier selection - #3
Merged
jonathanhefner merged 1 commit intoAug 27, 2026
Conversation
jonathanhefner
commented
Aug 27, 2026
Define publisher-authorized `urn:air` identifiers as the portable form
that catalogs preserve on first incorporation, while allowing registries
to preserve or replace non-AIR identifiers.
Distinguish registries acting as artifact publishers, authorized
delegates, and independent hosts; specify the corresponding
`{publisher}` segment rules; and make retention of replaced source
identifiers optional in namespaced `extensions`.
jonathanhefner
force-pushed
the
agent/issue-102-portability-clarifications
branch
from
August 27, 2026 18:53
45720c3 to
0c8b58d
Compare
jonathanhefner
marked this pull request as ready for review
August 27, 2026 18:54
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
urn:airidentifiers by who assigned them and whose domain appears in the{publisher}segmenturn:airidentifier exactlyurn:airsource identifiers, which have no portability guaranteeextensionsas their proper location when retainedMotivation
This follows the maintainer discussion of upstream PR Agent-Card/ai-catalog#105.
The original policy did not clearly distinguish a portable publisher identifier from an identifier that is valid only within its source catalog. For example, a publisher may use local identifiers such as
fooandbar; a registry combining entries from several publishers must be able to assign globally scoped identifiers to avoid conflicts.This revision keeps
urn:airoptional but gives publisher-authorizedurn:airidentifiers a specific interoperability benefit: a catalog must preserve one when it first incorporates the entry. A registry may preserve or replace other identifiers at its discretion, but they receive no cross-catalog portability guarantee.The assignment rules also identify the domain used in the AIR
{publisher}segment: a registry that becomes the artifact publisher uses its own domain, while an authorized delegate uses the delegating publisher domain. Merely hosting or aggregating an entry does not make a registry its publisher, so an independent host must use a non-urn:airidentifier under its own control when it assigns a replacement.Review focus
identifierdefinitionurn:airidentifierextensionsValidation
.venv/bin/mkdocs build --strict --site-dir /tmp/ai-catalog-issue-102-portability-site.venv/bin/python tools/build_spec.py specification/ai-catalog.md /tmp/ai-catalog-issue-102-portability-spec.htmlgit diff --check