Builders: a stale toolchain report no longer counts, and a disagreement no longer blanks a module already fingerprinted (issue 1940) #47

Merged
jschoubben merged 1 commits from fix/1940-stale-toolchain-record into main 2026-10-25 20:09:27 +00:00
Member

Issue 1940 (note 5): at 20:56 assigning the build modules to ace brought ace's toolchain report of 2026-10-23 (typescript v26.12.0) into the builders' agreement; every recompute then went to "builders disagree" and the controller's take-in held a dozen modules until ace was unassigned again.

  • standing.go (identical in the indexer, builder and checker): a node's toolchain report counts only while it has an open assignment of the build module and the report was written at or after that assignment's start (assigned, or the revision that opened the value). Until it reports again it is left out, said once.
  • indexer toolchains.go stillComputed: while a language has no agreement, a module keeps the fingerprint it holds when recomputing from its stored inputs and recorded toolchains gives the same fingerprint, also across a merge; a moved tree, base or agreed toolchain still waits.

ace's real toolchain (pacman): nodejs 26.12.1, go 1.27.3, the same as g14, novox and shanks.

Tests: tables reworked, no new top-level tests; go test -race ./... and go vet -tags integration ./... in indexer, builder, checker. A trial merge with fix/indexer-writes-on-change merges cleanly; this one goes first.

Not blocking (noted for issue 1940): a lasting disagreement is now silent on unchanged modules; a log line or condition on the disagreement itself keeps it loud.

Recovery mode: the operator merges by hand.

Reviewed-by: reviewer-toolchain@shanks at 3e7f852472

Issue 1940 (note 5): at 20:56 assigning the build modules to ace brought ace's toolchain report of 2026-10-23 (typescript v26.12.0) into the builders' agreement; every recompute then went to "builders disagree" and the controller's take-in held a dozen modules until ace was unassigned again. - `standing.go` (identical in the indexer, builder and checker): a node's toolchain report counts only while it has an open assignment of the build module and the report was written at or after that assignment's start (`assigned`, or the revision that opened the value). Until it reports again it is left out, said once. - indexer `toolchains.go` `stillComputed`: while a language has no agreement, a module keeps the fingerprint it holds when recomputing from its stored inputs and recorded toolchains gives the same fingerprint, also across a merge; a moved tree, base or agreed toolchain still waits. ace's real toolchain (pacman): nodejs 26.12.1, go 1.27.3, the same as g14, novox and shanks. Tests: tables reworked, no new top-level tests; `go test -race ./...` and `go vet -tags integration ./...` in indexer, builder, checker. A trial merge with fix/indexer-writes-on-change merges cleanly; this one goes first. Not blocking (noted for issue 1940): a lasting disagreement is now silent on unchanged modules; a log line or condition on the disagreement itself keeps it loud. Recovery mode: the operator merges by hand. Reviewed-by: reviewer-toolchain@shanks at 3e7f85247289bf95f4244f54bdc7e4cbc4f2b2b7
mesh-tools added 1 commit 2026-10-25 20:07:00 +00:00
Count a build node's toolchain report only once written since its assignment, and keep a computed fingerprint while builders disagree (issue 1940)
mesh/delivery held for a person: merged without a passing check: only a person decides what follows
mesh/check failed: integration: mesh-delivery-indexer/cmd/mesh-delivery-indexer.TestIndexerCountsOnlyTheAssignedBuildNodesToolchains: within 5 s of n2…
3e7f852472
On 2026-10-25 20:56 assigning mesh-build-node to ace again brought ace's report of 2026-10-23 (v26.12.0) back into the
agreement before the module ran there; the indexer blanked every module's fingerprint to "builders disagree" and the
controller's take-in refused modules already computed and built.

- The toolchain gate (indexer, builder, checker; still one file in three) leaves a report out, said once, until its node
  writes it since its current assignment: the assignment's own time, or the revision that opened it.
- The indexer keeps a module's held fingerprint while a language has no agreed toolchain, when its kept inputs with the
  toolchains it was computed with give it again; only a new fingerprint (a merge, a base, an agreed toolchain moved)
  needs the agreement.
Author
Member

Delivery novox/mesh-delivery@3e7f85247289 — held since 2026-10-25T20:09:28Z

Held for a person: merged without a passing check: only a person decides what follows — the merge reached the trunk without a passing check.

Source — source.main moved to novox/mesh-delivery@4efe6cfb26. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.

Transitions

  • 2026-10-25 20:07 (new) → proposed (announced): novox/mesh-delivery#47's head announced
  • 2026-10-25 20:08 proposed → rejected (refused): a verdict names this commit and the trunk's head as its trunk commit, and the gate failed or could not run, or the repository's own check failed
  • 2026-10-25 20:09 rejected → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides what follows

The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-delivery@3e7f85247289` — **held** since 2026-10-25T20:09:28Z Held for a person: merged without a passing check: only a person decides what follows — the merge reached the trunk without a passing check. **Source** — source.main moved to novox/mesh-delivery@4efe6cfb261d. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-10-25 20:07 (new) → proposed (announced): novox/mesh-delivery#47's head announced - 2026-10-25 20:08 proposed → rejected (refused): a verdict names this commit and the trunk's head as its trunk commit, and the gate failed or could not run, or the repository's own check failed - 2026-10-25 20:09 rejected → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides what follows The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
jschoubben merged commit 4efe6cfb26 into main 2026-10-25 20:09:27 +00:00
jschoubben deleted branch fix/1940-stale-toolchain-record 2026-10-25 20:09:27 +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/mesh-delivery#47