The indexer and the checker know a Go module the trunk holds a record of (issue 1966, bootstrap recovery) #173

Merged
mesh-tools merged 2 commits from fix/1966-known-packages-from-trunk into main 2026-11-08 00:25:49 +00:00
Member

Recovery fix (mesh instruction recovery-fixes-merge-and-tell), on the operator's yes (2026-11-08 ~01:10, "option 1, as a recovery fix, but only if you're confident"); merged by lead-47@shanks, the operator told at the terminal.

Cause. The judge's known packages were only the packages state's series keys, written for package artifacts a manifest declares. No build module builds a Go package artifact yet, so the Go modules other modules name in packages have no series. Live, 2026-11-08 01:20: indexer_judge refuses mesh-build-go, mesh-delivery-gate, nats and mesh-vault only for such names (mesh-delivery-builder/builds, ssh-client/sshkeys, forge-bridge/forgemsg, mesh-grants/busgrants, mesh-grants/grantsstate); grants counts 15 manifests missing and its full pass would drop 20 users' permissions (held by its seal guard).

Fix. The indexer's knownPackages and the checker's PackageNames also count the module path of every per-module record the packages state holds from the trunk; never a package inside a module (design 32; review round 1). Live check: none of the 7 names has a series, each is the module path of its own record.

Quick vs thorough. Thorough is building Go package artifacts so they get series (the registry milestone's package path); this is the recovery until then, and goes back to series-only when it lands.

Tests. control_records_test.go "packages per series": a record's module is known, a package inside it, a builder name and an unknown name are not (fails without the change); checker judge_test.go. go vet (both tags) and go test pass in the indexer and the checker.

Undo. Revert this merge commit.

Reviewed-by: mesh-code-reviewer@shanks at 2e9f23f348

https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5

Recovery fix (mesh instruction recovery-fixes-merge-and-tell), on the operator's yes (2026-11-08 ~01:10, "option 1, as a recovery fix, but only if you're confident"); merged by lead-47@shanks, the operator told at the terminal. **Cause.** The judge's known packages were only the packages state's series keys, written for package artifacts a manifest declares. No build module builds a Go package artifact yet, so the Go modules other modules name in `packages` have no series. Live, 2026-11-08 01:20: `indexer_judge` refuses mesh-build-go, mesh-delivery-gate, nats and mesh-vault only for such names (mesh-delivery-builder/builds, ssh-client/sshkeys, forge-bridge/forgemsg, mesh-grants/busgrants, mesh-grants/grantsstate); grants counts 15 manifests missing and its full pass would drop 20 users' permissions (held by its seal guard). **Fix.** The indexer's knownPackages and the checker's PackageNames also count the module path of every per-module record the packages state holds from the trunk; never a package inside a module (design 32; review round 1). Live check: none of the 7 names has a series, each is the module path of its own record. **Quick vs thorough.** Thorough is building Go package artifacts so they get series (the registry milestone's package path); this is the recovery until then, and goes back to series-only when it lands. **Tests.** control_records_test.go "packages per series": a record's module is known, a package inside it, a builder name and an unknown name are not (fails without the change); checker judge_test.go. go vet (both tags) and go test pass in the indexer and the checker. **Undo.** Revert this merge commit. Reviewed-by: mesh-code-reviewer@shanks at 2e9f23f348282f822cd08920e99f01f3174811fe https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
mesh-tools added 2 commits 2026-11-08 00:25:44 +00:00
The indexer's judge refused manifests whose `packages` name a Go package that no
manifest declares as a package artifact: such a package has no series key, and
knownPackages took series keys only, though each module the trunk published has
a per-module record in the packages state naming its Go module and packages.
knownPackages (and the checker's PackageNames) now also count each record's
module and packages[].package; an unreadable state still judges no name.

Quick vs thorough: this is the quick fix, the smallest change that lets the
trunk's own records name what the manifests name. The thorough fix is that a
build module builds Go package artifacts, so every Go package gets a series
(the registry milestone); then the records stop being a source of names. Done
now because the 15 refused manifests hold the bootstrap of the registry delivery.
Round 1: known by the module path alone, never a package inside it
mesh/delivery merged: source.main moved to novox/mesh-delivery@68581bed7e36
mesh/check failed: mesh-build-go: the change's manifests cannot be judged: the seat list is not read (the seat list is … | 2e9f23f34828 on 68581bed7e36
2e9f23f348
The review of 0f5c186b: counting each record's packages made 94 sub-package
paths, commands among them, known names, which design 32 forbids; the seven
names refused live are each their record's module (issue 1966).

Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
mesh-tools merged commit 68581bed7e into main 2026-11-08 00:25:49 +00:00
mesh-tools deleted branch fix/1966-known-packages-from-trunk 2026-11-08 00:25:49 +00:00
Author
Member

Delivery novox/mesh-delivery@2e9f23f34828 — merged since 2026-11-08T00:25:51Z

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

Transitions

  • 2026-11-08 00:25 (new) → proposed (announced): novox/mesh-delivery#173's head announced
  • 2026-11-08 00:25 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-08 00:25 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@2e9f23f34828` — **merged** since 2026-11-08T00:25:51Z **Source** — source.main moved to novox/mesh-delivery@68581bed7e36. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-11-08 00:25 (new) → proposed (announced): novox/mesh-delivery#173's head announced - 2026-11-08 00:25 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-08 00:25 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`.
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#173