Issue 338: a module built from a shared repository moves on every merge to it #231

Merged
mesh-admin merged 1 commits from issues/338-a-module-built-from-a-shared-repository-moves-on-every-merge-to-it into main 2026-10-10 01:01:58 +00:00
Contributor

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.
mesh-admin added 1 commit 2026-10-08 19:59:27 +00:00
Register issue 338: a module built from a shared repository moves on every merge to it
mesh/merge-gate pass: the change touches no module of the mesh's graph
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery delivered
7ade322bcb
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.
Author
Contributor

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.

<!-- 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`.
mesh-admin merged commit b106518cda into main 2026-10-10 01:01:58 +00:00
mesh-admin deleted branch issues/338-a-module-built-from-a-shared-repository-moves-on-every-merge-to-it 2026-10-10 01:01:58 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/hq#231