Decision records · Value formats
D-009 Which characters may each part of a catalog_ref hold?
What the schemas do
Any characters except the delimiters / and @, a space, and control characters; each part non-empty.
Options
Why
The specification gives the four parts and their delimiters, and one example, but no character set. Splitting on / and @ is unambiguous only if no part holds them, and "version-pinned" needs a non-empty version after @. Nothing else is stated, so nothing else is constrained: the example's version is an integer, but a date or a SemVer pins a version as well. A space or a control character in a reference is a copy error, never a name, and excluding them keeps a trailing newline invalid, as type rules § 2 requires of every pattern.
What we ask the specification to state
Give the catalog_ref grammar: the characters each part may hold, and the form of <version>. Say whether <seller_namespace> is the seller's identity domain, as a namespaced term's domain is.
The specification lines it rests on
Each line is quoted as the record pins it. Expand an item to read the quote.
main
§ 2.2, code block 1 L97-L100 at 44dfaaf
catalog_ref: "<seller_namespace>/<collection>/<entry_id>@<version>" example: "examplepub/audiences/smb-decision-makers@3"
§ 2.2, a requirement L106 at 44dfaaf
References MUST be version-pinned.
With the open PRs
§ 2.2, code block 1 L90-L91 on main at 981a74e, L99 on main at c448618, L93 on main at 981a74e
catalog_ref: "<seller_namespace>/<collection>/<entry_id>@<version>" example: "examplepub/audiences/smb-decision-makers@3"
§ 2.2, a requirement L99 on main at 981a74e
References MUST be version-pinned.
What it shapes
main: CatalogRef
With the open PRs: CatalogRef