# Reading copy: platform-codex

Links below are resolved against commit `c4a37e88bc627fbeabcd9aabb886a2b4b3d1a185`. Source wording is unchanged; Markdown formatting may differ. [Exact source bytes](../sources/platform-codex.md), SHA-256 `184d65e91d1886d9cd89403f73cba5fd9d5ef9baa09897971c4d421f3f8103ac`. [Source and link manifest](manifest.json). Repository links require access while the repository is private. From an authorized checkout, read the named repository paths at this commit.

---

# Your platform: Codex

Read this once, at stage A1, after AGENT.md and OPENAI-RUNTIME.md. The method, the stage files, the tools and the checks are the same on both platforms; this file is where they differ. Generated by `aggregator/handler/claude/gen_platform.py` from `aggregator/handler/claude/arm.codex.json`; never edit it by hand.

## Models and routes

`aggregator/handler/claude/arm.codex.json` sets each leg's model and effort; the controller (`aggregator/handler/codex/run.py`, `aggregator/handler/codex/runtime/`) records the native identities at every close. Never change the model to escape a failure.

| stage | analyst | effort | readers |
|----|----|----|----|
| A1 | gpt-6-astra | a medium; b medium; c high |  |
| B1 | gpt-6-astra | a high; b high; c xhigh; d high; e xhigh |  |
| B2 | gpt-6-astra | a medium; b high; c medium; d high | gpt-6-sol x3 via codex, effort medium |
| B3 | gpt-6-astra | a medium; b high | gpt-6-sol x2 via codex, effort medium |
| B4 | gpt-6-astra | a high; b medium; c high | gpt-6-sol x2 via codex, effort medium |
| C1 | gpt-6-astra | a xhigh |  |
| C2 | gpt-6-astra | a xhigh; b high; c high; d xhigh | gpt-6-astra x1 via codex, effort high |
| C3 | gpt-6-astra | a high; b high; c xhigh |  |
| C4 | gpt-6-astra | a high |  |
| C5 | gpt-6-astra | a high; b medium; c high; d high | gpt-6-astra x1 via codex, effort high |
| D1 | gpt-6-astra | a medium |  |
| D2 | gpt-6-astra | a high | gpt-6-sol x2 via codex, effort medium |
| D3 | gpt-6-astra | a high; b medium; c high |  |
| D4 | gpt-6-astra | a xhigh |  |
| D5 | gpt-6-astra | a high; b high |  |
| D6 | gpt-6-astra | a high; b high |  |
| E1 | gpt-6-astra | a high; b high; c medium; d high; e high | gpt-6-sol x1 via codex, effort medium |
| E2 | gpt-6-astra | a high; b xhigh |  |

- **The routine readers** run on `gpt-6-sol` as independent native readers the controller owns, or on OpenRouter when the study selected that fleet arm (`aggregator/handler/claude/fleet-arms.json`, `FLEET-ARMS.md`). Wherever the stage files speak of `fleet.py`, read the controller's dispatch: it applies the same return validation (`tools/fleet.py`'s `validate`).
- **The reviewers** of C2 and C5 run on `gpt-6-astra`, each in a session of its own.
- **The labelers** at D2 resume each room's original case lead in Codex (`handoff/HANDLER.md`).

## Legs, closes and compaction

- Each ordinary leg forks the preceding completed native checkpoint and its files. `_head.md` and the diary orient that continuation; they do not replace the history.
- `done.sh` is your exit. The controller then runs the trusted checks and the recall probe, records the native boundary and commits the compressed checkpoint. Closing at `packets-out` asks the controller to dispatch; never run a fleet yourself.
- The shell starts in `out/`: `cd ..` before running the tools. Scratch and cache paths are the controller's.
- At a safe pause, log the working hypothesis and the next item with `mem.py log --kind pause`, then `bash tools/done.sh STAGE --pause`. The controller owns interruption and recovery.
