Skip to content

Let a coding run blocked only by the sandbox go on to the Lab's checks (#43, slice 2) #402

Closed

Description

@DanielNetzer

Second slice of #43: a coding run blocked only by the sandbox goes on to the Lab's checks instead of stopping the Molecule.

Problem

When a sandboxed harness finishes its edits but its own verification is denied by the sandbox (a cache it can't write, ps, a local socket), it can only report blocked. The Molecule then stops before the Lab's independent checks, which run outside the harness sandbox and would usually pass. --continuation checks-only is refused too, because it needs a completed coding outcome. The operator has to retire the Molecule and run everything again. Seen with Codex on forgecell-trial Issue #3 (mol-3-9fd6dbd16593acd6266fa447).

Decisions

  1. New coding outcome environment-blocked. It is added to the coding outcome schema next to completed, blocked, scope-change and no-change. A harness reports it only when the in-scope edits are complete and the only thing that failed was its own verification, because the sandbox denied a resource outside the workspace. reason must name the denied resource and operation, for example go test: open ~/Library/Caches/go-build/...: operation not permitted. paths must be empty.
  2. The coding instruction says when to use it, in the calibrated tone of the existing rules. Use environment-blocked when the edits are done and verification was denied only by the sandbox. Use blocked when the work itself can't be finished. Never retry outside the sandbox or ask for wider permissions.
  3. The Lab treats it like completed for one thing only: going on to independent checks. The checks run, and the gate and review run as for a completed outcome. The ledger, the gate summary and the delivery PR body mark the attempt as environment-blocked and quote the denial, so a reviewer sees that the harness didn't verify its own work. Nothing else treats it as success: no automatic retry, and no change to the scope checks.
  4. --continuation checks-only accepts it as it accepts completed.
  5. Protocol bump. The outcome schema and the coding instruction are part of the adapter contract, so bump AdapterProtocolVersion by one from whatever main has when this is planned, and pin the new digest. Earlier pins keep their values.
  6. Out of scope: detecting denials automatically from harness output. The harness declares it, and the Lab's checks are the real verification.

Acceptance

  • DecodeCodingOutcome accepts environment-blocked with a non-empty reason and empty paths, and rejects it with paths.
  • A Molecule whose coding attempt reports environment-blocked goes on to run the approved checks. When they pass, the Molecule is waiting for review, like a completed attempt, and the ledger and gate summary show the denial.
  • blocked, unknown and scope-change behave exactly as today.
  • --continuation checks-only works after an environment-blocked attempt.
  • The delivery PR body states that the harness's own verification was blocked by the sandbox and quotes the reason.
  • The pinned contract digest moves to the new protocol version.

Activity

  1. added
    enhancementNew feature or request
    Next improvementCapabilities, composition, evidence and usability after the reviewed-PR MVP.
    on Nov 7, 2026
  2. DanielNetzer commented on Nov 8, 2026

    @DanielNetzer
    OwnerAuthor

    Fixed in #405.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Next improvementCapabilities, composition, evidence and usability after the reviewed-PR MVP.enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions