Issue 1966 note 130. One delivery group with mesh-catalog's branch of the same name.
Every check that composes ace or novox fails today in the checker: "the value for /ace in mesh-delivery-checker_compositions is 300127 bytes, over the 262144 bytes the bucket takes" (novox 386277), and novox's compose ask is 1,228,218 bytes raw against max_payload 1,048,576 (mesh-host #219's check, 12:13:53 UTC).
internal/check/requests.go: a request is kept as gzip pieces of at most 128 KiB under pieces/<digest>/<i>, and a version-2 pointer under <check>/<node> written after its pieces; reading follows the pointer and verifies the digest; another version is refused by name; listing skips piece keys.
internal/check/engines.go and sdk/buildstep/ask.go: the compose ask carries the request packed as gzip+base64:<...> (novox ~386 KB); RequestBytes reads both forms.
contracts/parts/build-step.json: the compose request names both forms; node-build-go, node-build-node, node-build-image regenerated (seatgen -check passes).
ADR 0619: the checker is a foundation part, so pieces in its state, not a new-form object store.
Quick fix, chosen as the recovery: pieces and a packed ask.
Thorough fix, in milestone G of design 47 (prepare finding F18): the request named by digest and served on a build-seat verb, as RunInput does; the request read tool answered in pages.
Delivery: rebuilds mesh-delivery-assigner, -builder, -checker, -indexer, -view, -watchman and mesh-grants (they import sdk/buildstep or the build-seat contracts); rebased on #188 so mesh-grants keeps its requires-bound state. An old holder of node-build-go refuses a packed ask loudly until it runs mesh-catalog's build of this group.
This group's own check will fail on ace and novox with the same words: the running checker keeps each request before it asks (ADR 0656 §5 not built). Its merge needs the operator's Approve of that red check.
Tests: rows in existing tests, each failing against the old code (engines_test.go "went whole"; main_test.go 819 KB request through a store refusing values over 262144; version-1 refusal; listing without pieces). vet, vet -tags integration and tests pass in mesh-delivery-checker, sdk, mesh-grants and the three build seats' contracts, with mesh-sdk at 01774321.
A recovery fix (recovery-fixes-merge-and-tell): small, undone by one revert. The delivery seat serves no recovery merge, so it takes the operator's Approve.
Reviewed-by: mesh-code-reviewer for lead-47@shanks at 37258e6bec
Issue 1966 note 130. One delivery group with mesh-catalog's branch of the same name.
Every check that composes ace or novox fails today in the checker: "the value for <check>/ace in mesh-delivery-checker_compositions is 300127 bytes, over the 262144 bytes the bucket takes" (novox 386277), and novox's compose ask is 1,228,218 bytes raw against max_payload 1,048,576 (mesh-host #219's check, 12:13:53 UTC).
- `internal/check/requests.go`: a request is kept as gzip pieces of at most 128 KiB under `pieces/<digest>/<i>`, and a version-2 pointer under `<check>/<node>` written after its pieces; reading follows the pointer and verifies the digest; another version is refused by name; listing skips piece keys.
- `internal/check/engines.go` and `sdk/buildstep/ask.go`: the compose ask carries the request packed as `gzip+base64:<...>` (novox ~386 KB); `RequestBytes` reads both forms.
- `contracts/parts/build-step.json`: the compose `request` names both forms; node-build-go, node-build-node, node-build-image regenerated (`seatgen -check` passes).
- ADR 0619: the checker is a foundation part, so pieces in its `state`, not a new-form object store.
- Quick fix, chosen as the recovery: pieces and a packed ask.
- Thorough fix, in milestone G of design 47 (prepare finding F18): the request named by digest and served on a build-seat verb, as RunInput does; the request read tool answered in pages.
Delivery: rebuilds mesh-delivery-assigner, -builder, -checker, -indexer, -view, -watchman and mesh-grants (they import sdk/buildstep or the build-seat contracts); rebased on #188 so mesh-grants keeps its requires-bound state. An old holder of node-build-go refuses a packed ask loudly until it runs mesh-catalog's build of this group.
This group's own check will fail on ace and novox with the same words: the running checker keeps each request before it asks (ADR 0656 §5 not built). Its merge needs the operator's Approve of that red check.
Tests: rows in existing tests, each failing against the old code (engines_test.go "went whole"; main_test.go 819 KB request through a store refusing values over 262144; version-1 refusal; listing without pieces). vet, vet -tags integration and tests pass in mesh-delivery-checker, sdk, mesh-grants and the three build seats' contracts, with mesh-sdk at 01774321.
A recovery fix (recovery-fixes-merge-and-tell): small, undone by one revert. The delivery seat serves no recovery merge, so it takes the operator's Approve.
Reviewed-by: mesh-code-reviewer for lead-47@shanks at 37258e6bec47a20789b51e2d59e8f0a56f3dbf97
https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
Deliverynovox/mesh-delivery@bf7540cd9ec2 — merged since 2026-11-09T16:31:27Z
Source — source.main moved to novox/mesh-delivery@fc21f2d1bd. 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 (ebc9c24a98e4): mesh-delivery-checker
Transitions
2026-11-09 15:42 (new) → proposed (announced): novox/mesh-delivery#189's head announced
2026-11-09 15:42 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 16:31 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@bf7540cd9ec2` — **merged** since 2026-11-09T16:31:27Z
**Source** — source.main moved to novox/mesh-delivery@fc21f2d1bd56. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Group** `fix/1966-checker-compositions-objects`: novox/mesh-catalog@4e2a1a5a1f58, novox/mesh-delivery@bf7540cd9ec2
- composed together: fail — the checker's verdict at the members' heads (ebc9c24a98e4): mesh-delivery-checker
**Transitions**
- 2026-11-09 15:42 (new) → proposed (announced): novox/mesh-delivery#189's head announced
- 2026-11-09 15:42 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 16:31 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: not merged. The merge of this pull request into main at 37258e6bec was declined: the operator, via telegram (user id verified), chose Decline. A new head asks the operator again.
mesh-delivery: **not merged.** The merge of this pull request into main at 37258e6bec47a20789b51e2d59e8f0a56f3dbf97 was declined: the operator, via telegram (user id verified), chose Decline. A new head asks the operator again.
mesh-host #219's check failed: the request kept for g14 was 300127 bytes compressed, over the 262144 the state takes.
The key of the check and node now holds a pointer (digest, size, pieces) and each piece of the gzip bytes is a value of
its own under pieces/<digest>/<i>, at most 128 KiB; checker_composition_requests follows the pointer and checks the digest.
Quick fix: a larger cap or a better compression: still a limit, met again as the mesh grows. Thorough fix (chosen, and
bounded only by the bucket): pieces. Not an object store: the checker is a foundation part, whose data stays in the old
sections (ADR 0619 §2), and the tool runner serves no old-section object read to its tools. No manifest change.
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
A large node's request is 1.2 MB, over the bus's 1 MiB message limit, so the compose ask failed once keeping no longer did.
The checker packs the request (a JSON string "gzip+base64:..." in the part's `any` request, no contract change) and
buildstep.ComposeJob.RequestBytes reads either form. A kept request of another version is refused naming it, and listing
no longer reads pieces. An older mesh-build-go refuses a packed ask loudly (it holds no request object): the check fails
naming it, so the catalog change is delivered with this one as a group.
Quick fix (chosen as the recovery): pack the request, ~290 KB for the largest node. Thorough fix (milestone G): the request
named by digest and served on a seat verb, as RunInput is.
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
The compose job's `request` description now says it is the request object or the JSON string "gzip+base64:" followed by the
base64 of the gzip-compressed object, as ADR 0634 §1 puts a seat's messages in its contract. The field stays `any`;
seatgen regenerated node-build-go, node-build-node and node-build-image (Go and TypeScript), and its -check is clean.
ask.go's comment says the checker packs every request it sends.
Delivery: an old holder of node-build-go refuses the packed ask loudly (it holds no request object) until it runs the new
mesh-build-go; the checker is built by mesh-build-go after it (module graph edge), and every check composing ace or novox
fails today anyway.
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
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.
Issue 1966 note 130. One delivery group with mesh-catalog's branch of the same name.
Every check that composes ace or novox fails today in the checker: "the value for /ace in mesh-delivery-checker_compositions is 300127 bytes, over the 262144 bytes the bucket takes" (novox 386277), and novox's compose ask is 1,228,218 bytes raw against max_payload 1,048,576 (mesh-host #219's check, 12:13:53 UTC).
internal/check/requests.go: a request is kept as gzip pieces of at most 128 KiB underpieces/<digest>/<i>, and a version-2 pointer under<check>/<node>written after its pieces; reading follows the pointer and verifies the digest; another version is refused by name; listing skips piece keys.internal/check/engines.goandsdk/buildstep/ask.go: the compose ask carries the request packed asgzip+base64:<...>(novox ~386 KB);RequestBytesreads both forms.contracts/parts/build-step.json: the composerequestnames both forms; node-build-go, node-build-node, node-build-image regenerated (seatgen -checkpasses).ADR 0619: the checker is a foundation part, so pieces in its
state, not a new-form object store.Quick fix, chosen as the recovery: pieces and a packed ask.
Thorough fix, in milestone G of design 47 (prepare finding F18): the request named by digest and served on a build-seat verb, as RunInput does; the request read tool answered in pages.
Delivery: rebuilds mesh-delivery-assigner, -builder, -checker, -indexer, -view, -watchman and mesh-grants (they import sdk/buildstep or the build-seat contracts); rebased on #188 so mesh-grants keeps its requires-bound state. An old holder of node-build-go refuses a packed ask loudly until it runs mesh-catalog's build of this group.
This group's own check will fail on ace and novox with the same words: the running checker keeps each request before it asks (ADR 0656 §5 not built). Its merge needs the operator's Approve of that red check.
Tests: rows in existing tests, each failing against the old code (engines_test.go "went whole"; main_test.go 819 KB request through a store refusing values over 262144; version-1 refusal; listing without pieces). vet, vet -tags integration and tests pass in mesh-delivery-checker, sdk, mesh-grants and the three build seats' contracts, with mesh-sdk at 01774321.
A recovery fix (recovery-fixes-merge-and-tell): small, undone by one revert. The delivery seat serves no recovery merge, so it takes the operator's Approve.
Reviewed-by: mesh-code-reviewer for lead-47@shanks at
37258e6bechttps://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
Delivery
novox/mesh-delivery@bf7540cd9ec2— merged since 2026-11-09T16:31:27ZSource — source.main moved to novox/mesh-delivery@fc21f2d1bd. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Group
fix/1966-checker-compositions-objects: novox/mesh-catalog@4e2a1a5a1f, novox/mesh-delivery@bf7540cd9eTransitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.mesh-delivery: not merged. The merge of this pull request into main at
37258e6becwas declined: the operator, via telegram (user id verified), chose Decline. A new head asks the operator again.37258e6bectobf7540cd9e