Skip to content

feat(core): #599 Phase 1(a) — env_provision argv/resolution layer (paid market delivery) - #638

Merged
orveth merged 1 commit into
mainfrom
market/599-phase1a-paid-delivery
Aug 10, 2026
Merged

feat(core): #599 Phase 1(a) — env_provision argv/resolution layer (paid market delivery)#638
orveth merged 1 commit into
mainfrom
market/599-phase1a-paid-delivery

Conversation

@orveth

@orveth orveth commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

This is a paid market delivery. It implements Phase 1(a) of #599 and was produced by a seller seat against a real-money job, not written by the requesting team.

The quality call belongs to the merge gate. What follows is an execution grade — evidence that the paid work was performed — and it deliberately gates nothing. The award was the payment decision and settlement completed before this PR existed.

What it delivers

New crates/maxplayer-core/src/env_provision.rs, registered ungated in lib.rs: EnvBackend resolution from a parsed checks declaration, the EnvRunner argv-prefix transform for the nix and container backends, both postures, the launcher-outermost compose rule, and the EnvProvisionError failure classes. Pure argv and resolution only — no process spawning, no seller integration, no schema, no doctor, no Dockerfile.

2 files, 282 insertions, 0 deletions. Cargo.toml and Cargo.lock are untouched: no new dependencies.

The module is deliberately ungated and does not reference seller_exec::SandboxPolicy, which is wallet-gated. That is why compose takes the launcher wrapper as an injected function rather than the concrete type: an ungated module's tests run in all three maxplayer-core CI test jobs, a wallet-gated one runs in exactly one of them.

Head vs the graded object

Head 777cc321945f65611ea7cd89207870b2cc09cb1b is the graded delivery 87b270010ea798d70c681b8fdc4c87d5095e31b0 minus exactly one path: MAXPLAYER_EXECUTION_SENTINEL at the tree root. git diff-tree -r --name-status 87b27001 777cc321 is one row, D MAXPLAYER_EXECUTION_SENTINEL; every other path is byte-identical, cross-footed by recursive path counts 218 → 217. The graded object is retained at refs/graded/599-phase1a-delivery, so the graded figures — 3 files, 286 insertions — stay checkable.

That file is delivery-transport metadata, not contribution content: the seller writes and stages it so pay authorization can read execution proof out of the delivered tree, and docs/protocol-v1.md §20 reserves the path. Subtracting it before merge is the #632/#633/#635 precedent, and #636 tracks making the rule self-enforcing.

Independent verification

  • Green on its own tests: cargo test -p maxplayer-core --locked env_provision6 passed, 0 failed, real compile observed.
  • Lineage: parent is exactly cdfa276, one commit, descendant confirmed with merge-base --is-ancestor.
  • 4 of 6 pre-registered acceptance items are red-proven. Each delivered test was re-run against a foil built before the job existed, and each failure was confirmed to be a named assertion read from the panic text — never an exit code, never a compile error. Item 5 (exhaustive-match coverage) is a compile-time property with no behaviour to sabotage, so it is graded by inspection: zero wildcard match arms in the module, both EnvPosture variants explicit, all three error variants covered.
  • The pinned-image test uses @sha256:not-revalidated — deliberately not a valid digest. That fixture choice is what proves resolve_backend does not re-validate the digest form, which the contract forbids because parse_declaration already owns that rule.

Grade artifact, including what is NOT graded: share/mobee/599-phase1a-GRADE.md.

One test is tautological, and the cause is ours

provisioned_env_prefix_comes_from_runner_for_the_same_posture builds ProvisionedEnv from posture_prefix.clone() and then asserts the field equals posture_prefix. That compares a value to a clone of itself: it cannot fail for any implementation.

This traces to a defect in our acceptance specification, not to the delivery. The item asked for a property of whatever produces a ProvisionedEnv, in a job whose scope excludes the only producer — provision() is Phase 1(b) and is correctly absent here. The seat satisfied the item's literal words the only way its scope allowed. The item has been inherited by Phase 1(b)'s pre-registered table, where the producer exists and the property is red-provable.

Assembly deliberately did not touch it — the only transform applied to this branch is the sentinel strip. Whether the test rides as-is, gets rewritten, or waits for 1(b) is the merge gate's call.

One thing worth fixing upstream

The delivered commit subject is maxplayer delivery: **Base:** \cdfa276…`.— the task text's first line, verbatim, markdown and all.delivery_messagetakes the first non-empty line of the task, and a single-commit PR takes its squash subject from the commit. **Please set the squash subject from this PR's title**, ormain` gets markdown boilerplate. #637 tracks the generation-site fix; the task-file format that fed it is ours to fix on the next job.

Merge

pr-feedback holds merge authority — please do not self-merge. And do not merge on the strength of the execution grade alone: it certifies that the machine did the paid job, which is a different question from whether this should ship.

🤖 Generated with Claude Code

@vercel

vercel Bot commented Aug 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
mobee Ready Ready Preview Aug 10, 2026 9:11am

Request Review

@orveth
orveth merged commit bbda8ec into main Aug 10, 2026
6 checks passed
@orveth
orveth deleted the market/599-phase1a-paid-delivery branch August 10, 2026 09:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant