Review
Run a linear review loop with strict output gates.
Input Schema
{
"scope": "working-tree|path|commit",
"target": "optional path or commit ref",
"done_when": "blocking issues are identified with gate decision"
}
Workflow (Exact Commands)
-
Create run directory.
TS=$(date -u +%Y-%m-%dT%H-%M-%SZ) OUT_DIR=".reports/codex/review/$TS" mkdir -p "$OUT_DIR" -
Resolve scope and collect diff.
git status --short >"$OUT_DIR/status.txt" git diff --name-only >"$OUT_DIR/files.txt" -
Read the changed files end-to-end and identify findings before considering any fix or gate outcome.
-
Cross-check every blocking finding against surrounding context and existing project patterns before reporting it. Critical/blocking findings require an independent second pass when feasible; if unconfirmed, downgrade or mark the evidence gap explicitly.
-
Run shared quality gates.
.codex/skills/_shared/run-gates.sh \ --out "$OUT_DIR" \ --lint "${LINT_CMD:-uv run --no-sync ruff check .}" \ --format "${FORMAT_CMD:-uv run --no-sync ruff format --check .}" \ --types "${TYPES_CMD:-uv run --no-sync mypy src/}" \ --tests "${TESTS_CMD:-uv run --no-sync pytest -q}" \ --review "${REVIEW_CMD:-git diff --check}" -
Classify findings using
../_shared/severity-map.md. -
If no findings are present, state that explicitly and note any residual risks.
-
Write mandatory result artifact.
.codex/skills/_shared/write-result.sh \ --out "$OUT_DIR/result.json" \ --status "$STATUS" \ --checks-run "lint,format,types,tests,review" \ --checks-failed "$CHECKS_FAILED" \ --critical "$CRITICAL" \ --high "$HIGH" \ --medium "$MEDIUM" \ --low "$LOW" \ --confidence "$CONFIDENCE" \ --artifact-path "$OUT_DIR/result.json"
Fail-fast Rules
- No diff files and no explicit target => fail.
- Shared gate script missing => fail.
- Result artifact missing => fail.
- Review that skips changed-file inspection => fail.
- Blocking finding without local evidence or pattern check => fail.
Output Contract
Use shared gate schema from ../_shared/quality-gates.md.
Minimum artifact payload:
{
"status": "pass|fail",
"checks_run": [
"lint",
"format",
"types",
"tests",
"review"
],
"checks_failed": [],
"findings": {
"critical": 0,
"high": 0,
"medium": 0,
"low": 0
},
"confidence": 0.0,
"artifact_path": ".reports/codex/review/<timestamp>/result.json"
}