name: run-parity-test-f description: Use when the user wants to run the parity-test-f pipeline on Tier 1d (Codex CLI) to analyze a pull request diff for code issues and produce a validated review report. disable-model-invocation: true user-invocable: true plugin_version: "2.2.3"
run-parity-test-f — Entry Skill
Entry point for the
parity-test-fpipeline. Orchestrates the sequential dispatch ofanalyzer,reviewer, andreporteragents on Tier 1d (Codex CLI) via model_driven dispatch.
Platform Context
- Tier:
tier_1d(Codex CLI) - Dispatch mechanism:
model_driven— the host orchestrator drives subagent sequencing; noTask()primitive available. - model_field_format:
toml_split— agents declaremodelandmodel_reasoning_effortin their TOML files; the entry skill does NOT stamp model fields into dispatch prompts. - Degradation warnings: None for Tier 1d.
Workflow
PHASE 0: PREFLIGHT
- Resolve
{ROOT}viask-pipeline-paths(scope root resolved from the active tier profile at runtime — never hardcode.codex/or any platform path). - Resolve
{runId}= ISO-8601 compact timestamp (e.g.,20260526T143000Z). - Create temp directory:
{ROOT}/superpipelines/temp/parity-test-f/{runId}/. - Create
output/directory if absent:{ROOT}/output/. - Initialize
pipeline-state.jsonat{ROOT}/superpipelines/temp/parity-test-f/{runId}/pipeline-state.json:
{
"pipeline_id": "parity-test-f",
"run_id": "{runId}",
"started_at": "{iso8601}",
"plugin_version": "2.0.0",
"pattern": "1",
"status": "running",
"current_phase": 0,
"metadata": {
"source_tier": "tier_1d",
"runtime_tier": "tier_1d",
"model_field_format": "toml_split",
"resolved_models": {
"analyzer": "gpt-5.4-mini",
"reviewer": "gpt-5.5",
"reporter": "gpt-5.4-mini"
}
},
"phases": [
{
"index": 0,
"step_id": "analyzer",
"name": "analyze",
"status": "pending",
"agent": "agents/superpipelines/parity-test-f/analyzer.toml",
"outputs": [],
"error": null
},
{
"index": 1,
"step_id": "reviewer",
"name": "review",
"status": "pending",
"agent": "agents/superpipelines/parity-test-f/reviewer.toml",
"outputs": [],
"error": null
},
{
"index": 2,
"step_id": "reporter",
"name": "report",
"status": "pending",
"agent": "agents/superpipelines/parity-test-f/reporter.toml",
"outputs": [],
"error": null
}
]
}
- If the user has not supplied the path to the pull request diff file, ask for it now. Record as
{DIFF_PATH}.
PHASE 1: DISPATCH ANALYZER (model_driven)
DISPATCH via model_driven orchestration:
Agent: analyzer (analyzer.toml)
Protocol: {ROOT}/../.agents/skills/superpipelines/parity-test-f/analyzer-protocol/SKILL.md
Context to pass:
- diff_path: {DIFF_PATH}
- findings_output_path: {ROOT}/superpipelines/temp/parity-test-f/{runId}/findings.json
- state_path: {ROOT}/superpipelines/temp/parity-test-f/{runId}/pipeline-state.json
- run_id: {runId}
- root: {ROOT}
Wait for terminal status from analyzer:
DONE→ updatepipeline-state.jsonphases[0].status = "completed"; advance to Phase 2.DONE_WITH_CONCERNS→ update phases[0].status = "completed_with_concerns"; surface concerns to user; advance to Phase 2.NEEDS_CONTEXT→ update phases[0].status = "blocked"; update top-level status = "blocked"; surface message to user; GO TO CLEANUP (preserve).BLOCKED→ update phases[0].status = "blocked"; update top-level status = "blocked"; surface message to user; GO TO CLEANUP (preserve).
PHASE 2: DISPATCH REVIEWER (model_driven — READ-ONLY)
DISPATCH via model_driven orchestration:
Agent: reviewer (reviewer.toml — sandbox_mode = "read-only")
Protocol: {ROOT}/../.agents/skills/superpipelines/parity-test-f/reviewer-protocol/SKILL.md
Context to pass:
- findings_path: {ROOT}/superpipelines/temp/parity-test-f/{runId}/findings.json
- run_id: {runId}
- root: {ROOT}
NOTE: The reviewer agent has sandbox_mode = "read-only". The Codex host enforces structural write-deny — the reviewer writes NO files and emits its verdict via terminal output text only. Do NOT pass any write-capable context (no verdict_output_path, no writable state_path); the orchestrator owns all persistence.
After the reviewer completes:
- Capture the
REVIEWER VERDICTblock from the reviewer's terminal output. Record as{REVIEWER_OUTPUT}. - Parse from the block:
{reviewer_verdict}(approved/approved_with_concerns/rejected),{reviewer_completeness_score},{reviewer_missing_categories},{reviewer_notes}. - Update
pipeline-state.json:phases[1].outputs→[{ "verdict": "{reviewer_verdict}", "completeness_score": "{reviewer_completeness_score}", "missing_categories": "{reviewer_missing_categories}", "reviewer_notes": "{reviewer_notes}" }]
Wait for terminal status from reviewer:
DONE→ updatepipeline-state.jsonphases[1].status = "completed"; advance to Phase 3.DONE_WITH_CONCERNS→ update phases[1].status = "completed_with_concerns"; surface concerns to user; advance to Phase 3.BLOCKED→ update phases[1].status = "blocked"; update top-level status = "blocked"; surface message to user; GO TO CLEANUP (preserve). DO NOT dispatch reporter.
PHASE 3: DISPATCH REPORTER (model_driven)
Only dispatched if the reviewer verdict is approved or approved_with_concerns.
DISPATCH via model_driven orchestration:
Agent: reporter (reporter.toml)
Protocol: {ROOT}/../.agents/skills/superpipelines/parity-test-f/reporter-protocol/SKILL.md
Context to pass:
- findings_path: {ROOT}/superpipelines/temp/parity-test-f/{runId}/findings.json
- reviewer_verdict: {reviewer_verdict}
- reviewer_completeness_score: {reviewer_completeness_score}
- reviewer_missing_categories: {reviewer_missing_categories}
- reviewer_notes: {reviewer_notes}
- output_path: {ROOT}/output/parity-test-f-review-report.md
- state_path: {ROOT}/superpipelines/temp/parity-test-f/{runId}/pipeline-state.json
- run_id: {runId}
- root: {ROOT}
Wait for terminal status from reporter:
DONE→ update phases[2].status = "completed"; advance to Phase 4.DONE_WITH_CONCERNS→ update phases[2].status = "completed_with_concerns"; surface concerns to user; advance to Phase 4.NEEDS_CONTEXT→ update phases[2].status = "blocked"; update top-level status = "blocked"; surface message to user; GO TO CLEANUP (preserve).BLOCKED→ update phases[2].status = "blocked"; update top-level status = "blocked"; surface message to user; GO TO CLEANUP (preserve).
PHASE 4: FINALIZE
- Update
pipeline-state.json:status:"completed"(or"completed_with_concerns"if any phase had concerns)completed_at: ISO-8601 timestamp
- Cleanup contract (C20):
- On
DONEorDONE_WITH_CONCERNS: writestatus: completedtopipeline-state.json, then delete the temp directory{ROOT}/superpipelines/temp/parity-test-f/{runId}/. - On
BLOCKEDorNEEDS_CONTEXT: preserve the temp directory (do NOT delete); it holds resume state for diagnosis.
- On
- Confirm to the user:
Pipeline
parity-test-fcompleted. Code review report written to:{ROOT}/output/parity-test-f-review-report.md - Emit terminal status:
DONE(orDONE_WITH_CONCERNS/BLOCKED/NEEDS_CONTEXTas applicable).