RPI

SkillDev tools

Apply the outcome-to-judgment charter. Use when: the caller explicitly selects RPI; ordinary coding, delegation and native goals do not require this workflow.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the RPI skill

What this skill tells your AI

The instructions your AI receives, as published by boshu2/agentops in skills/rpi/SKILL.md and read by ahel’s review.

Run one experiment from the caller's existing intent source and stop:

anti-ceremony guard -> Plan -> Implement -> fresh Validate -> bounded repair -> report

RPI invokes the guard exactly once before Plan, preserves the original intent, and dispatches Plan and Implement at most once; Validate repeats only inside the repair phase, under the convergence law and the caller's repair_rounds. Read references/boundaries.md, the ownership and delegation boundary shared by the core skills, before dispatch. scripts/run_once.py makes dispatch, repair, and stop executable without Git, ao, or a tracker.

Prompt

Run rpi on bead ag-1234 ("ao gate check lists the probe-coverage row").
Intent: the bead. Scope: cli/internal/gates/** plus docs/CI-CD.md. First check:
cd cli && go test ./internal/gates/... Fresh validator in a distinct context,
plus a cross-family leg (the scope is a risky surface). repair_rounds=2.

It's working if

  • The transcript shows one anti-ceremony call, then at most one plan and one implement dispatch.
  • The validator's context ID differs from the author's, and the report opens with status: and changed paths, not a digest.
  • Each round appends one repair round N: k open findings line to checked, k never grows, and the run ends on converged, a law violation, or repair_rounds, with no next action after the evidence.

Admission and phase lock

RPI activates for any plan-execute-verify request that changes the subject (orchestration, worker delegation, "execute this plan"), named or not. Research-, audit-, and review-only delegation produces evidence for a caller and earns no verdict.

Once the caller accepts a plan (a duel or design synthesis included), Plan is closed for that intent: every later lane returns implementation evidence (diffs, commits, test results, receipts). Another planning, audit, or review lane over the same intent needs new explicit caller authorization; a review comment alone is not that.

Contract

  1. Invoke anti-ceremony's artifact-free quick guard once with the caller outcome, proposed process work, remaining proof, and stop condition. On STOP, dispatch no core phase, report NOT_PLANNED with the guard's one-sentence reason, and stop. On CONTINUE, proceed and add nothing else.
  2. Resolve the existing bead or caller intent. Invoke Plan once only if the source needs shaping; Plan updates that source or proposes an amendment and creates no AgentOps packet. Without usable intent, report NOT_PLANNED. Before Implement or a fresh Validate, always bind the intent: a durable caller-owned source by reference and digest, or, only when no durable source exists, the exact resolved bytes snapshotted by the runtime under their digest.
  3. Invoke Implement once: one bounded experiment; the runtime derives subject identity and check receipts. With no subject built, report NOT_BUILT.
  4. Invoke Validate once in a context distinct from the author's, passing the intent reference and digest, exact subject manifest, receipts, validator identity, and freshness attestation.
  5. Enter the bounded repair phase: on FAIL or NOT_PROVEN with findings, repair the named findings and re-validate freshly while the law admits another round; stop when converged, stopped by the law, or out of repair_rounds. Persist verdict.v2 only when the caller requests machine-readable evidence or a declared consumer requires it.

NOT_PLANNED and NOT_BUILT are report statuses, never semantic verdicts. A caller may revise the intent and start a new invocation.

The convergence law

A repair round is admitted only while all hold:

  1. rounds_used < repair_rounds (caller-declared, default 2).
  2. The open finding set, keyed by stable findings[].id (union of the fresh and cross-family validators), is not larger than the previous round's.
  3. No finding id closed in an earlier round reopens.
  4. Between rounds the subject-manifest digest changed (generated-only changes count) or, for NOT_PROVEN, new digest-bound evidence resolved a named gap.

Converged: the fresh validator returns PASS and, on a risky surface, so does the cross-family validator. On any violation of 1-4 RPI stops and reports the current status. checked carries one line per round (repair round N: k open findings); open findings ride in the result and the report. A reworded finding with the same id is the same finding. Acceptance and its digest stay fixed: a repair moves the subject. The orchestrating context fixes; judge legs only read. No third judge, no escalation, no auto-replan.

Cross-family validation

Risky surfaces default to a cross-family fresh validator: cli/internal/gates/**, scripts/check-*.sh, tests/**, skills/*/scripts/**, skills/cc-hooks/policies/**, lib/**, .github/workflows/**, scripts/security-gate.sh. validate owns the dispatch table. No authorized live adapter means diversity_unsatisfied, which on a risky surface is NOT_PROVEN.

Waves

RPI executes one traversal. A multi-wave intent runs one wave per crank invocation: the caller selects the wave and the repair_rounds bound, crank forwards both, invokes RPI per lane, returns wave evidence, and stops. The caller selects each wave; RPI never extends the caller's bound.

Spiral breaker

The hard anti-ceremony dependency owns the quick guard; RPI reuses that judgment instead of turning each component, gate failure, or specialist comment into a new planning artifact, and one terminal goal may span several source owners as one bounded experiment.

The spiral breaker fires on a convergence-law violation, or when two consecutive rounds change neither the subject digest nor the digest-bound evidence, never on a verdict count: a FAIL or NOT_PROVEN under repair is progress; repeated control artifacts with no new implementation evidence are the spiral. Report NOT_BUILT when no subject exists; otherwise report the subject's current status without dispatching another lane, keeping the full integration check and fresh validation for the frozen subject.

Report

  1. Interactive response: return the result to the caller in natural language. This is the default assistant response.
  2. Machine artifact: return or persist the exact rpi-report.v1 object only when the caller requests machine-readable evidence or a declared adapter consumes it; schemas/rpi-report.v1.schema.json (repo checkout) owns its nine-key shape and status set.

Lead with the status and one sentence naming the caller-visible outcome, then the subject: paths changed, commits, test results, acceptance satisfied or remaining. A rising artifact count over an unchanged subject is a stop signal, not progress. Add only the strongest proof, material unchecked scope, and a clickable verdict reference when one exists; for NOT_PLANNED, NOT_BUILT, or a guard STOP, say why no subject exists in one sentence. One short paragraph or at most four bullets, ending with the evidence. When no machine artifact was requested, do not create a hidden one.

Signals

GitHub stars
434
Forks
40
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
rpi
Source
github.com/boshu2/agentops