CI Runner Proof
ci-runner-proof is not a governed product app. It is a repo-native proof pack for runner authors who need to exercise AgentXchain directly from code instead of shelling out to agentxchain step, plus the adjacent real-dispatch CI proofs that keep unattended execution claims honest.
What It Is
- Category: runner proof example
- Surface:
runner-interface - Source:
examples/ci-runner-proof
Workflow Or Proof Shape
- Primitive proof: initialize, assign, stage, accept
- Full lifecycle proof: PM -> Dev -> QA with approvals and retries
- Composition proof:
runLoopon top of the primitive layer - Real API dispatch proof:
runLoop+api_proxy - Operator-surface proof:
agentxchain run --auto-approvein a real subprocess - Multi-phase write proof: 3-phase lifecycle with write-owning (proposed) turn, real gate artifact check, explicit
phase_gate_statusproof for auto-advanced gates, and a strict proposed-authority contract (artifact.type: "patch"plusproposed_changes[], not rawworkspacewrites)
How AgentXchain Governs This Example
AgentXchain governs this example by keeping the boundary honest:
- the primitive proofs use the public runner interface instead of internal helpers
- the CLI auto-approve proof intentionally shells out to the real
agentxchain runbinary to prove the shipped operator surface, not a local helper or a second runner - the proof pack keeps runner-boundary proof and CLI-boundary proof separate instead of pretending they are the same contract
The CLI auto-approve proof is not a second runner. It is the operator-surface check for the shipped binary.
This is a proof example, not a generated governed app. The governance value is the boundary discipline itself.
Fresh Governed CLI Run
Recorded on 2026-04-13 with AgentXchain v2.83.0.
This was a fresh execution of the shipped proof command:
node examples/ci-runner-proof/run-via-cli-auto-approve.mjs --json
The proof ran against the real CLI binary, used real api_proxy dispatch to Anthropic Haiku, and passed on the first attempt.
| Field | Recorded value |
|---|---|
| Result | pass |
| Attempts used | 1 |
| Run ID | run_42f62404493863ad |
| CLI exit status | 0 |
| Accepted turns | 2 |
| Role order | planner -> reviewer |
| Total cost | $0.012 |
| Real API-backed turns | 2 |
| Governance export/report | generated during the temp run |
Trimmed payload from the recorded proof:
{
"runner": "ci-cli-auto-approve-proof",
"cli_version": "2.83.0",
"result": "pass",
"cli_exit_status": 0,
"artifacts": {
"state": {
"status": "completed",
"phase": "review",
"run_id": "run_42f62404493863ad"
},
"history": {
"entry_count": 2,
"roles": ["planner", "reviewer"]
},
"ledger": {
"entry_count": 4
},
"cost": {
"total_usd": 0.012,
"real_api_calls": 2
}
},
"attempts_used": 1
}
Operator-visible output from the same run ended with:
Turn accepted: turn_67a6cb067f1ced39
Run completed
─── Run Summary ───
Status: completed
Turns: 2
Gates: 0 approved
Errors: none
The proof uses a temp workspace and deletes it after validation, so the report/export paths are intentionally ephemeral. The durable claim is that the run completed, wrote governance artifacts while it was live, and produced non-zero model cost on both accepted turns.
Run It
node examples/ci-runner-proof/run-one-turn.mjs
node examples/ci-runner-proof/run-to-completion.mjs
node examples/ci-runner-proof/run-with-run-loop.mjs
node examples/ci-runner-proof/run-with-api-dispatch.mjs
node examples/ci-runner-proof/run-via-cli-auto-approve.mjs
node examples/ci-runner-proof/run-via-cli-auto-approve.mjs --json
node examples/ci-runner-proof/run-multi-phase-write.mjs
Key Takeaways
- Use this when you are building a non-CLI runner.
- Prove the primitive layer before you build higher-level orchestration.
- Do not call a CLI wrapper a second runner.
- Keep the CLI proof separate from the runner proof. They defend different failure boundaries, and the case-study block above is the real operator-surface evidence.
- For the multi-phase CI proof, read
phase_gate_statusas the authoritative gate-pass signal.gates_approvedonly counts gates that paused for approval. - For the multi-phase CI proof, proposed
api_proxyturns are only valid when they return structured proposals. Illegalworkspaceartifacts are rejected by design.