The indexer writes no fingerprint from a packages state it did not read, and computes fingerprints again by hand (issue 1966, recovery) #191

Merged
mesh-tools merged 5 commits from fix/1966-indexer-packages-read into main 2026-11-09 14:48:20 +00:00
Member

Issue 1966 (notes 132-133). Recovery fix (recovery-fixes-merge-and-tell): the gate has no recovery merge yet, so this waits the operator's Approve.

What broke. The indexer 586b6fac started on novox at 14:58 CET while JetStream was down; its read of the published packages answered nothing, and formOf took the version line for ~130 Go modules, over go.sum's older mesh-sdk (node-tools ca80811d -> 1d2642e5). Builds then fail on symbols merged today. The import-form shortcut kept those fingerprints through any later recompute.

The change.

  • A pass whose published-packages read fails, or answers nothing while a held module carries an import form, writes no fingerprint and leaves the merge for redelivery (publishedRead, publishedForPass, recomputeLocked).
  • The version line clears kept.ImportForm (form.go).
  • indexer_fingerprints_again {module|all, why}: clears the import form and runs a merge's recompute (modules, candidates, pending); acts before it records the hand act, and says a failed record (mesh-hand-acts answers nothing today).
  • The assigner's integration test TestAProposalIsAnsweredApprovedAndWritten answers the indexer first-view asks from the indexer's buckets: its controller stand-in answered {ok:true} since 0c4660ee, so it failed on main.

Quick vs thorough. Quick: clear the import form on the version line. Thorough (chosen): the failed read writes nothing (as mesh-grants' grantsReadFailed) and a hand tool recovers what is stuck; the kind can recur at every bus restart.

Tests. No new test function (budget): subtests of TestImportsReportedMoveTheFingerprintOnlyWithAnImportedPackage and a case of TestTakeIn; each fails without its part. go vet (both tags) and go test pass in mesh-delivery-indexer and mesh-delivery-assigner; manifest judged locally, 0 problems before and after.

Expected check. The composition step will fail on the checker's 256 KB compositions cap (lead-47's group #189/#640 fixes it and waits on this one).

After merge. indexer_fingerprints_again {all}; then node-tools ca80811d and mesh-grants ff686916 reach novox, the hand placements end; lead-47 rechecks #189/#640; #190 rebases.

Undo. Revert the merge commit.

Reviewed-by: mesh-code-reviewer@shanks at 3a63813b3d

https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i

Issue 1966 (notes 132-133). Recovery fix (recovery-fixes-merge-and-tell): the gate has no recovery merge yet, so this waits the operator's Approve. **What broke.** The indexer 586b6fac started on novox at 14:58 CET while JetStream was down; its read of the published packages answered nothing, and formOf took the version line for ~130 Go modules, over go.sum's older mesh-sdk (node-tools ca80811d -> 1d2642e5). Builds then fail on symbols merged today. The import-form shortcut kept those fingerprints through any later recompute. **The change.** - A pass whose published-packages read fails, or answers nothing while a held module carries an import form, writes no fingerprint and leaves the merge for redelivery (publishedRead, publishedForPass, recomputeLocked). - The version line clears kept.ImportForm (form.go). - `indexer_fingerprints_again {module|all, why}`: clears the import form and runs a merge's recompute (modules, candidates, pending); acts before it records the hand act, and says a failed record (mesh-hand-acts answers nothing today). - The assigner's integration test TestAProposalIsAnsweredApprovedAndWritten answers the indexer first-view asks from the indexer's buckets: its controller stand-in answered {ok:true} since 0c4660ee, so it failed on main. **Quick vs thorough.** Quick: clear the import form on the version line. Thorough (chosen): the failed read writes nothing (as mesh-grants' grantsReadFailed) and a hand tool recovers what is stuck; the kind can recur at every bus restart. **Tests.** No new test function (budget): subtests of TestImportsReportedMoveTheFingerprintOnlyWithAnImportedPackage and a case of TestTakeIn; each fails without its part. go vet (both tags) and go test pass in mesh-delivery-indexer and mesh-delivery-assigner; manifest judged locally, 0 problems before and after. **Expected check.** The composition step will fail on the checker's 256 KB compositions cap (lead-47's group #189/#640 fixes it and waits on this one). **After merge.** `indexer_fingerprints_again {all}`; then node-tools ca80811d and mesh-grants ff686916 reach novox, the hand placements end; lead-47 rechecks #189/#640; #190 rebases. **Undo.** Revert the merge commit. Reviewed-by: mesh-code-reviewer@shanks at 3a63813b3d7595e78f3af647af4aa629f47f56a6 https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
mesh-tools added 3 commits 2026-11-09 14:26:23 +00:00
The verbs ask mesh-delivery-indexer.modules and .manifests through the tool runner
since the asks moved off the indexer's state, but the test's stand-in answered every
ask {ok:true}, which is no answer: propose failed on main with 'unexpected end of
JSON input'.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
An indexer that started while the bus's storage was down read no published package,
took every import for unpublished and wrote the version line over ~130 modules'
fingerprints, which a later pass kept through the build's shortcut. A failed or empty
read of the packages state, where held modules were computed from published ones,
now fails the pass and says why; a version line clears the import form it was
computed beside; indexer_fingerprints_again computes the import form again by hand,
acting first and recording the hand act after, with a bound.

Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Fingerprints computed again by hand run a merge's recompute; the tests join existing ones (issue 1966, review round 1)
mesh/delivery closed: a newer head of the same pull request
mesh/check failed (6): integration: mesh-delivery-indexer/cmd/mesh-delivery-indexer.TestIndexerWritesModule…; and 5 more | 3a63813b3d75 on fb69c8dee691
3a63813b3d
Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i
Author
Member

Delivery novox/mesh-delivery@efdfe1f75518 — merged since 2026-11-09T14:48:22Z

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

Transitions

  • 2026-11-09 14:45 (new) → proposed (announced): novox/mesh-delivery#191's head announced
  • 2026-11-09 14:45 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-09 14:48 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@efdfe1f75518` — **merged** since 2026-11-09T14:48:22Z **Source** — source.main moved to novox/mesh-delivery@a072d60cae1d. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Transitions** - 2026-11-09 14:45 (new) → proposed (announced): novox/mesh-delivery#191's head announced - 2026-11-09 14:45 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-09 14:48 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`.
jschoubben added 2 commits 2026-11-09 14:45:09 +00:00
Author
Member

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: its head 3a63813b3d is no longer the pull request's head, or the pull request closed. Nothing is merged on it. The operator is asked again once the checks pass at the new head.

mesh-delivery: the operator's Approve of this pull request's merge into main is ended: its head 3a63813b3d75 is no longer the pull request's head, or the pull request closed. Nothing is merged on it. The operator is asked again once the checks pass at the new head.
mesh-tools merged commit a072d60cae into main 2026-11-09 14:48:20 +00:00
mesh-tools deleted branch fix/1966-indexer-packages-read 2026-11-09 14:48:20 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-delivery#191