--- name: rpi description: 'Run discovery, crank, validation.' --- # $rpi - Full Lifecycle Orchestrator > Quick ref: `$discovery` -> `$crank` -> `$validation`, then report. **Execute this workflow. Do not only describe it.** RPI is autonomous unless `--interactive` is set. The user touchpoint is after validation, or after a real blocked state exhausts retries. Read [references/autonomous-execution.md](references/autonomous-execution.md) when you need the full autonomy contract. ## Codex Lifecycle Guard When this skill runs in Codex hookless mode (`CODEX_THREAD_ID` is set or `CODEX_INTERNAL_ORIGINATOR_OVERRIDE` is `Codex Desktop`), run: ```bash ao codex ensure-start 2>/dev/null || true ``` Let `$validation`, `$post-mortem`, or `$handoff` own hookless closeout through `ao codex ensure-stop`. ## Core Contract RPI delegates via `$discovery`, `$crank`, `$validation` as **separate skill invocations**. Keep strict delegation on by default; do not compress phases, replace phase skills with direct agent spawns, or skip `$validation`. Read [../shared/references/strict-delegation-contract.md](../shared/references/strict-delegation-contract.md) for the full anti-compression contract. RPI owns one lifecycle objective across all phases. Preserve the discovered `epic_id` when present; otherwise preserve the original goal and execution packet objective. A child bead or one ready slice is context, not a replacement objective. `PARTIAL` from `$crank` means retry Phase 2 on the same objective. ## Route And Classify 1. Create `.agents/rpi/`. 2. Resolve `--from`: - default, `research`, `plan`, `pre-mortem`, `brainstorm` -> discovery - `implementation` or `crank` -> implementation - `validation`, `vibe`, or `post-mortem` -> validation 3. If the input is a bead and `--from` is absent, resolve it with `bd show`: - epic -> implementation with that epic - child with parent -> implementation with the parent epic 4. Classify complexity: - `fast`: short/simple goal or `--fast-path` - `standard`: medium goal or one scope keyword - `full`: `--deep`, complex-operation keyword, 2+ scope keywords, or >120 chars 5. Log `RPI mode: rpi-phased (complexity: )`. Track state compactly: ```text rpi_state = { goal: "", epic_id: null, phase: "", complexity: "", test_first: , cycle: 1, verdicts: {} } ``` ## Phase DAG Enter at the routed phase and run every phase after it. 1. **Discovery:** invoke `$discovery [--interactive] --complexity=`. On DONE, read `.agents/rpi/execution-packet.json` or the run archive and preserve its objective spine. On BLOCKED, stop with the discovery verdict. 2. **Implementation:** invoke `$crank ` when the packet has `epic_id`; otherwise invoke `$crank .agents/rpi/execution-packet.json`. Pass `--test-first` or `--no-test-first` through. On DONE, record `ao ratchet record implement 2>/dev/null || true` and continue. On PARTIAL or BLOCKED, retry the same objective up to 3 total attempts. 3. **Validation:** invoke `$validation --complexity=` when an epic exists; otherwise invoke `$validation --complexity=`. Add `--strict-surfaces` when `--quality` is set. On FAIL, extract findings, re-run `$crank` on the same objective, then re-run `$validation`, up to 3 total validation attempts. On DONE, record `ao ratchet record vibe 2>/dev/null || true`. 4. **Report:** summarize phase verdicts and epic status using [references/report-template.md](references/report-template.md). With `--loop`, restart from discovery on FAIL while `cycle < max_cycles`. With `--spawn-next`, read `.agents/rpi/next-work.jsonl` and suggest the next command without invoking it. ## Phase Data Contract The execution packet carries the repo execution profile through `contract_surfaces`, `done_criteria`, and queue claim/finalize metadata. Keep the latest alias at `.agents/rpi/execution-packet.json` and read [references/phase-data-contracts.md](references/phase-data-contracts.md) for schemas and archive paths. ## Complexity-Scaled Gates ### Pre-mortem - `complexity == "low"` or `"fast"`: inline review, no spawning (`--quick`) - `complexity == "medium"` or `"standard"`: inline fast default (`--quick`) - `complexity == "high"` or `"full"`: full council, 2-judge minimum; max 3 total attempts ### Final Vibe - `complexity == "low"` or `"fast"`: inline review, no spawning (`--quick`) - `complexity == "medium"` or `"standard"`: inline fast default (`--quick`) - `complexity == "high"` or `"full"`: full council, 2-judge minimum; max 3 total attempts ### Post-mortem (STEP 2) - `complexity == "low"` or `"fast"`: inline review, no spawning (`--quick`) - `complexity == "medium"` or `"standard"`: inline fast default (`--quick`) - `complexity == "high"` or `"full"`: full council, 2-judge minimum; max 3 total attempts ## Flags | Flag | Default | Purpose | |------|---------|---------| | `--from=` | discovery | Start at discovery, implementation, or validation | | `--interactive` | off | Human gates in discovery/validation | | `--auto` | on | Fully autonomous default | | `--loop --max-cycles=` | off / 3 | Iterate when validation fails | | `--spawn-next` | off | Surface follow-up work after reporting | | `--test-first` | on | Pass strict-quality preference to `$crank` | | `--no-test-first` | off | Explicitly opt out of strict-quality | | `--fast-path` / `--deep` | auto | Force fast or full complexity | | `--quality` | off | Make validation strict surfaces blocking | | `--dry-run` / `--no-budget` | off | Report only, or disable phase time budgets | ## Examples **User says:** `$rpi "add user authentication"` Run discovery, implementation, validation, then report. **User says:** `$rpi --from=implementation ag-23k` Resolve the bead scope, run implementation and validation, then report. **User says:** `$rpi --deep "refactor payment module"` Use full council gates across the lifecycle. Read [references/examples.md](references/examples.md) for resume, interactive, and loop examples. ## Troubleshooting | Problem | Response | |---------|----------| | Discovery BLOCKED | Stop and report discovery's manual-intervention reason | | `$crank` returns PARTIAL | Retry `$crank` on the same objective; do not narrow to a child slice | | Validation FAIL | Re-crank with findings, then re-validate, up to 3 total attempts | | Packet shape unclear | Read [references/phase-data-contracts.md](references/phase-data-contracts.md) | ## Reference Documents - [references/autonomous-execution.md](references/autonomous-execution.md) - [references/complexity-scaling.md](references/complexity-scaling.md) - [references/context-windowing.md](references/context-windowing.md) - [references/error-handling.md](references/error-handling.md) - [references/examples.md](references/examples.md) - [references/gate-retry-logic.md](references/gate-retry-logic.md) - [references/gate4-loop-and-spawn.md](references/gate4-loop-and-spawn.md) - [references/phase-budgets.md](references/phase-budgets.md) - [references/phase-data-contracts.md](references/phase-data-contracts.md) - [references/report-template.md](references/report-template.md) - [references/troubleshooting.md](references/troubleshooting.md)