Skip to content

[developer-review-engine-proof-v1] 1 — The packed runtime's public start and resume run this repository's executor, with halt, inspect, resume and cancel proved #1642

Closed

Description

@daniboomerang

Tier: 1
Project: cli
Type: test

Objectives

O1. A conformance test installs the packed Atta runtime, starts a steps-shaped Flow through the public startControlledRun with a caller-supplied node executor, halts it through public run control, reads its checkpoint, continues it through the public resumeControlledRun without re-running a finished step, and cancels a second run through public run control; every one of those calls is a public packed export.
O2. The same Flow run under the built-in executor produces the same lifecycle event kinds in the same order and the same checkpoint transitions as under the caller-supplied executor; the test asserts the two sequences are equal.
O3. An import check in that test refuses any import of the packed runtime that is not a public package export, so the run-control proof cannot pass through an internal path.
O4. The Engine capability matrix and the run-control boundary registry entries no longer describe caller-supplied executor support on public start and resume as missing; they name the new test as the delivered evidence for that boundary.
O5. The new test runs in continuous integration in exactly one shard.
O6. The new test file contains the cutover-gate row id in its full registry form, cutover-gate:gate-16, in the name of the test that proves the public start and resume sequence, so the registry's evidence entry can bind gate 16 to this file.

Documentation

  • apps/cli/specs/dev-review-evaluation-program.md — section 6.17, the run-control boundary's required tasks, grader and rule (O1, O2, O3)
  • apps/cli/specs/dev-review-engine-capability-matrix.md — the consumption-boundary paragraph that records the run-control gap (O4)
  • apps/cli/tests/conformance/packed-runtime-consumer.test.ts — the existing packed-consumer test this one extends in shape (O1)
  • harness/dev-process/engine-runtime/run-process.ts — how this repository already passes its executor to the public start and resume (O1)
  • harness/dev-process/engine-runtime/run-process.test.ts — the existing halt-then-resume test shape on one checkpointer (O1)

Planner's rationale

Boundary — Write the evidence that the packed runtime's public start and resume accept this repository's executor, and correct the documents that still say they do not. It does NOT change any runtime, Flow, action or executor code, and it does NOT re-pack the vendored tarballs. Pinned files: apps/cli/tests/conformance/packed-runtime-public-run-control.test.ts, apps/cli/tests/ci-shards/shard-3.txt, apps/cli/specs/dev-review-engine-capability-matrix.md, apps/cli/tests/eval/registry/modules.json, apps/cli/tests/eval/registry/shards/typed-sources.json. Out: harness/dev-process/engine-runtime/run-process.ts (read only); the CLI library directory is in the Surface only because a repository scanner there imports the pinned spec and registry files, and it is not edited; the vendored Engine tarballs and their digests; the gate-16 row's contract text, which already names its evidence by section and is not edited here.

reader-resolvable-prose: code comments, READMEs and specs carry no Issue or pull-request numbers and no tranche slugs.

doc-claims: every AEG:CLAIM line in a changed file is kept true in the same commit.

Sizing — One verification story: the public start, halt, inspect, resume and cancel work with the caller's executor exactly as with the built-in one. Passes the four too-big tests: one story, one agent can hold it, five pinned files, one failure mode. Size S.

Project(s) + blast radius — Project: cli. Test and documentation only; no shared package source changes, so no consumer needs re-verification.

Dependency rationale — No Depends-on; no Conflicts-with.

Traps to avoid — Do NOT import from dist/ paths or any subpath the package does not export; import only from the package names. Do NOT reuse a checkpointer across the two compared runs; give each run its own, as LangGraph's testing guidance requires. Do NOT spawn a real agent; the executor is a stub that records node ids, so the test runs the same with no Claude or Codex login. Do NOT edit the tarballs or their digests. A new test file must be listed in one apps/cli/tests/ci-shards/shard-N.txt in the same commit.

Suggested agent-class — mid: one test against a documented public API plus three text corrections.

Stop-and-escalate — Stop if the public startControlledRun or resumeControlledRun refuses or ignores the caller-supplied executor in the installed package; paste the failing assertion, because that means the boundary is not delivered and the documents must keep saying so. Stop if the built-in and caller-supplied runs differ in lifecycle events in a way the public types do not explain; paste both sequences.

Docs to keep coherent — apps/cli/specs/dev-review-engine-capability-matrix.md; apps/cli/specs/dev-review-invariants.md (read only: its cutover-gate 16 paragraph states the requirement, not the gap).

Premises

  • harness/dev-process/engine-runtime/run-process.ts contains return await startControlledRun({
  • apps/cli/specs/dev-review-engine-capability-matrix.md contains Public start and resume do
  • apps/cli/tests/eval/registry/modules.json contains Gate-16 completion test: packed-runtime-public-run-control.test.ts
  • apps/cli/tests/eval/registry/shards/typed-sources.json contains is the gate-16 start/resume proof when Atta Engine delivers that public seam
  • apps/cli/tests/ci-shards/shard-3.txt contains tests/conformance/packed-runtime-consumer.test.ts

Surface

in: apps/cli/tests, apps/cli/specs, apps/cli/src/lib
out: harness, processes, apps/log-server, aeg-root

Parts

Part 1 (O1, O3) — The public start, halt, checkpoint read, resume and cancel sequence with a caller-supplied executor, and the public-export import check.
Part 2 (O2) — The comparison of lifecycle events and checkpoint transitions against the built-in executor.
Part 3 (O4) — The capability matrix and both registry entries name the delivered evidence.
Part 4 (O5) — The shard entry.
Part 5 (O6) — The full gate-16 row id in the proving test's name.

Test plan

cd apps/cli && bun test --timeout=30000 tests/conformance/packed-runtime-public-run-control.test.ts → 0 fail; start, halt, resume without replay and cancel pass with the caller's executor; built-in and caller sequences equal; the proving test's name contains `cutover-gate:gate-16`
cd apps/cli && bun test --timeout=30000 tests/conformance/packed-runtime-consumer.test.ts tests/eval/exit-check.test.ts tests/eval/registry.test.ts → 0 fail
cd apps/cli && bun test --timeout=30000 tests/ci-shards.test.ts → 0 fail
bunx turbo run typecheck --affected → exits 0

Stop conditions

  • The public start or resume refuses or ignores the caller-supplied executor in the installed package.
  • The built-in and caller-supplied runs differ in lifecycle events in a way the public types do not explain.

Origin

Principal-directed, 2026-10-25: verify in code whether the Engine run-control boundary is delivered. The packed public start and resume already accept a caller's executor and this repository's Engine runtime passes one; the named evidence test was never written and two documents still record the boundary as missing.

Activity

  1. daniboomerang commented on Oct 25, 2026

    @daniboomerang
    MemberAuthor

    Brief hash: d09349aaa0753fc825f3061a5b259b0c217c1df0002858db3e2dcb4f6b46f4f8
    For: [model] (coding-agent CLI on a dev machine, dispatched locally, unattended)
    Reason: Suggested agent-class — mid: one test against a documented public API plus three text corrections.
    Owner: the Principal
    Goal: The packed runtime's public start and resume run this repository's executor, with halt, inspect, resume and cancel proved
    Project: cli
    Tier: 1

    Closes #1642

    You are the AEG Developer. Run bun apps/cli/src/index.ts doctrine --role developer --print and read its output first. Mandatory.

    Objectives

    O1. A conformance test installs the packed Atta runtime, starts a steps-shaped Flow through the public startControlledRun with a caller-supplied node executor, halts it through public run control, reads its checkpoint, continues it through the public resumeControlledRun without re-running a finished step, and cancels a second run through public run control; every one of those calls is a public packed export.
    O2. The same Flow run under the built-in executor produces the same lifecycle event kinds in the same order and the same checkpoint transitions as under the caller-supplied executor; the test asserts the two sequences are equal.
    O3. An import check in that test refuses any import of the packed runtime that is not a public package export, so the run-control proof cannot pass through an internal path.
    O4. The Engine capability matrix and the run-control boundary registry entries no longer describe caller-supplied executor support on public start and resume as missing; they name the new test as the delivered evidence for that boundary.
    O5. The new test runs in continuous integration in exactly one shard.
    O6. The new test file contains the cutover-gate row id in its full registry form, cutover-gate:gate-16, in the name of the test that proves the public start and resume sequence, so the registry's evidence entry can bind gate 16 to this file.

    Documentation

    • apps/cli/specs/dev-review-evaluation-program.md — section 6.17, the run-control boundary's required tasks, grader and rule (O1, O2, O3)
    • apps/cli/specs/dev-review-engine-capability-matrix.md — the consumption-boundary paragraph that records the run-control gap (O4)
    • apps/cli/tests/conformance/packed-runtime-consumer.test.ts — the existing packed-consumer test this one extends in shape (O1)
    • harness/dev-process/engine-runtime/run-process.ts — how this repository already passes its executor to the public start and resume (O1)
    • harness/dev-process/engine-runtime/run-process.test.ts — the existing halt-then-resume test shape on one checkpointer (O1)

    Premises

    Checked against the code when this task Issue was cut, and again against the default branch at dispatch — facts, not claims.

    • harness/dev-process/engine-runtime/run-process.ts contains return await startControlledRun({
    • apps/cli/specs/dev-review-engine-capability-matrix.md contains Public start and resume do
    • apps/cli/tests/eval/registry/modules.json contains Gate-16 completion test: packed-runtime-public-run-control.test.ts
    • apps/cli/tests/eval/registry/shards/typed-sources.json contains is the gate-16 start/resume proof when Atta Engine delivers that public seam
    • apps/cli/tests/ci-shards/shard-3.txt contains tests/conformance/packed-runtime-consumer.test.ts

    2. Context — read before doing anything

    reader-resolvable-prose: code comments, READMEs and specs carry no Issue or pull-request numbers and no tranche slugs.

    doc-claims: every AEG:CLAIM line in a changed file is kept true in the same commit.

    • Traps to avoid — Do NOT import from dist/ paths or any subpath the package does not export; import only from the package names. Do NOT reuse a checkpointer across the two compared runs; give each run its own, as LangGraph's testing guidance requires. Do NOT spawn a real agent; the executor is a stub that records node ids, so the test runs the same with no Claude or Codex login. Do NOT edit the tarballs or their digests. A new test file must be listed in one apps/cli/tests/ci-shards/shard-N.txt in the same commit.

    3. Technical dependencies

    Dependency rationale — No Depends-on; no Conflicts-with.

    4. Technical surface map

    Create:

    • (none — every surface file already exists)

    Modify:

    • apps/cli/tests
    • apps/cli/specs
    • apps/cli/src/lib

    Out of surface: harness, processes, apps/log-server, aeg-root — a change there, or to any path no Surface in: glob covers, is still published: the review-loop driver records each such path in the pull request body's beyond-Surface block, and the reviewers judge it like any change.

    Premise pins

    Premise:

    • apps/cli/specs/dev-review-engine-capability-matrix.md sha256: 85665fc7b7ab32f721ce1bbfcea7c36f42f37fa16aaa8ade7ba8eba8a0caef02
    • apps/cli/tests/ci-shards/shard-3.txt sha256: e0a0a197a4d5d540b86fb40947e53a04edff0607413e09a3b52ec73a762c9b9d
    • apps/cli/tests/eval/registry/modules.json sha256: ded6c24d0b7470c2726772dce8fe89768e0b013cceea371e97ef30fc823c1fbc
    • apps/cli/tests/eval/registry/shards/typed-sources.json sha256: 15603ab943ea7b7affb02fcfd8973e0c2ba875e40a853ee4ed322aff14de5c74

    5. Pre-flight checks

    Step 0 (mandatory, verbatim):

    bun install --frozen-lockfile --silent
    
    1. Clean status; parent origin/main; branch suffix literal-matches the task id.
    2. Under the review loop (bun apps/cli/src/index.ts task run), the driver has already run the dispatch-readiness gate plus, on this repository toolchain, its own fuller derivation from its own unsandboxed process before dispatching you (re-derived at render time: it was ready), and dispatches you only when that verdict is READY — a NOT READY verdict refuses the turn before it starts, so being dispatched is the verdict: look for no file and run neither script, whose own gh call fails inside your sandbox. Working manually, with no driver behind you, fall back to roles/developer.md's own items 3/5/7 prose — each a complete, hand-run forge check in its own right.

    On any failure: STOP and report.

    6. Numbered parts — publish once with publish_changes when every Part is done, then open_pull_request

    1. Part 1 (O1, O3): The public start, halt, checkpoint read, resume and cancel sequence with a caller-supplied executor, and the public-export import check.

      Files (touches @attalabs/vinaya):

      • apps/cli/specs/dev-review-engine-capability-matrix.md
      • apps/cli/tests/ci-shards/shard-3.txt
      • apps/cli/tests/eval/registry/modules.json
      • apps/cli/tests/eval/registry/shards/typed-sources.json

      The pre-push hook runs the affected suite on your one push and refuses it on failure — do not run it yourself per Part.

    2. Part 2 (O2): The comparison of lifecycle events and checkpoint transitions against the built-in executor.

    3. Part 3 (O4): The capability matrix and both registry entries name the delivered evidence.

    4. Part 4 (O5): The shard entry.

    5. Part 5 (O6): The full gate-16 row id in the proving test's name.

    7. Documentation-update list

    .vinaya/doc-owners derivation matched zero bindings against this task's surface — no mechanically-derived doc updates. Confirm no additional doc artifact applies before treating this list as final.

    8. Verification before claiming done

    • Under the review loop, the controller runs the static gates: the commit hook applies safe format and lint fixes to staged files, typechecks affected packages, and runs the Vinaya checks; the pre-push hook runs the affected suite; run_checks and CI provide the authoritative results. Do not hand-run or paste static-gate commands. Working manually, run this repository's declared typecheck, lint/format, build, and documentation-gate commands yourself.
    • The pre-push hook runs the affected suite once, on your one push, and refuses it on failure; CI runs the full suite.
    • Every blast-radius consumer named in §4, re-verified by name.
    • The tier checklist in bun apps/cli/src/index.ts doctrine --role developer --print genuinely satisfied; use the controller's run_checks result, hooks, and CI as gate evidence.

    9. Test Plan

    cd apps/cli && bun test --timeout=30000 tests/conformance/packed-runtime-public-run-control.test.ts → 0 fail; start, halt, resume without replay and cancel pass with the caller's executor; built-in and caller sequences equal; the proving test's name contains `cutover-gate:gate-16`
    cd apps/cli && bun test --timeout=30000 tests/conformance/packed-runtime-consumer.test.ts tests/eval/exit-check.test.ts tests/eval/registry.test.ts → 0 fail
    cd apps/cli && bun test --timeout=30000 tests/ci-shards.test.ts → 0 fail
    bunx turbo run typecheck --affected → exits 0
    

    10. Stop conditions

    • The public start or resume refuses or ignores the caller-supplied executor in the installed package.
    • The built-in and caller-supplied runs differ in lifecycle events in a way the public types do not explain.

    Stop-and-escalate — Stop if the public startControlledRun or resumeControlledRun refuses or ignores the caller-supplied executor in the installed package; paste the failing assertion, because that means the boundary is not delivered and the documents must keep saying so. Stop if the built-in and caller-supplied runs differ in lifecycle events in a way the public types do not explain; paste both sequences.

    11. Constraints

    Autonomy: Do not stop to ask clarifying questions. For any ambiguity not covered by a Section 10 stop condition, choose the most reasonable option consistent with this brief, record the choice in the PR body at open, or in a PR comment after open, and continue. Halt only for the explicit Section 10 stop conditions — and when you halt, record the blocker in a PR comment or an Issue comment rather than waiting interactively for input.

    12. Deliverable

    • PR title (exact): [developer-review-engine-proof-v1] 1 — The packed runtime's public start and resume run this repository's executor, with halt, inspect, resume and cancel proved
    • Open the PR only via the open_pull_request tool (title and body); publish your commits with publish_changes and update the body with update_pull_request_body/refresh_evidence — you hold no gh/git push credential.
    • Publish once, with publish_changes, when every Part is done; then open the pull request with open_pull_request. Publish again only to answer review findings or a red gate — a refused hook, a failing check, a merge conflict.
    • PR body = the Developer's PR report (print it with bun apps/cli/src/index.ts doctrine --template pr-report --print), with Closes #1642 at the top of the header block. This brief stays frozen on the task Issue and never rides in the body.
    • Pre-open: tier checklist satisfied. The documentation gate is the controller's — run_checks and CI run it.
    • Include git diff origin/main...HEAD --stat as context only; Surface is judged by the driver's surface-scope check, never by this hand-run diff. Token use needs no report — the Vinaya log records it.
    • Then STOP. Review and Verification are separate invocations.
  2. daniboomerang commented on Oct 25, 2026

    @daniboomerang
    MemberAuthor

    The dev-review-loop paused: infrastructure — enforcement control 'local-gate' is inactive: ring 0 is INERT in this working copy — hooks are tracked at .vinaya/hooks but core.hooksPath is set to '~/Work/Repositories/Me/atta-labs/vinaya/.vinaya/hooks' (git config is never cloned). Remedy: Run git config core.hooksPath .vinaya/hooks once per cl….

    No pull request exists yet for this task, so the pause is recorded on this Issue instead.
    A Principal ruling is needed before this can continue. Post it as a comment on this Issue whose FIRST line is exactly this marker — the second number is the ordinal, and it must exceed the one this pause recorded:

    <!-- aeg:principal:ruling:1642-1 -->
    Your ruling text here.
    

    Then continue with:

    vinaya task run developer-review-engine-proof-v1 1 --agent claude --model opus --runner atta-engine
    

    The Operator's own task_resume clears this pause too, reading that same ruling from this Issue; task_cancel ends it instead.

  3. daniboomerang commented on Oct 25, 2026

    @daniboomerang
    MemberAuthor

    The dev-review-loop paused: missing_source — required source(s) could not be prepared, so the Developer turn did not start: apps/cli/specs/dev-review-evaluation-program.md (missing_in_repository: apps/cli/specs/dev-review-evaluation-program.md does not exist at b39fb00); apps/cli/specs/dev-review-engine-capab….

    No pull request exists yet for this task, so the pause is recorded on this Issue instead.
    A Principal ruling is needed before this can continue. Post it as a comment on this Issue whose FIRST line is exactly this marker — the second number is the ordinal, and it must exceed the one this pause recorded:

    <!-- aeg:principal:ruling:1642-1 -->
    Your ruling text here.
    

    Then continue with:

    vinaya task run developer-review-engine-proof-v1 1 --agent claude --model claude-sonnet-5-5 --runner atta-engine
    

    The Operator's own task_resume clears this pause too, reading that same ruling from this Issue; task_cancel ends it instead.

  4. daniboomerang commented on Oct 25, 2026

    @daniboomerang
    MemberAuthor

    The dev-review-loop paused: infrastructure — an uncaught error ended round 1's own processing: required source(s) could not be prepared, so the Developer turn did not start: apps/cli/specs/dev-review-evaluation-program.md (missing_in_repository: apps/cli/specs/dev-review-evaluation-program.md does not exist at b39fb00….

    No pull request exists yet for this task, so the pause is recorded on this Issue instead.
    A Principal ruling is needed before this can continue. Post it as a comment on this Issue whose FIRST line is exactly this marker — the second number is the ordinal, and it must exceed the one this pause recorded:

    <!-- aeg:principal:ruling:1642-1 -->
    Your ruling text here.
    

    Then continue with:

    vinaya task run developer-review-engine-proof-v1 1 --agent claude --model opus --runner atta-engine
    

    The Operator's own task_resume clears this pause too, reading that same ruling from this Issue; task_cancel ends it instead.

  5. daniboomerang commented on Oct 25, 2026

    @daniboomerang
    MemberAuthor

    The dev-review-loop paused: infrastructure — an uncaught error ended round 1's own processing: the developer's prior launch (attempt 1) ended incomplete (no failure recorded) before its vendor session was ever bound — cannot resume the exact session, and starting a fresh one would lose worker continuity.

    No pull request exists yet for this task, so the pause is recorded on this Issue instead.
    A Principal ruling is needed before this can continue. Post it as a comment on this Issue whose FIRST line is exactly this marker — the second number is the ordinal, and it must exceed the one this pause recorded:

    <!-- aeg:principal:ruling:1642-1 -->
    Your ruling text here.
    

    Then continue with:

    vinaya task run developer-review-engine-proof-v1 1 --agent claude --model opus --runner atta-engine
    

    The Operator's own task_resume clears this pause too, reading that same ruling from this Issue; task_cancel ends it instead.

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions