What happened. ADR 0236 recorded "a change to the build agent rebuilds most of the catalogue" as an open question. The merge it measured (103 modules, 88 byte-identical) never changed the build agent. It changed a file of the catalogue's reference module, which no machine runs. That module's definition was not in the merge, so the controller read the file as shared code and rebuilt everything built from the repository. The build agent stood in tier 0 only because everything else is built by it.
In this PR:
Issue 278 (status located): symptom, diagnosis, fix, and how each rule is checked.
ADR 0236: a progressive-insight note under the consequence. The tiering was right: a built-by edge never widens a plan, so a build-agent change rebuilds the agent alone. The cause was the shared-path rule. The decision, options and consequences are untouched.
To-be 30: a revision to the rule for what a merge changed. The forge's announcer now says which directories hold a definition at the merge commit, and only a path in none of them is shared.
records.py, index.py and cycle.py all pass. Role names only. Do not merge without a human approval.
**What happened.** ADR 0236 recorded "a change to the build agent rebuilds most of the catalogue" as an open question. The merge it measured (103 modules, 88 byte-identical) never changed the build agent. It changed a file of the catalogue's reference module, which no machine runs. That module's definition was not in the merge, so the controller read the file as shared code and rebuilt everything built from the repository. The build agent stood in tier 0 only because everything else is built by it.
**In this PR:**
- **Issue 278** (status `located`): symptom, diagnosis, fix, and how each rule is checked.
- **ADR 0236**: a progressive-insight note under the consequence. The tiering was right: a built-by edge never widens a plan, so a build-agent change rebuilds the agent alone. The cause was the shared-path rule. The decision, options and consequences are untouched.
- **To-be 30**: a revision to the rule for what a merge changed. The forge's announcer now says which directories hold a definition at the merge commit, and only a path in none of them is shared.
Code: mesh-controller PR #93, mesh-catalog PR #96.
`records.py`, `index.py` and `cycle.py` all pass. Role names only. Do not merge without a human approval.
The 103-module rebuild ADR 0236 put down to the build agent came from a file of the catalogue's
reference module, read as shared because its definition was not in the merge. Records the issue,
corrects ADR 0236's open question as a progressive insight (the tiering was right; the build agent
never widens a plan) and amends to-be 30's rule for what a merge changed.
Deliverynovox/hq@68e432ec0bee — held since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — mesh-delivery.release with why lets it go on.
Delivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
2026-10-06 23:05 (new) → proposed (announced): novox/hq#148 merged; its head was not heard by this owner, so it is made from the forge's word
2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/hq@68e432ec0bee` — **held** since 2026-10-06T23:05:28Z
Held for a person: merged without a passing check: only a person decides that it goes on — `mesh-delivery.release` with why lets it go on.
**Delivery plan** — builds nothing: the change touches no module of the mesh's graph
**Transitions**
- 2026-10-06 23:05 (new) → proposed (announced): novox/hq#148 merged; its head was not heard by this owner, so it is made from the forge's word
- 2026-10-06 23:05 proposed → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides that it goes on
The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What happened. ADR 0236 recorded "a change to the build agent rebuilds most of the catalogue" as an open question. The merge it measured (103 modules, 88 byte-identical) never changed the build agent. It changed a file of the catalogue's reference module, which no machine runs. That module's definition was not in the merge, so the controller read the file as shared code and rebuilt everything built from the repository. The build agent stood in tier 0 only because everything else is built by it.
In this PR:
located): symptom, diagnosis, fix, and how each rule is checked.Code: mesh-controller PR #93, mesh-catalog PR #96.
records.py,index.pyandcycle.pyall pass. Role names only. Do not merge without a human approval.Delivery
novox/hq@68e432ec0bee— held since 2026-10-06T23:05:28ZHeld for a person: merged without a passing check: only a person decides that it goes on —
mesh-delivery.releasewith why lets it go on.Delivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition:git log --notes=mesh-plan.