Give the forge bridge a merge commit's trees in one call, and each open pull request's head branch (design 47 R3c, issue 1234) #374

Merged
mesh-tools merged 2 commits from feat/delivery-parts into main 2026-10-19 18:22:10 +00:00
Member

Design 47 milestone R3c (ADR 0437), issue 1234; one delivery group with mesh-delivery's feat/delivery-parts, this member first.

  • New tool gitea_commit_trees (owner, repo, full sha): the commit's root tree and the tree of every directory holding a module.json, read page by page from the forge's recursive tree listing; a listing still cut fails loudly. The root tree is computed from the root's own entries as git hashes a tree, because Gitea's API names the commit's sha where the root tree's should be (1234/AC6, proven against git: mesh-delivery 7f61817 → 659bcaaa…).
  • gitea_open_pulls entries gain head (the branch) beside head_sha; today's mesh-delivery decodes them with json.Unmarshal and ignores the new key (modules/mesh-delivery/cmd/mesh-delivery/ports.go:397-411).
  • guard.ts's allowed query keys gain recursive and per_page (read flags; gitea_api may send them too).

Tests: 1234/AC1-AC6 in modules/gitea/test/commit-trees.test.ts, each failed first on an assertion. Merge check passed 15:26 UTC (3m15s, 163 of 163). Its delivery rebuilds the gitea module on novox; the tool is read-only.

Opened at once, its merge check the one run (the operator, 2026-10-19); the review of both members ran beside the checks (round 1: this member approved; mesh-delivery's teller test fixed in round 1).

Reviewed-by: review-r3c@shanks at 75957fc3c0

Design 47 milestone R3c (ADR 0437), issue 1234; one delivery group with mesh-delivery's feat/delivery-parts, this member first. - New tool `gitea_commit_trees` (owner, repo, full sha): the commit's root tree and the tree of every directory holding a module.json, read page by page from the forge's recursive tree listing; a listing still cut fails loudly. The root tree is computed from the root's own entries as git hashes a tree, because Gitea's API names the commit's sha where the root tree's should be (1234/AC6, proven against git: mesh-delivery 7f61817 → 659bcaaa…). - `gitea_open_pulls` entries gain `head` (the branch) beside `head_sha`; today's mesh-delivery decodes them with json.Unmarshal and ignores the new key (modules/mesh-delivery/cmd/mesh-delivery/ports.go:397-411). - guard.ts's allowed query keys gain `recursive` and `per_page` (read flags; gitea_api may send them too). Tests: 1234/AC1-AC6 in modules/gitea/test/commit-trees.test.ts, each failed first on an assertion. Merge check passed 15:26 UTC (3m15s, 163 of 163). Its delivery rebuilds the gitea module on novox; the tool is read-only. Opened at once, its merge check the one run (the operator, 2026-10-19); the review of both members ran beside the checks (round 1: this member approved; mesh-delivery's teller test fixed in round 1). Reviewed-by: review-r3c@shanks at 75957fc3c0068ff81f081aa5498200421ba7af1a
mesh-tools added 2 commits 2026-10-19 15:23:09 +00:00
gitea_commit_trees reads the commit's recursive tree listing and answers the root tree and the
tree of every directory holding a module.json; a cut listing fails loudly. gitea_open_pulls
entries gain head. The query keys recursive and per_page join the allow-list, read flags only.
mesh-delivery decodes open pulls with json.Unmarshal into a struct (cmd/mesh-delivery/ports.go:405-410),
which ignores the added key.
Hash the root tree from the root's entries, since the forge names the commit (issue 1234)
mesh/repo-check head 75957fc3c006 merged into trunk e8c3448797c7 — pass: its merge-check.sh passed, each part in its toolchain: merge-check.sh (go), merge-…
mesh/merge-gate head 75957fc3c006 merged into trunk e8c3448797c7 — pass: group feat/delivery-parts composed: every machine composes with the change as it d…
mesh/delivery covered after its failure: a later walk that contains it was delivered: plan-1792433168676870614 (novox/mesh-catalog at eda55ceb into main,…
mesh/delivery-group group feat/delivery-parts delivered: every member is delivered
75957fc3c0
The listing's top sha is the commit's, not the root tree's (seen live, novox/mesh-delivery at 7f61817), so
gitea_commit_trees now computes the root tree as git does, from the entries without a slash. The query keys
recursive and per_page stay in the allow-list: read flags only.
Author
Member

Delivery novox/mesh-catalog@75957fc3c006 — failed since 2026-10-19T18:26:26Z

Covered: covered after its failure: a later walk that contains it was delivered: plan-1792433168676870614 (novox/mesh-catalog at eda55ceb into main, done, contains its merge eda55ceb)

Delivery plan — builds gitea → novox; no bus step

  • tier 0: gitea
  • novox: receives gitea
  • gitea provides npm-package-registry, git, gitea-read, forge-account: its consumers are sent again after it
  • gitea keeps data (ADR 0233): what it holds is backed up before it moves

Group feat/delivery-parts: novox/mesh-catalog@75957fc3c0, novox/mesh-delivery@24177aa654

  • composed together: pass — every machine composes with the change as it did without (4 of 4 compose)

Machines

  • gitea on every machine running it: sent
  • mesh-delivery-view on every machine running it: sent
  • mesh-delivery-watchman on every machine running it: sent

Transitions

  • 2026-10-19 15:23 (new) → proposed (announced): novox/mesh-catalog#374's head announced
  • 2026-10-19 15:26 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-19 15:26 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-19 18:17 ready → proposed (recheck): its mesh/repo-check status is missing on the forge though it passed at 15:26 UTC (issue 1276), and the group's composed check now running sets only the gate; without its own check asked again its merge is refused again (issue 1275)
  • 2026-10-19 18:19 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit
  • 2026-10-19 18:19 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail
  • 2026-10-19 18:23 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move
  • 2026-10-19 18:23 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit
  • 2026-10-19 18:26 delivering → failed (failed): its walk failed, carrying its own commit: a gate on a first machine (what it carried put back), a build, a machine

The commit's note under refs/notes/mesh-plan keeps every transition: git log --notes=mesh-plan.

<!-- mesh-delivery:view --> **Delivery** `novox/mesh-catalog@75957fc3c006` — **failed** since 2026-10-19T18:26:26Z **Covered**: covered after its failure: a later walk that contains it was delivered: plan-1792433168676870614 (novox/mesh-catalog at eda55ceb into main, done, contains its merge eda55ceb) **Delivery plan** — builds gitea → novox; no bus step - tier 0: gitea - novox: receives gitea - gitea provides npm-package-registry, git, gitea-read, forge-account: its consumers are sent again after it - gitea keeps data (ADR 0233): what it holds is backed up before it moves **Group** `feat/delivery-parts`: novox/mesh-catalog@75957fc3c006, novox/mesh-delivery@24177aa654ab - composed together: pass — every machine composes with the change as it did without (4 of 4 compose) **Machines** - gitea on every machine running it: sent - mesh-delivery-view on every machine running it: sent - mesh-delivery-watchman on every machine running it: sent **Transitions** - 2026-10-19 15:23 (new) → proposed (announced): novox/mesh-catalog#374's head announced - 2026-10-19 15:26 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-19 15:26 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-19 18:17 ready → proposed (recheck): its mesh/repo-check status is missing on the forge though it passed at 15:26 UTC (issue 1276), and the group's composed check now running sets only the gate; without its own check asked again its merge is refused again (issue 1275) - 2026-10-19 18:19 proposed → checked (checked): a verdict names this commit and the trunk's head as its trunk commit - 2026-10-19 18:19 checked → ready (accepted): the gate passed or warned, and the repository's own check did not fail - 2026-10-19 18:23 ready → published (merged): on the trunk its modules follow: merged there, and its walk opened — or nothing for a walk to move - 2026-10-19 18:23 published → delivering (go): its walk started: let go by this owner in its group's order, by a person, or on the controller's own path — not a failed walk that carried a later commit for it, after which it waits for a walk of its own commit - 2026-10-19 18:26 delivering → failed (failed): its walk failed, carrying its own commit: a gate on a first machine (what it carried put back), a build, a machine The commit's note under `refs/notes/mesh-plan` keeps every transition: `git log --notes=mesh-plan`.
mesh-tools merged commit eda55ceb9e into main 2026-10-19 18:22:10 +00:00
mesh-tools deleted branch feat/delivery-parts 2026-10-19 18:22:10 +00:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-catalog#374