AutoResearch Paper MVP0
Use Codex as the Host and one physically separate Claude Code session with the
frozen MiniMax model as the bounded Worker. P1–P5 remain the only scientific
and experiment truth. P6 observes and advances those stores one transition per
Codex heartbeat; it never creates a second research truth.
Required reading
Read these resources completely before acting:
mvp/README.md;
mvp/prompts/codex-research-compiler.md and
mvp/schemas/research-ir.schema.json for P1;
- the Worker task/result schemas and
mvp/worker_adapter.py for P2;
- the Experiment Receipt schema and
mvp/experiment_ledger.py for P3;
- the evaluator/decision schemas and
mvp/evidence_gate.py for P4;
mvp/prompts/codex-recompile-analyst.md, the P5 schemas, and
mvp/recompile_loop.py for P5;
mvp/prompts/codex-supervisor-heartbeat.md, the supervisor/runtime schemas,
mvp/supervisory_controller.py, and mvp/runtime_assurance.py for P6.
Use examples/mvp0/fixed-wing-visual-guidance/ only as a shape example. Never
copy its claims, paths, evidence, or approval.
Non-negotiable boundaries
- P1 must discuss the research contract with the owner before freezing the
initial IR. Publish a proposal, stop for Human Critique, revise, stop for
Human Approval, then freeze
OWNER_REVIEWED and replay it.
ENGINEERING_ACCEPTANCE is test-only. Never use it for live work.
- P6 may use
DELEGATED_ENGINEERING_REVIEW only for a version N+1 delta that
passes the deterministic execution-only policy and a fresh non-MiniMax Codex
review. Problem, claim, baseline, metrics, thresholds, falsification, safety,
evaluator semantics, and scientific hypothesis fields remain immutable.
- The compiler, reviewer, revision author, and approver must be distinct
codex/<role> identities for delegated review. MiniMax is never a reviewer,
approver, or final authority.
- Never treat Worker
COMPLETED, P3 recording, or a Watchdog heartbeat as
scientific success. Only the frozen P4 truth table can decide KEEP, PIVOT,
STOP, or RECOMPILE.
- Never repeat a failed task contract, reset its rejected worktree, rotate the
Worker model/session, or accept rejected files. A successor uses a clean new
worktree, an exact P5 freeze, the predecessor terminal receipt, the same
session UUID, and exact
--resume.
- Unattended dispatch is forbidden until the full L0/L1/L2 activation receipt
replays. A Codex automation file alone is not a complete Watchdog.
- One heartbeat performs at most one state transition. Stop after the committed
tick and let the next heartbeat derive the next action.
- Pause on scientific/ambiguous changes, identity mismatch, unknown scheduler
drift, exhausted deterministic recovery, or inconsistent lineage.
- Do not claim 24h, 7x24, production cutover, SOTA, or paper readiness from P6.
P1–P5 flow
- Ground the brief in real local evidence and hash every cited local file.
- Draft and validate one Research IR with a fair baseline/evaluator,
falsification conditions, allowed search space, finite budget, and STOP plus
RECOMPILE rules.
- Publish the proposal and render a review card. End at
AWAITING_HUMAN_CRITIQUE.
- Translate owner feedback into a structured critique, publish explicit JSON
Pointer changes, render the semantic diff, and end at
AWAITING_HUMAN_APPROVAL.
- After later explicit approval, freeze
OWNER_REVIEWED and run
verify-freeze --check-paths.
- Only on execution authority, initialize P2 in a clean detached worktree,
compile one task from one frozen experiment, and dispatch once.
- Record every terminal P2 receipt into P3 before another Worker turn.
- Run P4 once for the next P3 receipt. Preserve negative and failed evidence.
- On PIVOT/RECOMPILE, publish a P5 failure analysis, request, and IR N+1
proposal. Do not silently broaden the scientific contract.
Exact commands and receipt semantics are in mvp/README.md.
P6 supervisor initialization
Initialize one plan-bound store under the research run:
python3 mvp/supervisory_controller.py init \
--run-dir /absolute/research-run \
--target-thread-id <exact-codex-task-id> \
--adapter-dir /absolute/research-run/adapter \
--ledger-dir /absolute/research-run/ledger \
--gate-store /absolute/research-run/gate \
--p5-store /absolute/research-run/p5-recompile
Run inspect first. Its action envelope binds the controller, exact Codex task,
run, sequence, and one permitted action. If it returns
NEEDS_ENGINEERING_REVIEW, inspect the full parent/child semantic diff and P4/P5
evidence, then supply the closed engineering-review input to one tick.
Render the L1 automation using render-automation. Register it through the
Codex App scheduled-task capability when available. Otherwise write only its
exact returned path, normalize it with codex-automation-registration, and
verify it appears in Scheduled before claiming App registration.
Bootstrap the complete runtime closure only after L1 exists:
python3 mvp/supervisory_controller.py bootstrap-assurance \
--store-dir /absolute/research-run/supervisor \
--launch-agents-dir "$HOME/Library/LaunchAgents" \
--python-executable /absolute/python3 \
--now 2026-08-02T00:00:00Z
This proves:
- L0: independent launchd health supervisor, zero model calls, exact L1 repair;
- L1: Codex App
kind=heartbeat, exact target_thread_id, ten-minute cadence;
- L2: sequenced process/session/task-bound Worker heartbeats;
- activation: immutable receipt binding identities, intervals, logs, probes,
and owned resources.
L0 never reads research content or invokes a model. It can restore only the
exact frozen L1 file. L1 is the model-bearing Host tick. L2 proves Worker
liveness, not scientific progress.
Heartbeat operation
For every L1 run:
- verify the exact task/run/controller binding and publish one
heartbeat;
- run
inspect;
- create at most the one closed input requested by the action;
- run one
tick;
- run
verify;
- report the committed phase and end the Codex turn.
Typical sequence:
terminal P2 → NEEDS_P3 → NEEDS_P4 → NEEDS_P5
→ NEEDS_ENGINEERING_REVIEW → NEEDS_CHILD_P2
→ successor Worker starts → terminal P2
P6 may publish deterministic P3/P4 transitions and bounded P5 artifacts. It
may automatically freeze only execution-only IR changes. A scientific delta
must become WAITING_HUMAN; do not weaken the policy to keep the loop moving.
Observe and control
inspect: read-only next controller action.
verify: replay supervisor ticks and P1–P5 lineage.
inspect-runtime: read-only L0/L1/L2/process/log/residual snapshot for the
Dashboard projection.
l0-health-tick: zero-model health observation and exact permitted repair.
pause: block new work and pause the exact L1 registration; require an
explicit --authority-id.
resume: replay supervisor and full activation before reactivation.
stop: exact-once ordered shutdown—block work, disable L0, disable L1,
terminate only identity-matching Worker processes, and report residuals.
L0 must detect both a stale L1 execution heartbeat and a stale/missing active
L2 Worker heartbeat. It may repair only an exactly missing frozen L1 file;
drift, scheduler absence, and stale execution produce typed recovery evidence
instead of an unsafe resend or an invented success state.
Codex App owns the automation updated_at value and may normalize terminal
prompt whitespace when it persists a heartbeat. Treat only those
representation changes as equivalent. Compare the normalized complete prompt
and all stable controller, task, recurrence, name, creation, and lifecycle
fields; any semantic difference is L1_DRIFT.
The Codex App Scheduled view is the operator surface for L1. L0 remains outside
the App failure domain. Dashboard data is a read-only projection; it never
authorizes a transition.
Completion language
Report concrete evidence separately:
- deterministic P1–P6 tests passed;
- installed resources match the repository;
- L0 is loaded and activation replays;
- L1 is visible and bound to the exact task;
- a real scheduled heartbeat returned to that task;
- a real L2 heartbeat and terminal receipt were recorded;
- the next research stage actually started.
If any item is absent, name it as an unclosed gate. Never collapse these into a
claim of 24h, 7x24, production readiness, SOTA, or full paper completion.
1---2name: mvp03description: AutoResearch Paper MVP04---56# AutoResearch Paper MVP078Use Codex as the Host and one physically separate Claude Code session with the9frozen MiniMax model as the bounded Worker. P1–P5 remain the only scientific10and experiment truth. P6 observes and advances those stores one transition per11Codex heartbeat; it never creates a second research truth.1213## Required reading1415Read these resources completely before acting:1617- `mvp/README.md`;18- `mvp/prompts/codex-research-compiler.md` and19 `mvp/schemas/research-ir.schema.json` for P1;20- the Worker task/result schemas and `mvp/worker_adapter.py` for P2;21- the Experiment Receipt schema and `mvp/experiment_ledger.py` for P3;22- the evaluator/decision schemas and `mvp/evidence_gate.py` for P4;23- `mvp/prompts/codex-recompile-analyst.md`, the P5 schemas, and24 `mvp/recompile_loop.py` for P5;25- `mvp/prompts/codex-supervisor-heartbeat.md`, the supervisor/runtime schemas,26 `mvp/supervisory_controller.py`, and `mvp/runtime_assurance.py` for P6.2728Use `examples/mvp0/fixed-wing-visual-guidance/` only as a shape example. Never29copy its claims, paths, evidence, or approval.3031## Non-negotiable boundaries3233- P1 must discuss the research contract with the owner before freezing the34 initial IR. Publish a proposal, stop for Human Critique, revise, stop for35 Human Approval, then freeze `OWNER_REVIEWED` and replay it.36- `ENGINEERING_ACCEPTANCE` is test-only. Never use it for live work.37- P6 may use `DELEGATED_ENGINEERING_REVIEW` only for a version N+1 delta that38 passes the deterministic execution-only policy and a fresh non-MiniMax Codex39 review. Problem, claim, baseline, metrics, thresholds, falsification, safety,40 evaluator semantics, and scientific hypothesis fields remain immutable.41- The compiler, reviewer, revision author, and approver must be distinct42 `codex/<role>` identities for delegated review. MiniMax is never a reviewer,43 approver, or final authority.44- Never treat Worker `COMPLETED`, P3 recording, or a Watchdog heartbeat as45 scientific success. Only the frozen P4 truth table can decide KEEP, PIVOT,46 STOP, or RECOMPILE.47- Never repeat a failed task contract, reset its rejected worktree, rotate the48 Worker model/session, or accept rejected files. A successor uses a clean new49 worktree, an exact P5 freeze, the predecessor terminal receipt, the same50 session UUID, and exact `--resume`.51- Unattended dispatch is forbidden until the full L0/L1/L2 activation receipt52 replays. A Codex automation file alone is not a complete Watchdog.53- One heartbeat performs at most one state transition. Stop after the committed54 tick and let the next heartbeat derive the next action.55- Pause on scientific/ambiguous changes, identity mismatch, unknown scheduler56 drift, exhausted deterministic recovery, or inconsistent lineage.57- Do not claim 24h, 7x24, production cutover, SOTA, or paper readiness from P6.5859## P1–P5 flow60611. Ground the brief in real local evidence and hash every cited local file.622. Draft and validate one Research IR with a fair baseline/evaluator,63 falsification conditions, allowed search space, finite budget, and STOP plus64 RECOMPILE rules.653. Publish the proposal and render a review card. End at66 `AWAITING_HUMAN_CRITIQUE`.674. Translate owner feedback into a structured critique, publish explicit JSON68 Pointer changes, render the semantic diff, and end at69 `AWAITING_HUMAN_APPROVAL`.705. After later explicit approval, freeze `OWNER_REVIEWED` and run71 `verify-freeze --check-paths`.726. Only on execution authority, initialize P2 in a clean detached worktree,73 compile one task from one frozen experiment, and dispatch once.747. Record every terminal P2 receipt into P3 before another Worker turn.758. Run P4 once for the next P3 receipt. Preserve negative and failed evidence.769. On PIVOT/RECOMPILE, publish a P5 failure analysis, request, and IR N+177 proposal. Do not silently broaden the scientific contract.7879Exact commands and receipt semantics are in `mvp/README.md`.8081## P6 supervisor initialization8283Initialize one plan-bound store under the research run:8485```bash86python3 mvp/supervisory_controller.py init \87 --run-dir /absolute/research-run \88 --target-thread-id <exact-codex-task-id> \89 --adapter-dir /absolute/research-run/adapter \90 --ledger-dir /absolute/research-run/ledger \91 --gate-store /absolute/research-run/gate \92 --p5-store /absolute/research-run/p5-recompile93```9495Run `inspect` first. Its action envelope binds the controller, exact Codex task,96run, sequence, and one permitted action. If it returns97`NEEDS_ENGINEERING_REVIEW`, inspect the full parent/child semantic diff and P4/P598evidence, then supply the closed engineering-review input to one `tick`.99100Render the L1 automation using `render-automation`. Register it through the101Codex App scheduled-task capability when available. Otherwise write only its102exact returned path, normalize it with `codex-automation-registration`, and103verify it appears in Scheduled before claiming App registration.104105Bootstrap the complete runtime closure only after L1 exists:106107```bash108python3 mvp/supervisory_controller.py bootstrap-assurance \109 --store-dir /absolute/research-run/supervisor \110 --launch-agents-dir "$HOME/Library/LaunchAgents" \111 --python-executable /absolute/python3 \112 --now 2026-08-02T00:00:00Z113```114115This proves:116117- L0: independent launchd health supervisor, zero model calls, exact L1 repair;118- L1: Codex App `kind=heartbeat`, exact `target_thread_id`, ten-minute cadence;119- L2: sequenced process/session/task-bound Worker heartbeats;120- activation: immutable receipt binding identities, intervals, logs, probes,121 and owned resources.122123L0 never reads research content or invokes a model. It can restore only the124exact frozen L1 file. L1 is the model-bearing Host tick. L2 proves Worker125liveness, not scientific progress.126127## Heartbeat operation128129For every L1 run:1301311. verify the exact task/run/controller binding and publish one `heartbeat`;1322. run `inspect`;1333. create at most the one closed input requested by the action;1344. run one `tick`;1355. run `verify`;1366. report the committed phase and end the Codex turn.137138Typical sequence:139140```text141terminal P2 → NEEDS_P3 → NEEDS_P4 → NEEDS_P5142→ NEEDS_ENGINEERING_REVIEW → NEEDS_CHILD_P2143→ successor Worker starts → terminal P2144```145146P6 may publish deterministic P3/P4 transitions and bounded P5 artifacts. It147may automatically freeze only execution-only IR changes. A scientific delta148must become `WAITING_HUMAN`; do not weaken the policy to keep the loop moving.149150## Observe and control151152- `inspect`: read-only next controller action.153- `verify`: replay supervisor ticks and P1–P5 lineage.154- `inspect-runtime`: read-only L0/L1/L2/process/log/residual snapshot for the155 Dashboard projection.156- `l0-health-tick`: zero-model health observation and exact permitted repair.157- `pause`: block new work and pause the exact L1 registration; require an158 explicit `--authority-id`.159- `resume`: replay supervisor and full activation before reactivation.160- `stop`: exact-once ordered shutdown—block work, disable L0, disable L1,161 terminate only identity-matching Worker processes, and report residuals.162163L0 must detect both a stale L1 execution heartbeat and a stale/missing active164L2 Worker heartbeat. It may repair only an exactly missing frozen L1 file;165drift, scheduler absence, and stale execution produce typed recovery evidence166instead of an unsafe resend or an invented success state.167168Codex App owns the automation `updated_at` value and may normalize terminal169prompt whitespace when it persists a heartbeat. Treat only those170representation changes as equivalent. Compare the normalized complete prompt171and all stable controller, task, recurrence, name, creation, and lifecycle172fields; any semantic difference is `L1_DRIFT`.173174The Codex App Scheduled view is the operator surface for L1. L0 remains outside175the App failure domain. Dashboard data is a read-only projection; it never176authorizes a transition.177178## Completion language179180Report concrete evidence separately:181182- deterministic P1–P6 tests passed;183- installed resources match the repository;184- L0 is loaded and activation replays;185- L1 is visible and bound to the exact task;186- a real scheduled heartbeat returned to that task;187- a real L2 heartbeat and terminal receipt were recorded;188- the next research stage actually started.189190If any item is absent, name it as an unclosed gate. Never collapse these into a191claim of 24h, 7x24, production readiness, SOTA, or full paper completion.