Home / Projects / Orchestrata Ultimate / Decisions / ADR index / ADR-0102
ADR-0102: Three graph ADR nodes overwritten by a mis-targeted codetools sync are re-baselined from docs, and the codetools register gets its own graph key before any further sync
| field | value |
|---|---|
| Status | Accepted — Accepted (ruling, Mohamed, 2026-10-13 21:12, verbatim: "agreed, next") |
| Date | 2026-10-13 |
| Register | factory (docs/adr, 4-digit ids) |
| Source | docs/adr/0102-three-graph-adr-nodes-overwritten-by-a-mis-targeted-codetools-sync-are-re-baselined-from-docs-and-the-codetools-register-gets-its-own-graph-key-before-any-further-sync.md — permalink at 9447d4fcc (unchanged on master since that commit) |
| Wiki register entry | ADR-0102 (wiki status: Accepted) |
The record
Status: Accepted (ruling, Mohamed, 2026-10-13 21:12, verbatim: "agreed, next") · Date: 2026-10-13 · Authorises --rebaseline-id for ADR-0035, ADR-0036 and ADR-0041 under ADR-0096's mechanism; constrains scripts/sync_architecture_to_graph.py until the project key lands
Context
At 20:21 on 2026-10-13 the coordinating session ran scripts/sync_architecture_to_graph.py --adrs <knowledge-wiki>/projects/codetools/decisions.md --repo-adrs <codetools>/docs/adr to give codetools' new ADR-0041 its graph home. The script has no project parameter: every id it reads is written under the orchestrata-ultimate: key. The codetools register (ADR-0019 to ADR-0041) therefore collided with this repository's ids. Observed from the run and the check that followed:
| Graph node | What happened |
|---|---|
orchestrata-ultimate:ADR-0039, ADR-0040 |
Refused: the nodes are Accepted and the immutability guard blocked the body write (BODY_DRIFT … is immutable). Intact. |
orchestrata-ultimate:ADR-0034 |
Overwritten with the codetools body, then restored by the corrective orchestrata sync at 20:23 (its status allowed the rewrite back). Intact now. |
orchestrata-ultimate:ADR-0035, ADR-0036 |
Overwritten with the codetools bodies ("One release on disk…", "Builders stop at targeted evidence…"), which carry Status: Accepted; the restore run was then refused by the same guard. The graph now holds codetools text under this repository's ids. |
orchestrata-ultimate:ADR-0041 |
Created from the codetools wiki entry; this repository's ADR-0041 ("Ruleset engine — per-surface immutable versions, named compositions (F1)") has only a wiki record, so the restore did not rewrite it. |
scripts/check_adr_graph_sync.py reports FAIL — 3 violation(s) across 126 id(s): title DRIFT on ADR-0035, ADR-0036 and ADR-0041. The script's --rebaseline-id refuses any id its --authority ADR does not name (ADR-0096), so the repair needs a ruling that names the three.
The underlying defect: a register that is not this repository's has no place in the graph under this script. The worktree orchestrata-ultimate-adrsync (branch ws/adr-sync-project-flag) holds work toward a project key; until it lands, codetools ADRs have two homes (docs, wiki), not three.
Decision (proposed)
- Re-baseline the three nodes from this repository's records.
scripts/sync_architecture_to_graph.py --rebaseline-id ADR-0035 --authority ADR-0102, the same for ADR-0036, each fromdocs/adr/; ADR-0041 from the wiki project register (projects/orchestrata-ultimate/decisions.md), since it has no docs record.check_adr_graph_sync.pymust then report no violation across the 126 ids. - No codetools sync into this graph until the project key exists. The codetools register's graph home is deferred, recorded in codetools ADR-0041's consequences by this id. Landing the project key (
ws/adr-sync-project-flag) is a normal slice under ADR-0046/0047; when it lands, codetools ADRs sync under their own key and this rule expires. - The sync refuses a foreign register.
sync_architecture_to_graph.py --adrs PATHand--repo-adrs DIRrefuse any path outside this repository and its own wiki page ($WIKI_ROOT/projects/orchestrata-ultimate/decisions.md) with a message naming this ADR, until a project key makes a foreign path meaningful.
Alternatives rejected
- Leave the three nodes and let the check stay red. The check is the three-homes gate for every ADR ruled after this one; a standing red hides the next drift.
- Edit the graph by hand with Cypher. Bypasses the ledgered mechanism ADR-0096 built for exactly this; the re-baseline flag logs its run.
- Re-baseline every id the mistaken run touched. Only three are wrong; the others were refused or restored, as the table shows.
Consequences
- Three logged re-baseline runs; check green; a one-line refusal in the sync script with its test.
- codetools ADR-0041 (Proposed) notes that its graph home waits on the project key.
- The coordinator's checklist gains: the graph sync is run only from this repository's checkout with its own page and
docs/adr.
Provenance
Coordinating session's own error at 20:21 on 2026-10-13, found by the check it ran at 20:23; sync and check output quoted above. Mechanism: ADR-0096 (--rebaseline-id with --authority), ADR-0098 (first-capture). Drafted by the coordinating session; awaiting Mohamed's ruling.
Related ADRs
- Also mentioned: ADR-0035, ADR-0036, ADR-0041, ADR-0096, ADR-0019, ADR-0039, ADR-0040, ADR-0034, ADR-0046, ADR-0098
Rulings cited
None.
Specs cited
None (or no spec page exists for the ones named).