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)

← ADR-0046 · ADR-0048 →

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.

Rulings cited

None.

Specs cited