Home / Projects / Orchestrata Ultimate / Decisions / ADR index / ADR-0047
ADR-0047: Two ADR registers, string-significant ids — namespace, renumber nothing
| field | value |
|---|---|
| Status | Accepted |
| Date | 2026-08-29 |
| Register | factory (docs/adr, 4-digit ids) |
| Source | docs/adr/0047-adr-two-registers-string-significant-ids.md — permalink at 9c90c0209 (unchanged on master since that commit) |
| Wiki register entry | ADR-0047 (wiki status: Accepted) |
The record
Status: Accepted · Date: 2026-08-29
Context
ADR-0046's three-homes rule exposed a pre-existing collision: docs/adr's 4-digit series (0001-0038, SPEC-033/SPEC-115) and the wiki page's 3-digit series (001-025, project/ontology) reuse integer ids for different decisions; the sync/gate normalized ids to integers, so the graph silently resolved every colliding id to the wiki decision — 38 violations across 46 ids. Both renumbering directions break dense citations.
Decision (Mohamed, option 1)
Namespace; renumber nothing. ADR ids are matched as ZERO-PADDED STRINGS everywhere
(parser, sync, graph node identity, gate): "ADR-0001" and "ADR-001" are DIFFERENT ids.
Two registers are declared formally — factory (4-digit, file of record docs/adr/) and
project (up-to-3-digit, file of record the wiki decisions page) — carried as a
register property on ArchitectureDecision nodes and matched by the gate as
(register, padded id). Every existing citation in SPEC-033, the wiki, and the ruleset
design remains valid verbatim. The three-homes rule then completes by MIRRORING: the
factory series gains wiki register entries; the project series gains docs mirror files
under docs/adr/project-register/; wiki immutability (append-only, never edit an
Accepted body) is respected throughout.
Alternatives rejected
Renumbering the wiki series (breaks wiki-internal citations + 25 live graph node identities); renumbering the docs series (breaks SPEC-033's dense ADR-00NN citations).
Consequences
check_adr_graph_sync must report ZERO violations across both registers; the collision class is structurally impossible thereafter (distinct id strings).
Provenance
Mohamed's ruling "1", decision session 2026-08-29, resolving the blocker the ADR-0046 gate run exposed.
Related ADRs
Rulings cited
None.