Build modules' steps live two days and their pause has a state of its own, so the steps bucket no longer fills (2026-10-25) #481

Merged
jschoubben merged 2 commits from fix/steps-bucket-ages into main 2026-10-25 18:06:40 +00:00
Member

Why

KV_mesh-build-go_steps reached its 64 MiB cap: every step is a new key and nothing removes one, so since 18:42 a check's end is refused ('maximum bytes exceeded') and builds stop next. KV_mesh-build-node_steps (17.8 MB) grows the same way.

What

  • mesh-build-go, mesh-build-node, mesh-build-image: state {"name":"steps","ttl-seconds":172800} (2 days) and a new state "pauses" (no age), announced in Kept; the Puller writes and reads its pause there.
  • go.mod pins mesh-sdk v0.1.14-0.20261025175617-518dae5ec9c8 (mesh-sdk fix/steps-bucket-ages).

Order and effect

Merge AFTER the mesh-sdk pull request of the same branch. The controller asserts buckets only at its start: the age and the pauses bucket land at the controller's next start (mesh-controller #465's delivery), and every steps key older than 2 days is dropped at once. Until then the modules pull as not paused. Readers of steps read in-flight steps only (builder Held, watchman, checker, assigner); kept verdicts live in the checker's own bucket.

Tests

Manifest tests updated in place (only steps has an age); unit tests, vet with and without -tags integration, go mod verify pass in all three. No tests added. Recovery mode: no try; its own check cannot pass while the bucket is full; merge by hand.

Issue: issue 1945 note 37.

Reviewed-by: reviewer-puller@shanks at 4e82a824be

## Why KV_mesh-build-go_steps reached its 64 MiB cap: every step is a new key and nothing removes one, so since 18:42 a check's end is refused ('maximum bytes exceeded') and builds stop next. KV_mesh-build-node_steps (17.8 MB) grows the same way. ## What - mesh-build-go, mesh-build-node, mesh-build-image: state {"name":"steps","ttl-seconds":172800} (2 days) and a new state "pauses" (no age), announced in Kept; the Puller writes and reads its pause there. - go.mod pins mesh-sdk v0.1.14-0.20261025175617-518dae5ec9c8 (mesh-sdk fix/steps-bucket-ages). ## Order and effect Merge AFTER the mesh-sdk pull request of the same branch. The controller asserts buckets only at its start: the age and the pauses bucket land at the controller's next start (mesh-controller #465's delivery), and every steps key older than 2 days is dropped at once. Until then the modules pull as not paused. Readers of steps read in-flight steps only (builder Held, watchman, checker, assigner); kept verdicts live in the checker's own bucket. ## Tests Manifest tests updated in place (only steps has an age); unit tests, vet with and without -tags integration, go mod verify pass in all three. No tests added. Recovery mode: no try; its own check cannot pass while the bucket is full; merge by hand. Issue: issue 1945 note 37. Reviewed-by: reviewer-puller@shanks at 4e82a824be7a2344e876502b3514096c8dfddde4
mesh-tools added 2 commits 2026-10-25 17:59:23 +00:00
mesh-build-go's steps bucket filled to the bus's 64 MiB cap (27,370 keys, none ever removed) and
refused the end of a passed check, so the check read failed; mesh-build-node's (17.8 MB) and
mesh-build-image's grow the same way. A step's key is per step: its reader reads its end within
the step's bound, and a check's verdict is kept by the checker, so two days is ample. The node's
pause key lived in the same bucket and would have ended by itself; it moves to a pauses state
without an age (mesh-sdk fix/steps-bucket-ages, Puller.PausePut). No node is paused today, so
nothing is carried over.
Announce the pauses state in the three build modules, and pin mesh-sdk 518dae5 (an unreadable pause pulls as not paused)
mesh/delivery-group group fix/steps-bucket-ages held: a member is held: novox/mesh-sdk@518dae5ec9c8 (merged without a passing check: only a person decides what…
mesh/delivery held for a person: merged without a passing check: only a person decides what follows
mesh/check pass 4e82a824be7a on cdbe2945cf6e | unit 1994 run, 2322 kept, 5 skipped | integration 2016 run, 2341 kept, 9 skipped | over bound: unit, in…
4e82a824be
Without it in Kept, stdio.KeptState refuses the state before the bus (mesh-sdk go/keeps.go
refusedUnannounced), so the pause could be neither read nor written.
Author
Member

Delivery novox/mesh-catalog@4e82a824be7a — held since 2026-10-25T18:06:42Z

Held for a person: merged without a passing check: only a person decides what follows — the merge reached the trunk without a passing check.

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

Group fix/steps-bucket-ages: novox/mesh-catalog@4e82a824be, novox/mesh-sdk@518dae5ec9

  • composed together: fail — the checker's verdict at the members' heads (3636b5efb454): shanks

Transitions

  • 2026-10-25 17:59 (new) → proposed (announced): novox/mesh-catalog#481's head announced
  • 2026-10-25 18:01 proposed → rejected (refused): a verdict names this commit and the trunk's head as its trunk commit, and the gate failed or could not run, or the repository's own check failed
  • 2026-10-25 18:06 rejected → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides what follows

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-catalog@4e82a824be7a` — **held** since 2026-10-25T18:06:42Z Held for a person: merged without a passing check: only a person decides what follows — the merge reached the trunk without a passing check. **Source** — source.main moved to novox/mesh-catalog@cdbe2945cf6e. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves. **Group** `fix/steps-bucket-ages`: novox/mesh-catalog@4e82a824be7a, novox/mesh-sdk@518dae5ec9c8 - composed together: fail — the checker's verdict at the members' heads (3636b5efb454): shanks **Transitions** - 2026-10-25 17:59 (new) → proposed (announced): novox/mesh-catalog#481's head announced - 2026-10-25 18:01 proposed → rejected (refused): a verdict names this commit and the trunk's head as its trunk commit, and the gate failed or could not run, or the repository's own check failed - 2026-10-25 18:06 rejected → held (merged-unchecked): merged without a passing check — a verdict known with it is taken first: only a person decides what follows 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 merged commit cdbe2945cf into main 2026-10-25 18:06:40 +00:00
jschoubben deleted branch fix/steps-bucket-ages 2026-10-25 18:06:40 +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#481