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.
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.
## 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-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.
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…
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.
Deliverynovox/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.
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`.
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.
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
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
4e82a824beDelivery
novox/mesh-catalog@4e82a824be7a— held since 2026-10-25T18:06:42ZHeld 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 fromsource.main, the wants and the haves.Group
fix/steps-bucket-ages: novox/mesh-catalog@4e82a824be, novox/mesh-sdk@518dae5ec9Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.