Say loudly what cannot be judged, read only a merge's changed directories, and move the taken key only by an applied merge (issues 1422, 1126; group fix/1422-trunk-unknown)
#94
Merged
mesh-toolsmerged 7 commits from fix/1422-trunk-unknown into main2026-10-28 10:34:51 +00:00
Delivery group fix/1422-trunk-unknown (mesh-delivery, mesh-catalog).
Issue 1422 (notes 4-8): a pull request of a repository the gate's source.main names no trunk head for was dropped silently by the checker (de-spiegel, novadock, hal).
Checker: such a candidate gets a 'cannot be judged: the trunk head of is not known' verdict, an error status and one log line per head, shown in checker_status; judged whole once the head is known.
Forge bridge: a pull.updated into a base other than main is written closed (ADR 0484 §11), so no candidate is made for it; a retarget to main is announced again by gitea (mesh-catalog member).
Issue 1126 (note 61): the bridge timed out ten times on mesh-catalog's merge 9fd9569 (140 modules, 420 file reads in one 30 s deadline) and dropped it; the indexer then moved its taken key without applying the merge, so show and view_reach said 'on the machines' falsely, and mesh-vault was never rebuilt.
Indexer: the taken key moves only by a merge it applied (ADR 0556 clause 1).
Bridge: a merge reads only module directories whose tree changed, kept by tree hash in memory and in a new state inputs; a failed try keeps what it read whole, so a large merge converges.
indexer_take_in re-reads a held module only when the forge says its record's commit is an ancestor of the source head (the recovery for mesh-vault after delivery).
Quick vs thorough: thorough for both (the timeout was met twice; the silent drop is the kind 1422 ends). Rule bent and said: the four 1126 commits had a first review reading in the review's third round, not counted against its limit.
Tests: rows and one renamed test only; mesh-delivery's count does not rise. Locally: gofmt, vet -tags integration, unit and the indexer's, bridge's, view's and checker's integration tests against an embedded bus pass.
Note kept: the bridge's inputs bucket has no TTL (issue 1126 note 62).
Delivery group fix/1422-trunk-unknown (mesh-delivery, mesh-catalog).
Issue 1422 (notes 4-8): a pull request of a repository the gate's source.main names no trunk head for was dropped silently by the checker (de-spiegel, novadock, hal).
- Checker: such a candidate gets a 'cannot be judged: the trunk head of <repo> is not known' verdict, an error status and one log line per head, shown in checker_status; judged whole once the head is known.
- Forge bridge: a pull.updated into a base other than main is written closed (ADR 0484 §11), so no candidate is made for it; a retarget to main is announced again by gitea (mesh-catalog member).
Issue 1126 (note 61): the bridge timed out ten times on mesh-catalog's merge 9fd9569 (140 modules, 420 file reads in one 30 s deadline) and dropped it; the indexer then moved its taken key without applying the merge, so show and view_reach said 'on the machines' falsely, and mesh-vault was never rebuilt.
- Indexer: the taken key moves only by a merge it applied (ADR 0556 clause 1).
- Bridge: a merge reads only module directories whose tree changed, kept by tree hash in memory and in a new state `inputs`; a failed try keeps what it read whole, so a large merge converges.
- indexer_take_in re-reads a held module only when the forge says its record's commit is an ancestor of the source head (the recovery for mesh-vault after delivery).
Quick vs thorough: thorough for both (the timeout was met twice; the silent drop is the kind 1422 ends). Rule bent and said: the four 1126 commits had a first review reading in the review's third round, not counted against its limit.
Tests: rows and one renamed test only; mesh-delivery's count does not rise. Locally: gofmt, vet -tags integration, unit and the indexer's, bridge's, view's and checker's integration tests against an embedded bus pass.
Note kept: the bridge's `inputs` bucket has no TTL (issue 1126 note 62).
Reviewed-by: rev-1422@shanks at 2b801f5bd49a710203944af416a8bf641231f7f6
A repository never merged through the gate has no entry in source.main, so its pull requests were dropped without a log
line, a verdict or a status, and checker_status counted them as new. Now the verdict says it cannot be judged and why,
the forge status is error with those words, checker_status names it under cannot_be_judged, the log says it once per
head, and the heads are judged whole once the trunk head is known. Quick fix: this. Thorough fix (the gate seeding
source.main from the pull message's base head) is still to do: it needs mesh-sdk, the forge bridge and the gate.
The checker judges pull requests into main only and source.main names main's head only (ADR 0484 §11), but a live update
into another base (de-spiegel#6 into nox-mesh) became a candidate, unlike at the start (OpenPulls) and at its merge. Once
the gate seeds a repository's trunk head, such a candidate would be judged against main's head: a verdict that lies.
A drained forge stream does not say a merge was applied: the forge bridge was still
retrying mesh-catalog#535's merged message when the indexer started, and the source's
head moved taken.mesh-catalog to 9fd9569, so the view and show said the merge was on the
machines while mesh-vault's record stood at 78d7ef7 (ADR 0556 clause 1).
mesh-catalog's 140 module directories are 420 forge reads per merge, past the 30 s bound
of a handled event while the forge is busy: the merged message of #535 timed out on every
try, and #3fb7951 needed seven (issue 1458 met the same kind at 131). A tree hash names its
bytes, so what was read at a tree is kept in the new state inputs and in memory, and a
merge reads only the directories it changed.
Without it the first merge after the bridge starts, with nothing kept, still reads all 140
catalogue directories in one 30 s try and times out as before.
A merge whose merged message never reached the indexer had no recovery: take-in answered
held for mesh-vault, whose record stayed at 78d7ef7 after mesh-catalog#535.
A head older than the record, or one whose order the forge cannot say, would have written
an older manifest back. The new tests become rows of existing ones: the repository is over
its 500 unit tests.
Deliverynovox/mesh-delivery@2b801f5bd49a — merged since 2026-10-28T10:34:54Z
Source — source.main moved to novox/mesh-delivery@31bbf207ef. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
composed together: pass — the checker's verdict at the members' heads (3bee9e0518c4)
Transitions
2026-10-28 10:20 (new) → proposed (announced): novox/mesh-delivery#94's head announced
2026-10-28 10: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-10-28 10:34 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@2b801f5bd49a` — **merged** since 2026-10-28T10:34:54Z
**Source** — source.main moved to novox/mesh-delivery@31bbf207ef3b. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/1422-trunk-unknown`: novox/mesh-catalog@f5d4b2f86ed4, novox/mesh-delivery@2b801f5bd49a
- composed together: pass — the checker's verdict at the members' heads (3bee9e0518c4)
**Transitions**
- 2026-10-28 10:20 (new) → proposed (announced): novox/mesh-delivery#94's head announced
- 2026-10-28 10: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-10-28 10:34 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.
Delivery group fix/1422-trunk-unknown (mesh-delivery, mesh-catalog).
Issue 1422 (notes 4-8): a pull request of a repository the gate's source.main names no trunk head for was dropped silently by the checker (de-spiegel, novadock, hal).
Issue 1126 (note 61): the bridge timed out ten times on mesh-catalog's merge 9fd9569 (140 modules, 420 file reads in one 30 s deadline) and dropped it; the indexer then moved its taken key without applying the merge, so show and view_reach said 'on the machines' falsely, and mesh-vault was never rebuilt.
inputs; a failed try keeps what it read whole, so a large merge converges.Quick vs thorough: thorough for both (the timeout was met twice; the silent drop is the kind 1422 ends). Rule bent and said: the four 1126 commits had a first review reading in the review's third round, not counted against its limit.
Tests: rows and one renamed test only; mesh-delivery's count does not rise. Locally: gofmt, vet -tags integration, unit and the indexer's, bridge's, view's and checker's integration tests against an embedded bus pass.
Note kept: the bridge's
inputsbucket has no TTL (issue 1126 note 62).Reviewed-by: rev-1422@shanks at
2b801f5bd4Delivery
novox/mesh-delivery@2b801f5bd49a— merged since 2026-10-28T10:34:54ZSource — source.main moved to novox/mesh-delivery@31bbf207ef. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/1422-trunk-unknown: novox/mesh-catalog@f5d4b2f86e, novox/mesh-delivery@2b801f5bd4Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.