Issue 1966 (note 208); design 25 bus-state §1, §12.2 and the lead's answer L1 (hq PR design/25-merged-verdict).
Met three times on 2026-11-12 (claude-licence-manager 40f23318, 6bbac339, 191c1964): the assigner held each new build with "the controller has not issued the credential" until indexer_judge + grants_first_view_again. Cause: a pull request's candidate manifest is judged and accepted before its merge (candidates.go:288, says nothing); the merge's pass finds the same verdict, writes nothing, and says no manifest-accepted, so the grants part (HearVerdict, noVerdictYet) never writes the new fingerprint's part grant; the bus module misses a merged manifest's bus-state entries the same way.
Fix (thorough, small): in the merge's pass, for the digest just taken in whose verdict is unchanged and not held, the indexer says manifest-accepted from the verdict it holds, with that verdict's revision (sayHeld); the grants part treats an older revision as a gap and asks the verdicts again (§12.2).
Test: a case in TestTheIndexerJudgesEveryManifestOnce (candidate judged, then merged unchanged) fails on main and passes now. vet, unit, the indexer's and the grants part's integration tests pass.
Reviewed-by: mesh-code-reviewer@shanks at 46af1648974101bf5d1d3079e5226756b9fc77a8 (round 1; its one finding, the lead's answer's hq commit, is answered by L1 and cited in the commit message only)
Pushed-by: fix-1965@shanks
Issue 1966 (note 208); design 25 bus-state §1, §12.2 and the lead's answer L1 (hq PR design/25-merged-verdict).
Met three times on 2026-11-12 (claude-licence-manager 40f23318, 6bbac339, 191c1964): the assigner held each new build with "the controller has not issued the credential" until indexer_judge + grants_first_view_again. Cause: a pull request's candidate manifest is judged and accepted before its merge (candidates.go:288, says nothing); the merge's pass finds the same verdict, writes nothing, and says no manifest-accepted, so the grants part (HearVerdict, noVerdictYet) never writes the new fingerprint's part grant; the bus module misses a merged manifest's bus-state entries the same way.
Fix (thorough, small): in the merge's pass, for the digest just taken in whose verdict is unchanged and not held, the indexer says manifest-accepted from the verdict it holds, with that verdict's revision (sayHeld); the grants part treats an older revision as a gap and asks the verdicts again (§12.2).
Test: a case in TestTheIndexerJudgesEveryManifestOnce (candidate judged, then merged unchanged) fails on main and passes now. vet, unit, the indexer's and the grants part's integration tests pass.
Reviewed-by: mesh-code-reviewer@shanks at 46af1648974101bf5d1d3079e5226756b9fc77a8 (round 1; its one finding, the lead's answer's hq commit, is answered by L1 and cited in the commit message only)
Pushed-by: fix-1965@shanks
A pull request's candidate is judged before its merge and its verdict written, said nowhere. At the merge the
digest becomes the module's trunk manifest, but the merge's judging pass finds the same verdict, writes nothing
and so said nothing: the bus module never heard the new manifest, and the grants part, which follows the
verdicts on manifest-accepted, held the module as having no verdict and wrote no grant for its new fingerprint
(claude-licence-manager, three times on 2026-11-12). The merge's pass now says a fresh trunk manifest's accepted
verdict from the verdict held, with its revision.
Builds: design 25 bus-state §1, §12.2 (the indexer says manifest-accepted for every newly accepted manifest; the
grants part follows the verdicts on it)
Builds: design 25 bus-state L1 (hq ff30ac16, the lead's answer: a merged candidate's manifest is newly accepted).
Deliverynovox/mesh-delivery@104909817b70 — merged since 2026-11-12T12:28:40Z
Source — source.main moved to novox/mesh-delivery@76db40eb6b. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-11-12 12:20 (new) → proposed (announced): novox/mesh-delivery#207's head announced
2026-11-12 12:20 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-11-12 12:28 ready → merged (merged): on the trunk its modules follow: merged there
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@104909817b70` — **merged** since 2026-11-12T12:28:40Z
**Source** — source.main moved to novox/mesh-delivery@76db40eb6be1. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-11-12 12:20 (new) → proposed (announced): novox/mesh-delivery#207's head announced
- 2026-11-12 12:20 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-11-12 12:28 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `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.
Issue 1966 (note 208); design 25 bus-state §1, §12.2 and the lead's answer L1 (hq PR design/25-merged-verdict).
Met three times on 2026-11-12 (claude-licence-manager 40f23318, 6bbac339, 191c1964): the assigner held each new build with "the controller has not issued the credential" until indexer_judge + grants_first_view_again. Cause: a pull request's candidate manifest is judged and accepted before its merge (candidates.go:288, says nothing); the merge's pass finds the same verdict, writes nothing, and says no manifest-accepted, so the grants part (HearVerdict, noVerdictYet) never writes the new fingerprint's part grant; the bus module misses a merged manifest's bus-state entries the same way.
Fix (thorough, small): in the merge's pass, for the digest just taken in whose verdict is unchanged and not held, the indexer says manifest-accepted from the verdict it holds, with that verdict's revision (sayHeld); the grants part treats an older revision as a gap and asks the verdicts again (§12.2).
Test: a case in TestTheIndexerJudgesEveryManifestOnce (candidate judged, then merged unchanged) fails on main and passes now. vet, unit, the indexer's and the grants part's integration tests pass.
Reviewed-by: mesh-code-reviewer@shanks at 46af1648974101bf5d1d3079e5226756b9fc77a8 (round 1; its one finding, the lead's answer's hq commit, is answered by L1 and cited in the commit message only)
Pushed-by: fix-1965@shanks
Delivery
novox/mesh-delivery@104909817b70— merged since 2026-11-12T12:28:40ZSource — source.main moved to novox/mesh-delivery@76db40eb6b. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.