Registers issue 338 (status: located). Do not merge without review.
Symptom: every merge of the controller's repository on 2026-10-08 planned mesh-controller, build-agent and route-proxy in three gated tiers (10 to 11 minutes of first-node gates per walk, about 15 minutes per walk, instead of about 5). The route proxy on the home server was recreated in five of seven walks; its program had changed in only one of them.
Cause (from the code):mergeCandidates adds a module whose build reads the repository as a context (readsFrom) by repository alone; touchedBy never maps the changed paths onto it. The packages edge orders it after the repository's own module, and built-by orders the route proxy after the build seat. A README-only what-if plans the same three modules.
Why a rebuild of an unchanged program still moves (measured): the context's fingerprint is the whole repository's tree, and the recipes copy .git and build without -buildvcs=false, so Go stamps the commit into the program.
Correction to the first report: PR #159 did change the route proxy's program (it imports internal/broker). PR #163 is the clean case: unchanged program, recreated anyway.
Open, not explained: the deploy plan names these builds by the catalogue's commit, so at efcdd5dd (program changed) it said nothing was recreated. Whether that program reached the home server is not checked.
Fix directions (not implemented): the operator's rule, written in the report; a manifest field for a build's source paths inside a context, with a check against the Go import closure; reproducible builds beside it; or separate repositories, with the tradeoffs.
Checks run locally: records.py, index.py, cycle.py, words.py (with the catalogue's list) all pass.
Registers issue 338 (status: located). Do not merge without review.
- **Symptom:** every merge of the controller's repository on 2026-10-08 planned mesh-controller, build-agent and route-proxy in three gated tiers (10 to 11 minutes of first-node gates per walk, about 15 minutes per walk, instead of about 5). The route proxy on the home server was recreated in five of seven walks; its program had changed in only one of them.
- **Cause (from the code):** `mergeCandidates` adds a module whose build reads the repository as a context (`readsFrom`) by repository alone; `touchedBy` never maps the changed paths onto it. The `packages` edge orders it after the repository's own module, and `built-by` orders the route proxy after the build seat. A README-only what-if plans the same three modules.
- **Why a rebuild of an unchanged program still moves (measured):** the context's fingerprint is the whole repository's tree, and the recipes copy `.git` and build without `-buildvcs=false`, so Go stamps the commit into the program.
- **Correction to the first report:** PR #159 did change the route proxy's program (it imports `internal/broker`). PR #163 is the clean case: unchanged program, recreated anyway.
- **Open, not explained:** the deploy plan names these builds by the catalogue's commit, so at `efcdd5dd` (program changed) it said nothing was recreated. Whether that program reached the home server is not checked.
- **Fix directions (not implemented):** the operator's rule, written in the report; a manifest field for a build's source paths inside a context, with a check against the Go import closure; reproducible builds beside it; or separate repositories, with the tradeoffs.
Checks run locally: records.py, index.py, cycle.py, words.py (with the catalogue's list) all pass.
A controller merge walks three gated tiers because the route proxy and the
build seat are planned by repository, not by the paths their builds read,
and their programs carry the commit. Located; fix directions recorded.
Deliverynovox/hq@7ade322bcb4d — delivered since 2026-10-10T01:02:21Z
Delivery plan — builds nothing: the change touches no module of the mesh's graph
Transitions
2026-10-08 19:59 (new) → proposed (announced): novox/hq#231's head announced
2026-10-08 20:00 proposed → checked (checked): the verdict names this commit
2026-10-08 20:00 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
2026-10-10 01:02 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
2026-10-10 01:02 published → delivered (done): nothing for a walk to move
The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/hq@7ade322bcb4d` — **delivered** since 2026-10-10T01:02:21Z
**Delivery plan** — builds nothing: the change touches no module of the mesh's graph
**Transitions**
- 2026-10-08 19:59 (new) → proposed (announced): novox/hq#231's head announced
- 2026-10-08 20:00 proposed → checked (checked): the verdict names this commit
- 2026-10-08 20:00 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
- 2026-10-10 01:02 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
- 2026-10-10 01:02 published → delivered (done): nothing for a walk to move
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.
Registers issue 338 (status: located). Do not merge without review.
mergeCandidatesadds a module whose build reads the repository as a context (readsFrom) by repository alone;touchedBynever maps the changed paths onto it. Thepackagesedge orders it after the repository's own module, andbuilt-byorders the route proxy after the build seat. A README-only what-if plans the same three modules..gitand build without-buildvcs=false, so Go stamps the commit into the program.internal/broker). PR #163 is the clean case: unchanged program, recreated anyway.efcdd5dd(program changed) it said nothing was recreated. Whether that program reached the home server is not checked.Checks run locally: records.py, index.py, cycle.py, words.py (with the catalogue's list) all pass.
Delivery
novox/hq@7ade322bcb4d— delivered since 2026-10-10T01:02:21ZDelivery 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.