Capability Matrix
September 1, 2026 · View on GitHub
This matrix tracks what ripr can currently do, which artifacts prove it, and
which roadmap item should move it next. It is intentionally capability-focused:
line count, warning count, and raw probe volume are not product success metrics.
The machine-readable source is metrics/capabilities.toml. Run
cargo xtask metrics for generated Markdown and JSON reports under
target/ripr/reports/.
For an adopter-facing summary of what is usable alpha, preview, scaffold, blocked, or deferred, see Support tiers. This matrix is the deeper proof map; the support-tier page is the first read for rollout boundaries.
Status values:
planned: designed but not implementedalpha: implemented with limited syntax-first evidenceusable alpha: implemented and dogfooded for bounded advisory use with known limitsstable: fixture-backed and expected to be reliable within documented scopecalibrated: compared against real mutation outcomes
| Capability | Status | Spec | Current evidence | Next checkpoint | Metric |
|---|---|---|---|---|---|
| Static exposure loop | alpha | RIPR-SPEC-0001 | sample diff, current CLI tests, boundary_gap fixture, weak_error_oracle fixture, FileFacts DTOs, lexical syntax adapter boundary, ra_ap_syntax parser-backed test/oracle extraction, module-qualified and impl-qualified owner symbols, parser-backed probe shape facts, unknown stop reason invariant, probe-relative oracle kind and strength, typed local flow sink facts, observed activation value facts including exact unconditional source-ordered Rust field assignments from same-file literal constants and bounded +/- integer offsets, negative controls for other owners/fields/constants/tests, control-flow nesting, and intervening mutable borrows, named field_assignment_value_unresolved fallback, missing discriminator facts, evidence-first human and JSON finding output, negative and metamorphic fixture baseline | test-efficiency-duplicate-discriminator-v1 | findings include changed behavior, class, evidence, and next step |
| Rust gap repair loop | usable alpha | RIPR-SPEC-0057 | Fixtures and output contracts prove bounded producer-owned Rust repair packets, verify routes, and before/after movement receipts; installed package and VS Code journeys prove the transaction surfaces when a valid route exists; metrics/rust-repair-trust/corpus.json is the governed real-repository authority and currently contains zero eligible attempts; cargo xtask rust-repair-trust-report preserves the zero denominator and reports limited_incomplete_input instead of inventing route-yield or success rates; cargo xtask check-support-tiers requires one canonical Rust gap repair row and hard-caps it at usable alpha until one promotion decision covers the full governed corpus and installed CLI/packaged VS Code pilot; a complete trust report with real movement cannot promote by itself; Support tiers keeps static movement, focused verification, receipts, runtime mutation, and broad real-repository usefulness as separate claims | dogfood/rust-route-quality-corpus | eligible governed Rust repair attempts, real improved or closed attempts, retained exclusions, and unestablished route-yield denominator |
| Unknown stop reasons | alpha | RIPR-SPEC-0001 | Campaign 3 manifest, domain unknown stop reason invariant, JSON stop_reasons output, human stop reasons output, boundary_gap fixture, evidence-first stop reason output section | test-efficiency-duplicate-discriminator-v1 | unknown findings include explicit stop reasons |
| Predicate probes | alpha | RIPR-SPEC-0001 | syntax-first probe generation, boundary_gap fixture, strong_boundary_oracle fixture, boundary_gap metamorphic fixtures, unrelated token negative fixture, FileFacts DTOs, lexical syntax adapter boundary, ra_ap_syntax parser-backed test/oracle extraction, module-qualified and impl-qualified owner symbols, parser-backed predicate probe shape facts, predicate branch to return-value flow tests, missing equality discriminator facts, evidence-first boundary gap output | test-efficiency-duplicate-discriminator-v1 | missing boundary discriminator detection |
| Error-path probes | alpha | RIPR-SPEC-0001 | sample error_path explain/context command, weak_error_oracle fixture, strong_error_oracle fixture, weak_error_oracle_assert_matches fixture, parser-backed error-path probe shape facts, probe-relative exact error variant vs broad error oracle classification, error variant flow sink tests, missing exact error variant discriminator facts, evidence-first weak error oracle output | test-efficiency-duplicate-discriminator-v1 | broad error checks distinguished from exact variants |
| Return-value probes | alpha | RIPR-SPEC-0001 | syntax-first scanner, weak_error_oracle fixture, strong_error_oracle fixture, parser-backed return and tail-expression probe shape facts, probe-relative exact value vs smoke oracle classification, binding to return-value flow tests | test-efficiency-duplicate-discriminator-v1 | exact vs smoke return oracle distinction |
| Call-deletion probes | alpha | RIPR-SPEC-0001 | syntax-first scanner, weak_error_oracle fixture, strong_error_oracle fixture, parser-backed call and side-effect probe shape facts, call effect flow sink tests | test-efficiency-duplicate-discriminator-v1 | side-effect or call boundary candidate named |
| Fixture laboratory | alpha | RIPR-SPEC-0002 | fixture spec, fixture/golden runner commands, primary behavior fixtures, opaque_fixture_builder fixture, fixtures/EXAMPLE_CORPUS.md defaults-first example index, negative fixture baseline, metamorphic fixture baseline, FileFacts DTOs, lexical syntax adapter boundary, ra_ap_syntax parser-backed test/oracle extraction, module-qualified and impl-qualified owner symbols, parser-backed probe shape facts, oracle-strength-v2 golden blessings | test-efficiency-duplicate-discriminator-v1 | fixture pass rate |
| Golden JSON output | alpha | RIPR-SPEC-0002 | schema reference, goldens check runner, boundary_gap check.json, weak_error_oracle check.json, opaque_fixture_builder check.json, evidence-first finding fields in check JSON, negative and metamorphic fixture check.json goldens | output-contract-matrix | golden output drift count |
| Golden human output | alpha | RIPR-SPEC-0002 | human output renderer, goldens check runner, boundary_gap human.txt, weak_error_oracle human.txt, opaque_fixture_builder human.txt, evidence-first human finding sections, negative and metamorphic fixture human.txt goldens | output-contract-matrix | golden output drift count |
| Context packet v1 | alpha | RIPR-SPEC-0003 | CLI context command, LSP ripr.collectContext compatibility path, LSP ripr.collectEvidenceContext schema 0.1 editor handoff packet for seam diagnostics with evidence path, missing discriminator, related test, suggested test, shared command templates, and static limits, framed LSP protocol smoke executing the context command against a published boundary-gap seam diagnostic, and VS Code e2e copying a live seam packet from the real server path | maintenance | packet includes missing discriminator and related tests |
| Agent context v2 | alpha | RIPR-SPEC-0003 | agent context spec, agent seam packet schema 0.3, LSP ripr.collectEvidenceContext schema 0.1 editor handoff packet carrying suggested assertion/test shape plus packet, brief, after-snapshot, verify, and receipt commands from shared templates, framed LSP protocol smoke executing the context command against a published boundary-gap seam diagnostic, and VS Code e2e copying live seam packet and verify command payloads from the real server path | maintenance | packet includes missing values and suggested assertions |
| Analysis modes | alpha | RIPR-SPEC-0001 | crates/ripr/src/analysis/workspace/select.rs mode scope tests, operator_mode_tiers_are_pinned_for_defaults_first_adoption pins instant, draft, fast, deep, and ready scopes, docs/CONFIGURATION.md maps fast, normal/default, and deep operator stances to concrete modes | reports/operator-cockpit | runtime and scope by mode |
| LSP diagnostics | alpha | RIPR-SPEC-0001, RIPR-SPEC-0046 | tower-lsp-server sidecar, stable diagnostic data payload, related test diagnostic information, diagnostic-targeted context action, diagnostic hover details, serialized refresh generations, VS Code status bar and ripr: Show Status path for disabled config, server resolution, workspace detection, server unavailable, queued/running/complete/stale/failed refreshes, and no-actionable-seam states, intent-titled diagnostic actions for inspect, write targeted test, agent handoff, verify after test, review receipt, and refresh analysis; when target/ripr/reports/gap-decision-ledger.json exists, LSP publishes only projection_eligibility.lsp_diagnostic GapRecord diagnostics with structured gap_id, repair route, anchor, and verification command payloads | maintenance | diagnostics carry finding/probe metadata, explicit GapRecord repair payloads, editor status names saved-workspace analysis state, and editor actions target the selected finding or gap |
| Typed command-spec LSP projection | alpha | RIPR-SPEC-0135 | crates/ripr/src/domain/command_spec.rs defines the typed CommandSpec contract; crates/ripr/src/lsp/gap_artifacts.rs validates producer-owned typed routes; crates/ripr/src/lsp/actions.rs projects only the matched ValidatedGapArtifact; tampered same-identity diagnostic payloads stay subordinate to the snapshot artifact; malformed, invalid, and role-mismatched typed routes fail closed; single-route and multi-route projection shapes are fixture-backed; docs/OUTPUT_SCHEMA.md documents the full CommandSpec contract and legacy compatibility | agent/typed-command-spec-projections | command_spec_projection_accepted_routes, command_spec_projection_omitted_fail_closed, command_spec_projection_multi_route_arrays |
| Editor actionable gap queue | alpha | RIPR-SPEC-0055 | RIPR-PROP-0013, RIPR-SPEC-0055, ADR-0017, and plans/editor-actionable-gap-queue/implementation-plan.md define the closed source-of-truth stack; LSP and VS Code tests validate actionable-gaps artifacts, Show Status queue state, Copy Current Repair Packet, and Copy Repo Gap Map; fixtures/editor_actionable_gap_queue pins top-gap, no-action, report-only, static-limit, stale, wrong-root, malformed, receipt-improved, and receipt-unchanged states; Editor actionable gap queue documents the local queue workflow and non-claims; dogfood receipts record actionable, no-action, fail-closed, receipt, and preview-boundary proof; closeout records validation and remaining limits | maintenance | editor_actionable_gap_queue_available, editor_actionable_gap_queue_top_gap_ready, editor_actionable_gap_queue_no_action, editor_actionable_gap_queue_report_only, editor_actionable_gap_queue_static_limit_only, editor_actionable_gap_queue_stale, editor_actionable_gap_queue_wrong_root, editor_actionable_gap_queue_malformed, editor_actionable_gap_queue_repair_packet_available, editor_actionable_gap_queue_repo_map_available, editor_actionable_gap_queue_actions_suppressed_unsafe_state, editor_actionable_gap_queue_receipt_improved, editor_actionable_gap_queue_receipt_unchanged |
| RIPR swarm repair loop | alpha | RIPR-SPEC-0057, RIPR-SPEC-0058 | RIPR-PROP-0014 explains why swarm work starts as a bounded repair loop over actionable canonical packets, RIPR-SPEC-0057 defines the repair-loop contract, RIPR-SPEC-0058 defines the external-agent handoff contract with packet-only input, operator review, patch/receipt metadata, and no provider SDK or autonomous merge, cargo xtask ripr-swarm plan --top <n> writes swarm-plan.{json,md} with swarm-ready packets, blocked packets, missing verify/receipt buckets, static-limitation blocking, high-confidence counts, and must-not-infer guardrails, cargo xtask ripr-swarm attempt --packet <id> --dry-run prints bounded packet context without editing files or running commands, cargo xtask ripr-swarm attempt-ledger writes swarm-attempt-ledger.{json,md} with durable attempt ids, packet/canonical ids, actor kind, receipt path, verify/receipt commands, before/after state, outcome, timestamp, latest-attempt projection, attempt-history summary, and orphaned receipts, cargo xtask ripr-swarm readiness writes blocked-state route examples, durable attempt-history summary, and field-level blocker next actions, docs/RIPR_SWARM_HUMAN_WORKFLOW.md documents the human/operator loop from packet selection through dry-run, repair, verify, receipt, and outcomes, docs/handoffs/2026-05-20-0.7-swarm-repair-loop-dogfood.md records live audit timeout handling with fail-closed packet suppression, fixture-backed packet planning, ready and static-limit dry-run attempts, verify/receipt command separation, and outcome joins for not-attempted, improved, unchanged, and orphaned receipt states, docs/handoffs/2026-05-20-0.7-release-readiness-closeout.md accepts the live swarm-repo audit timeout as a bounded 0.7 limitation, keeps the loop advisory/dry-run-first, and authorizes source promotion before source release proof, fixtures/swarm-plan-packet-corpus pins ready boundary/error/output packets plus static-limitation, missing verify, missing receipt, and missing must-not-change blocking cases, fixtures/actionable-gap-outcomes-corpus pins not-attempted, receipt-present, improved, unchanged, regressed, resolved, attempted-without-receipt, and orphaned-receipt outcome joins, and fixtures/python-real-repo-evals records tiny controlled, normal pytest app, async return-value, parametrized-boundary, CLI/output, log output, argparse CLI output, Click CLI output, Typer CLI output, CLI exit-code, pytest exception, custom exception, unittest exception, API status-code, API JSON detail, Flask route JSON detail, FastAPI route JSON detail, mixed, decorated-route, unittest return-value, unittest returned-dict field, and dataclass/model-field Python repair-card, agent-packet, verify, and closed outcome receipts plus dynamic-dispatch, mocked-module, opaque-custom-helper, property-based, and unresolved-fixture no-packet static-limit evals and no-related-test/already-observed/heuristic-only ordinary no-action evals without editing files, running tests, calling providers, generating tests, creating receipts, running mutation testing, changing PR/CI rendering, changing LSP/editor behavior, changing gates, or changing public badges | analysis/related-test-ranking-audit-fixes | swarm_ready_packets, swarm_blocked_packets, swarm_missing_verify_command, swarm_missing_receipt_command, swarm_static_limitation_packets, swarm_high_confidence_packets, swarm_attempt_ledger_attempts_total, swarm_attempt_history_attempts_total, swarm_attempt_history_durable_attempts_total, swarm_attempt_history_evidence_unchanged, swarm_attempt_history_attempted_no_receipt, swarm_attempt_history_expected_unchanged, swarm_attempted_packets, swarm_verified_improved, swarm_verified_unchanged, swarm_verified_regressed, swarm_failed_to_apply, swarm_orphaned_receipts, blocked_state_routes, blocked_state_route_examples, swarm_missing_allowed_edit_surface, swarm_missing_raw_evidence_refs, language_adapter_python_real_repo_eval_receipt |
| Lane 1 canonical actionability contract | alpha | RIPR-SPEC-0061 | RIPR-SPEC-0061 defines the rule that actionable means a safe bounded repair route with canonical identity, repair kind, target shape, verify command, receipt command, confidence, must-not-change boundaries, and raw evidence references; RIPR-SPEC-0021 defines canonical item identity, gap state, repair route, static limitations, raw spans, and receipt command compatibility; RIPR-SPEC-0056 keeps public projection deny-by-default when canonical identity, repair route, verify, receipt, freshness, or safety checks are missing; RIPR-SPEC-0057 blocks swarm-ready ranking for missing verify command, missing receipt command, static limitations, and missing must-not-change boundaries; test_grip_evidence::given_boundary_owner_call_when_input_operand_is_iterator_local_then_activation_is_static_limitation keeps idx >= offset style local/iterator operands as named static limitations without invented candidate values; test_grip_evidence::given_boundary_owner_call_when_input_operand_is_direct_parameter_alias_then_observed_values_are_resolved allows exact same-function local aliases of owner parameters to use the original owner-call argument; test_grip_evidence::given_boundary_owner_call_when_input_operand_is_computed_local_then_activation_stays_static_limitation keeps computed local operands as named limitations; evidence_record::evidence_record_normalizes_static_limitation_categories maps activation_owner_call_absent to analysis/owner-call-absence-triage, splits assertion-target affinity owner-call absence as activation_owner_call_absent_assertion_target_affinity routed to analysis/assertion-target-affinity-owner-call-tracing, evidence_record::evidence_record_routes_assertion_target_return_value_owner_call_absence_limitation splits return-value assertion-target owner-call absence to analysis/assertion-target-return-value-owner-call-tracing while preserving static-limitation status, splits call-presence target affinity owner-call absence as activation_owner_call_absent_call_presence_target_affinity routed to analysis/call-presence-target-affinity-owner-call-tracing, splits other affinity-only owner-call absence as activation_owner_call_absent_affinity_only routed to analysis/related-test-affinity-owner-call-tracing, splits same-file-only owner-call absence as activation_owner_call_absent_same_file_only routed to analysis/same-file-owner-call-tracing, and maps activation_boundary_input_unresolved to iterator, local/computed, and local-member analyzer repair routes; lane1_actionable_gap_packets_mark_public_projection_ready_with_receipt validates emitted public packets carry target_test_shape, receipt_command, confidence, raw evidence references, and must_not_change; LSP actionable-gaps validation rejects public packets missing those fields; test_grip_evidence::given_call_presence_when_unique_test_support_helper_calls_owner_then_activation_is_yes reduces activation_owner_call_unresolved for globally unique test-support helper owner calls; test_grip_evidence::given_call_presence_when_duplicate_test_support_helpers_share_owner_then_activation_is_yes reduces the same limitation when duplicate support-helper names share a common owner; test_grip_evidence::given_call_presence_when_ambiguous_support_helper_is_module_qualified_then_activation_is_yes reduces the limitation when an explicit module-qualified support-helper call disambiguates mixed helper names; test_grip_evidence::given_call_presence_when_crate_qualified_support_helper_calls_owner_then_activation_is_yes keeps the explicit qualified-helper route working for crate-qualified calls; test_grip_evidence::given_call_presence_when_test_local_helper_wraps_owner_call_in_option_then_activation_is_yes and test_grip_evidence::given_call_presence_when_test_local_helper_wraps_owner_call_in_result_then_activation_is_yes allow inert Some/Ok wrappers around direct helper owner calls; test_grip_evidence::given_call_presence_when_test_local_helper_unwraps_owner_call_result_then_activation_is_yes, test_grip_evidence::given_call_presence_when_test_local_helper_expects_owner_call_result_then_activation_is_yes, and test_grip_evidence::given_call_presence_when_test_local_helper_borrows_owner_call_result_then_activation_is_yes allow immediate bounded result handling through unwrap, expect, or as_ref().unwrap().clone() around result-returning direct helper owner calls; test_grip_evidence::given_call_presence_when_helper_wraps_owner_call_with_non_container_call_then_activation_stays_unknown keeps non-container wrappers limited; test_grip_evidence::given_call_presence_when_qualified_support_helper_targets_other_owner_then_no_helper_relation and test_grip_evidence::given_qualified_support_helper_only_in_comment_or_string_then_call_match_is_ignored keep qualified-helper matching deny-by-default; test_grip_evidence::given_call_presence_when_test_support_helper_name_is_ambiguous_then_activation_stays_unknown keeps ambiguous helper names limited; test_grip_evidence::given_call_presence_when_integration_test_calls_production_wrapper_then_activation_is_yes reduces owner-call absence when an integration test calls an unambiguous same-package production one-hop wrapper; test_grip_evidence::given_call_presence_when_multi_owner_production_wrapper_has_target_affinity_then_activation_is_yes reduces call-presence target-affinity owner-call absence when a same-package wrapper directly calls multiple owners and the assertion mentions the matching call target; test_grip_evidence::given_call_presence_when_multi_owner_wrapper_asserts_other_target_then_activation_stays_unknown keeps the route target-scoped; test_grip_evidence::given_call_presence_when_crate_qualified_wrapper_has_target_affinity_then_activation_is_yes reduces call-presence target-affinity owner-call absence when a production wrapper calls an indexed owner through an explicit crate::module::owner(...) path and the assertion mentions the matching call target; test_grip_evidence::given_call_presence_when_crate_qualified_wrapper_asserts_other_target_then_activation_stays_unknown and test_grip_evidence::given_call_presence_when_bare_qualified_wrapper_has_target_affinity_then_activation_stays_unknown keep the route target-scoped and crate-qualified only; test_grip_evidence::given_value_insensitive_seam_when_multi_owner_wrapper_has_target_affinity_then_activation_is_yes reduces assertion-target affinity owner-call absence for value-insensitive seams when a same-package wrapper directly calls multiple owners and the assertion mentions the matching target token; test_grip_evidence::given_value_insensitive_seam_when_multi_owner_wrapper_asserts_other_target_then_activation_stays_unknown keeps that route target-scoped; test_grip_evidence::given_call_presence_when_direct_owner_call_uses_turbofish_then_activation_is_yes and analysis::extract::calls::call_extraction_recognizes_turbofish_function_calls reduce activation_owner_call_unresolved for direct generic owner calls without inventing activation values; test_grip_evidence::given_call_presence_when_direct_owner_call_has_space_before_paren_then_activation_is_yes reduces activation_owner_call_unresolved for direct owner calls with whitespace before the call delimiter without inventing activation values; test_grip_evidence::given_call_presence_when_production_wrapper_name_is_ambiguous_then_activation_stays_unknown keeps duplicate production wrapper names with different owner-call targets limited; ripr_swarm_attempt_ledger_preserves_prior_attempts_and_highlights_latest and ripr_swarm_readiness_consumes_attempt_ledger_counts validate durable attempt history and readiness consumption while fresh readiness routes assertion-target return-value limitations separately and splits same-file receiver-method limitations to analysis/same-file-receiver-method-owner-call-tracing while fresh readiness leaves analysis/local-computed-boundary-operand-resolution as the next sampled work-queue proof | analysis/local-computed-boundary-operand-resolution | finding_alignment_actionable_items_total, finding_alignment_static_limitation_total, finding_alignment_canonical_items_without_repair_route, finding_alignment_canonical_items_without_verify_command, lane1_actionable_gap_packets, swarm_ready_packets, swarm_missing_verify_command, swarm_static_limitation_packets |
| Actionable surface translation | alpha | RIPR-SPEC-0059 | RIPR-PROP-0016 records the cross-surface product rationale, RIPR-SPEC-0059 defines the first-screen translation contract for badge, PR evidence, editor status, swarm dry-run, and outcome/trend surfaces, RIPR-PLAN-0059 records the completed PR sequence and proof commands, badge-basis output explains unresolved actionable static repair gaps with canonical_actionable_gap as the public basis, PR summary output starts with an advisory actionable repair front panel before raw path inventory, VS Code Show Status starts with an editor repair cockpit over current actionable state, top repair, verify command, receipt state, and fail-closed next action, ripr-swarm attempt --dry-run starts with a copy-ready operator packet and fails closed on prose-only edit targets, actionable-gap outcomes and evidence-quality trend reports include movement_front sections while keeping receipt-linked movement bounded to outcome artifacts, and closeout records validation, remaining advisory/static limits, and no selected successor | maintenance | repo_actionable_queue_count, pr_local_actionable_gap_count, actionable_gaps_new, actionable_gaps_resolved, actionable_gaps_blocked_static_limited, actionable_receipts_missing, actionable_receipts_orphaned, actionable_repairs_attempted_unchanged, swarm_ready_packets, outcome_delta_improved, outcome_delta_unchanged, outcome_delta_regressed, outcome_delta_resolved |
| Parser-backed syntax facts | alpha | RIPR-SPEC-0001 | ADR 0006, ra_ap_syntax dependency, RustSyntaxAdapter parser adapter, fixture/golden output stability, module-qualified and impl-qualified owner symbols, parser-backed probe shape facts, probe-relative oracle kind and strength, typed local flow sink facts, negative and metamorphic fixture baseline | test-efficiency-duplicate-discriminator-v1 | syntax extraction parity |
| AST-backed test/oracle extraction | alpha | RIPR-SPEC-0001 | ra_ap_syntax function extraction, parser-backed assertion macro extraction, unwrap/expect smoke-oracle tests, probe-relative OracleKind classification, fixture/golden output stability, flow sink classification tests, exact error metamorphic fixture, oracle-shape-v2 detection for field assertions, whole-object equality over struct literals, side-effect observers, mock expectations, and custom assertion helpers | campaign/modularization-stack-audit | oracle kind recognition rate |
| AST-backed probe ownership | alpha | RIPR-SPEC-0001 | module-qualified owner SymbolId tests, impl-qualified owner SymbolId tests, changed-line owner resolution tests, fixture/golden output stability, flow sink owner retention, unrelated-token negative fixture | test-efficiency-duplicate-discriminator-v1 | duplicate symbols do not cross-link tests |
| AST-backed probe generation | alpha | RIPR-SPEC-0001 | parser-backed predicate probe shape facts, parser-backed return and tail-expression probe shape facts, parser-backed error-path probe shape facts, parser-backed call, side-effect, field, and match probe shape facts, parser-backed match probe shape facts carry normalized match heads and arm patterns so canonical gap identity can distinguish match-arm discriminators, fixture/golden output stability, probe-relative oracle kind and strength, typed local flow sink facts, negative and metamorphic fixture baseline | test-efficiency-duplicate-discriminator-v1 | syntax facts generate current probe families |
| Local delta flow | stable | RIPR-SPEC-0001 | FlowSinkKind domain contract labels, FlowSinkFact attached to findings, predicate branch to return-value flow tests, error variant flow sink tests, side-effect event/outbound call, state write, persistence write, log message, config change, and generic call-effect sink tests, match-arm result flow sink tests, binding to return-value flow tests, propagation_unknown stop reason regression test, missing discriminator facts tied to flow sinks, evidence-first flow sink output, negative and metamorphic fixture baseline, and Lane 1 tracker documented scope for supported syntax-first sink families and explicit static limitations | maintenance | flow sink identification rate |
| Activation/value modeling | stable | RIPR-SPEC-0001 | ValueContext domain contract labels, observed ValueFact records, MissingDiscriminatorFact records, boundary equality BDD tests, exact error variant gap BDD tests, boundary_gap fixture, weak_error_oracle fixture, snapshot_oracle fixture, strong_boundary_oracle fixture, syntactic value resolution for let bindings, same-file constants, table rows, rstest cases, builder/fixture overrides, enum variants, Option/Result constructors, and source-order-scoped same-test struct literal field projections, negative guards for comment/string shadows, cross-file constants, unresolved helpers, unrelated builder methods, helper-built structs, before-call shadowed struct bindings, fixture parameter collisions, common non-let binders, non-simple let pattern binders, and non-literal struct fields, evidence-first activation output, and Lane 1 tracker documented scope for supported syntax-first value sources plus explicit static limitations | maintenance | detected and missing value facts |
| Test efficiency and vacuity signals | alpha | RIPR-SPEC-0004 | test efficiency spec, Campaign 4A manifest, cargo xtask test-efficiency-report, advisory test-efficiency Markdown and JSON reports, xtask test-efficiency ledger unit tests, test-efficiency reason counts for smoke-only, broad, disconnected, opaque, circular, and likely-vacuous signals, duplicative class and duplicate_activation_and_oracle_shape reason, duplicate_groups report section with role-aware activation signature, stable metrics object with tests_scanned, class_counts, reason_counts, and duplicate_discriminator_group_count | campaign/modularization-stack-audit | tests_scanned, class_counts (strong_discriminator, useful_but_broad, smoke_only, likely_vacuous, possibly_circular, duplicative, opaque), reason_counts (including duplicate_activation_and_oracle_shape), and duplicate_discriminator_group_count |
| Repo seam inventory | alpha | RIPR-SPEC-0005 | crates/ripr/src/analysis/seam_inventory.rs, deterministic seam IDs, repo-seams.json/md via cargo xtask repo-seam-inventory | campaign/modularization-stack-audit | seams classified per production file |
| Test grip evidence | alpha | RIPR-SPEC-0005 | crates/ripr/src/analysis/test_grip_evidence.rs, crates/ripr/src/analysis/value_resolution.rs, reach/activate/propagate/observe/discriminate per seam, RelatedTestGrip with oracle kind and strength, value-extraction-v2 BDD coverage for bindings, constants, rstest cases, table rows, builder and fixture override methods, Option/Result constructors, direct owner calls for value-insensitive seams including opaque-argument calls, and negative false-positive guards that keep predicate-boundary checks on concrete activation values, oracle-shape-v2 side-effect observer seam evidence, related-test ranking v2 by relation confidence, relation reason, oracle strength, activation overlap, and stable file/name/line tie-breakers while preserving related_tests_total, oracle-semantics-v3 explanations for what broad, smoke-only, unknown, snapshot, exact-value, exact-error, whole-object, and side-effect oracle shapes observe, miss, and can upgrade, and audit guards that keep opaque custom helpers unknown and duplicative equality weak instead of overclaiming exact-value grip | analysis/local-delta-flow-v2 | per-stage evidence cited per seam |
| Seam grip classification | alpha | RIPR-SPEC-0005 | crates/ripr/src/analysis/seam_classification.rs, 11-class enum + headline-eligibility table, BDD coverage | campaign/modularization-stack-audit | classification matches priority-ordered rules |
| Repo exposure report | alpha | RIPR-SPEC-0005 | crates/ripr/src/output/repo_exposure.rs, schema 0.3, repo-exposure.json/md via cargo xtask repo-exposure-report, additive seams[].evidence_record, bounded repo-exposure latency diagnostics via cargo xtask repo-exposure-latency-report, repo file-fact cache reuses parser/file facts under target/ripr/cache/repo-file-facts/0.1 without caching rendered outputs, and full repo evidence reuses precomputed related-test context plus seam-independent value-resolution facts | campaign/hot-sidecar-latency-closeout | per-class metric buckets stable across runs |
| Evidence record | stable | RIPR-SPEC-0021 | docs/specs/RIPR-SPEC-0021-evidence-record.md, docs/lanes/LANE_1_EVIDENCE_SPINE.md, docs/lanes/LANE_1_EVIDENCE_ACCURACY.md, crates/ripr/src/output/evidence_record.rs, crates/ripr/src/analysis/canonical_gap.rs, seams[].evidence_record in repo-exposure schema 0.3, generated canonical_gap_id/group size/reason for headline-eligible gaps, additive raw_findings and canonical_item alignment fields plus nullable presentation_text projection, match-arm discriminator splitting and same-arm line-movement grouping tests, agent seam packet projection, RIPR Zero repair-route consumption when supplied, targeted-test outcome and agent verify movement consumption, assistant-proof selected-seam/recommendation/movement consumption, baseline canonical gap identity routing, PR evidence ledger canonical gap identity projection, gate baseline comparison using supplied canonical evidence identity as the final consumer closeout, Evidence Accuracy Evaluation and Evidence Quality Leadership closeouts for audit-first evidence quality work, docs/OUTPUT_SCHEMA.md evidence_record schema 0.1, unit tests for identity, generated canonical gap identity, grip class, evidence path, recommendation/actionability, calibration placeholder, raw finding support, canonical item gap state/actionability/repair/confidence, nullable presentation text, normalized static limitation category/repair-route fields, oracle semantics including opaque custom-helper and duplicative-equality guards, packet projection, RIPR Zero routing, evidence-record movement routing, assistant-proof evidence-record routing, canonical gap identity routing, related-test ranking v2 contract, fixtures/boundary_gap/expected/evidence-record-contract/corpus.json contract matrix with related-test oracle_semantics, fixtures/boundary_gap/expected/evidence-quality-failures/corpus.json audit-derived expected evidence_record subsets for duplicate canonical groups, match-arm overgrouping reduction, equality-boundary misses, activation static limitations, mock-expectation observer semantics, and no-runtime-data calibration gaps, and xtask validators for the corpus shape plus schema version | maintenance | evidence_record_projected_seams, evidence_record_actionable_guidance, evidence_record_static_limitations, evidence_record_static_limitation_categories, evidence_record_finding_alignment_fields |
| Evidence health report | alpha | RIPR-SPEC-0015 | crates/ripr/src/output/evidence_health.rs, ripr evidence-health, cargo xtask evidence-health, grip class counts, per-stage state counts, missing discriminator counts, observed value context counts, related-test confidence counts, oracle kind/strength counts, opaque-oracle counts, top static limitations, optional imported calibration availability counts, durable Lane 1 audit fields derived from the shared evidence_record: canonical gap group totals, largest groups, duplicate-looking groups, actionability classes, static limitation reason/stage/category distributions, evidence-record calibration coverage, movement availability, and top evidence-quality risks, a 4-minute default xtask child-process timeout, bounded evidence_health_timeout, evidence_health_incomplete, or evidence_health_runner_error fallback artifacts when the xtask child process times out, exits before a complete report is available, or the runner cannot start/capture/poll/read the child and records inputs.generation.status = "runner_error", and structured repo-exposure latency trace totals/tail rows on limited artifacts for phase diagnostics | maintenance | evidence_health_seams_total, evidence_health_missing_discriminators_total, evidence_health_observed_values_total, evidence_health_related_tests_total, evidence_health_opaque_oracle_count, evidence_health_calibration_matched_total, evidence_health_canonical_gap_groups, evidence_health_duplicate_looking_groups, evidence_health_records_with_canonical_gap_id, evidence_health_static_limitation_reasons, evidence_health_static_limitation_categories, evidence_health_calibration_not_imported, evidence_health_top_evidence_quality_risks, evidence_health_timeout_limitations, evidence_health_incomplete_limitations, evidence_health_runner_error_limitations |
| Lane 1 evidence quality audit | alpha | RIPR-SPEC-0031 | docs/specs/RIPR-SPEC-0031-lane1-evidence-quality-audit.md defines the repo-local audit contract, cargo xtask lane1-evidence-audit writes target/ripr/reports/lane1-evidence-audit.json, lane1-evidence-audit.md, actionable-gaps.json, and actionable-gaps.md from generated instant-mode repo-exposure JSON or a bounded lane1_repo_exposure_timeout warning artifact with latency trace context, samples 5,000 repo-exposure seams by default with a named lane1_repo_exposure_sampled limitation and RIPR_LANE1_EVIDENCE_AUDIT_SAMPLE_SEAMS=0 full-run override, uses a 240-second default repo-exposure generation budget configurable with RIPR_LANE1_EVIDENCE_AUDIT_TIMEOUT_MS to fail closed before cold live runs can abort without reports, preflights target/ripr/cache against RIPR_LANE1_EVIDENCE_AUDIT_MAX_CACHE_GB and emits lane1_repo_exposure_large_cache_preflight_skip with a cache report/gc repair route when existing cache state is too large to trust as a full input, emits shared run_status/runtime_status fields for full, timeout, runner-failure, large-cache, incomplete-input, sampled-input, and stale-input states, xtask/src/run.rs streams generated repo-exposure stdout into the Lane 1 capture file with runner-owned byte counts and stale-file overwrite, cargo xtask evidence-quality-audit is a compatibility alias for the same report, xtask/src/main.rs summarizes raw headline gaps, canonical gap groups, duplicate-looking groups, missing discriminator classes, static limitations by reason/stage/category/repair route, oracle semantics, related-test ranking confidence, movement availability, calibration availability, evidence_record field health, top files by unresolved evidence debt, a finding_alignment.summary derived from evidence_record.canonical_item, finding_alignment.coverage rows for per-class alignment coverage, runtime confidence rows by canonical evidence class, unaligned examples, same-line duplicate raw findings, unnamed static-unknown limitations, and missing repair/verify guidance, actionable gap top lists by class, file, repair kind, missing discriminator kind, static limitation reason, and guidance-unknown class, and bounded actionable-gap packets with repair and verify commands, docs/OUTPUT_SCHEMA.md documents the Lane 1 Evidence Quality Audit JSON, Markdown, and actionable-gap packet contracts, xtask unit tests pin audit counting, derived finding-alignment counts, alignment coverage holes, runtime confidence by class, actionable top lists, actionable-gap packet projection, sampled-input limitations, bounded timeout limitations, large-cache preflight limitations, Markdown sections, malformed input handling, command alias parsing, and report facade routing, fixtures/boundary_gap/expected/evidence-quality-failures/corpus.json turns the first audit findings into expected evidence_record subsets before analyzer behavior changes, the first audit-driven analyzer improvement split parser-backed match-arm discriminators, reducing duplicate-looking groups from 1287 to 926 and removing the generic match-arm duplicate group from the top rows, and the Lane 1 Evidence Quality Leadership closeout records the resulting audit-to-fixture-to-repair-to-trend loop | maintenance | lane1_evidence_audit_raw_headline_gaps, lane1_evidence_audit_canonical_gap_groups, lane1_evidence_audit_duplicate_looking_groups, lane1_evidence_audit_missing_discriminators, lane1_evidence_audit_static_limitations, lane1_evidence_audit_static_limitation_categories, lane1_evidence_audit_uncalibrated_records, lane1_evidence_audit_run_limitations, lane1_report_run_status, finding_alignment_raw_signals_total, finding_alignment_canonical_items_total, finding_alignment_actionable_items_total, finding_alignment_static_limitation_total, finding_alignment_coverage_by_class, finding_alignment_unaligned_raw_findings_by_class, finding_alignment_static_unknown_without_named_limitation, finding_alignment_canonical_items_without_repair_route, finding_alignment_canonical_items_without_verify_command, top_actionable_gap_classes, top_actionable_files, top_repair_kinds, top_missing_discriminator_kinds, top_static_limitation_reasons, top_verify_command_unknowns, top_repair_route_unknowns, lane1_actionable_gap_packets, lane1_runtime_confidence_by_class |
| Evidence quality scorecard | alpha | RIPR-SPEC-0034 | cargo xtask evidence-quality-scorecard writes target/ripr/reports/evidence-quality-scorecard.json and evidence-quality-scorecard.md from the current Lane 1 evidence-quality audit, optional evidence-health JSON, previous scorecard when present, capability metadata, and traceability metadata; xtask/src/main.rs reports class-scoped maturity labels, raw headline gaps, canonical and duplicate-looking group signals, static limitation categories, missing discriminator classes, related-test confidence, oracle semantics distribution, movement availability, calibration coverage including runtime confidence rows by evidence class, actionable gap top lists, recommended Lane 1 repair slices, recent deltas, limited-input unknowns, explicit unknowns, shared run_status/runtime_status, and raw-to-canonical/actionability counts from the audit-derived finding_alignment.summary; docs/OUTPUT_SCHEMA.md documents the scorecard JSON and Markdown contract; xtask unit tests pin required JSON sections, Markdown sections, maturity labels, runtime confidence by class, actionable gap top-list propagation, bounded input limitation unknowns, risk-prioritized repair ordering, recent delta reporting, and the audit canonical-item fallback; the Lane 1 Evidence Quality Leadership closeout records scorecard use across benchmark, analyzer, calibration, and trend slices | maintenance | lane1_evidence_scorecard_maturity_classes, lane1_evidence_scorecard_top_risks, lane1_evidence_scorecard_recommended_repairs, lane1_evidence_scorecard_static_only_classes, lane1_evidence_scorecard_calibrated_classes, lane1_evidence_scorecard_uncalibrated_classes, lane1_evidence_scorecard_recent_delta_available, lane1_evidence_scorecard_limited_input_unknowns, lane1_evidence_scorecard_runtime_confidence_by_class, lane1_report_run_status, finding_alignment_raw_signals_total, finding_alignment_canonical_items_total, finding_alignment_actionable_items_total, finding_alignment_static_limitation_total, top_actionable_gap_classes, top_actionable_files, top_repair_kinds, top_missing_discriminator_kinds, top_static_limitation_reasons |
| Evidence quality trend | alpha | RIPR-SPEC-0034 | cargo xtask evidence-quality-trend writes target/ripr/reports/evidence-quality-trend.json and evidence-quality-trend.md from the current scorecard plus an optional previous scorecard or audit snapshot; missing history is reported as an explicit no-history unknown; xtask/src/main.rs distinguishes improvement, regression, unchanged, mixed, and unknown trend states for Lane 1 evidence-quality metrics and static limitation categories while preserving shared run_status/runtime_status, without redefining RIPR scores or changing analyzer, gate, PR/CI, LSP/editor, generated-test, provider, or runtime-execution behavior; docs/OUTPUT_SCHEMA.md documents the trend JSON and Markdown contract; focused xtask tests pin no-history output, direction semantics, and static limitation category deltas; the Lane 1 Evidence Quality Leadership closeout keeps trend reporting repo-local and non-blocking | maintenance | lane1_evidence_trend_actionable_canonical_gaps, lane1_evidence_trend_compared_metrics, lane1_evidence_trend_improved_metrics, lane1_evidence_trend_regressed_metrics, lane1_evidence_trend_unchanged_metrics, lane1_evidence_trend_unknown_metrics, lane1_evidence_trend_no_history, lane1_report_run_status, lane1_evidence_trend_static_limitation_category_rows |
| Evidence quality benchmark corpus | alpha | RIPR-SPEC-0035 | fixtures/evidence-quality-benchmark/corpus.json defines a manifest-only Lane 1 benchmark corpus with duplicate canonical gap, match-arm discriminator split, wrong related-test top choice, broad versus exact error oracle, self-computed expected value and duplicative equality guards, value-insensitive owner-call activation for no-argument and opaque-argument calls, opaque helper limitation, cross-file constant limitation, presentation text constants, config/policy constants including behavior selectors with and without discriminators, side-effect observer, snapshot discriminator, mock expectation, runtime-only signal, and ambiguous runtime join cases; each case names expected claims, must-not-claim guards, expected repo-exposure evidence-record subsets or runtime-only nonstatic calibration, audit signals, maturity scope, and repair route; xtask/src/main.rs validates the corpus through cargo xtask check-fixture-contracts, excludes the manifest-only corpus from the BDD fixture runner, and pins required config/policy case IDs, required case kinds, missing guard detection, runtime-only nonstatic behavior, and line-movement identity with focused unit tests; the Lane 1 Evidence Quality Leadership closeout records the benchmark as the guardrail for future fixture-first repairs | maintenance | lane1_evidence_benchmark_cases, lane1_evidence_benchmark_positive_cases, lane1_evidence_benchmark_negative_guards, lane1_evidence_benchmark_line_movement_cases, lane1_evidence_benchmark_equivalent_code_cases, lane1_evidence_benchmark_static_limitation_cases, lane1_evidence_benchmark_calibration_cases, lane1_evidence_benchmark_must_not_claim_guards |
| Presentation text evidence | stable | RIPR-SPEC-0043 | docs/specs/RIPR-SPEC-0043-presentation-text-evidence.md defines the planned Lane 1 evidence class for changed presentation/help/report/table text, including visibility, observer shape, actionability, canonical declaration/literal grouping, static limitation categories, and must-not-claim guards; docs/proposals/RIPR-PROP-0005-user-visible-output-evidence.md and docs/lanes/LANE_1_USER_VISIBLE_OUTPUT_EVIDENCE.md keep the work scoped away from PR/CI rendering, LSP/editor polish, gate policy, generated tests, provider calls, mutation execution, and score redefinition; fixtures/evidence-quality-benchmark/corpus.json#presentation_text_constant_visibility_unknown pins the screenshot-derived declaration/literal grouping and visibility-unknown static limitation guard; fixtures/evidence-quality-benchmark/corpus.json#presentation_text_observer_unknown_alignment pins likely-visible text with unsupported observer topology as a named limitation; crates/ripr/src/output/json/finding_alignment.rs groups supported presentation-like &str constant declarations and adjacent string literals into one finding_alignment.items[] canonical item while preserving raw findings[]; focused JSON tests pin grouping, line-movement identity, non-collision, unsupported string guards, conservative help/report sink detection, golden/snapshot observer detection, internal-only no-action labels, visibility-unknown limitations, concrete repair-kind/target-test-type/suggested-assertion fields, and no mutation-first repair language; xtask/src/main.rs carries presentation-text outcome counts into evidence-quality scorecard and trend reports; docs/handoffs/2026-05-14-presentation-text-consumer-handoff.md documents downstream consumer expectations for canonical items, supporting raw findings, evidence states, policy overlays, and must-not-infer boundaries; docs/handoffs/2026-05-14-user-visible-output-evidence-closeout.md records the documented stable scope and remaining unsupported routes | maintenance | presentation_text_total, presentation_text_user_visible, presentation_text_observed, presentation_text_unobserved, presentation_text_internal_only, presentation_text_visibility_unknown, presentation_text_observer_unknown, presentation_text_duplicate_groups, presentation_text_actionable_snapshot, presentation_text_no_action, presentation_text_static_limitations |
| Finding-to-gap alignment | stable | RIPR-SPEC-0045 | docs/specs/RIPR-SPEC-0045-finding-to-gap-alignment.md defines the Lane 1 contract for preserving raw findings as supporting evidence while rolling them up into canonical evidence items with state, actionability, reason, repair, verification, static limitations, and confidence; fixtures/evidence-quality-benchmark/corpus.json pins manifest-only raw-to-canonical presentation-text and config/policy cases for actionable, already-observed, internal-only, static-limitation, observer-unknown, behavior-discriminator, line-movement, and non-collision states; crates/ripr/src/output/evidence_record.rs now emits additive raw_findings[], canonical_item, and nullable presentation_text fields from existing static seam facts; crates/ripr/src/output/repo_exposure.rs preserves current seam fields while carrying the alignment fields; crates/ripr/src/output/json/finding_alignment.rs projects supported presentation-text and config/policy declaration/literal groups, including behavior selectors, into fixture-backed visible, observed, internal-only, visibility-unknown, and behavior-discriminator item states with concrete repair routes for downstream consumers; xtask/src/main.rs reports raw-to-canonical ratio, duplicate groups, actionable, no-action, static-limitation, calibrated-support, presentation-text, and config/policy counts in evidence-quality scorecard and trend outputs; docs/OUTPUT_SCHEMA.md documents the additive output contract; docs/handoffs/2026-05-14-presentation-text-consumer-handoff.md documents canonical evidence items as the downstream user-facing unit and raw findings as supporting evidence; docs/handoffs/2026-05-14-user-visible-output-evidence-closeout.md records the class-scoped closeout boundary | maintenance | finding_alignment_raw_findings_total, finding_alignment_raw_signals_total, finding_alignment_canonical_items_total, finding_alignment_raw_to_canonical_ratio, finding_alignment_duplicate_groups_total, finding_alignment_actionable_items_total, finding_alignment_actionable_unresolved_canonical_gaps, finding_alignment_already_observed_total, finding_alignment_internal_only_total, finding_alignment_internal_no_action_total, finding_alignment_static_limitation_total, finding_alignment_unknown_total, finding_alignment_calibrated_supported_total, finding_alignment_uncalibrated_total, finding_alignment_visibility_unknown_total, finding_alignment_presentation_text_actionable_total, config_policy_actionable_behavior_discriminator, config_policy_repair_route_coverage, config_policy_verify_command_coverage |
| Gap decision ledger | alpha | RIPR-SPEC-0046 | docs/specs/RIPR-SPEC-0046-gap-decision-ledger.md defines the typed decision layer between evidence classes and projection surfaces; fixtures/gap-decision-ledger/corpus.json pins GapRecord vocabulary, projection eligibility, safe gate predicates, output-contract repair, missing-artifact regeneration, preview ineligibility, and receipt movement cases; crates/ripr/src/output/gap_decision_ledger.rs renders advisory gap_decision_ledger JSON and Markdown from explicit GapRecord input; ripr reports gap-ledger --records ... writes the report without rerunning analysis or changing downstream projection behavior; ripr reports gap-ledger --check-output ... derives PR-local MissingOutputContract records from presentation-text finding_alignment.items[] with AddOutputGolden repair guidance and cargo xtask goldens check verification, and derives preview Python and TypeScript repair records from actionable python_repair_card and complete typescript_repair_packet findings with canonical gap IDs, suggested test files, verify commands, receipt commands, stop conditions, and preview authority boundaries; ripr first-action --gap-ledger ..., ripr pr-ledger record --gap-ledger ..., ripr zero status --gap-ledger ..., ripr gate evaluate --gap-ledger ..., ripr review-comments --gap-ledger ..., ripr agent packet --gap-ledger ... --gap-id ..., ripr swarm queue --gap-ledger ... --language python, LSP gap diagnostics, and repo-badge formats with --gap-ledger can consume explicit policy-backed gap records while preserving advisory/default-off behavior; docs/FIRST_PR_WORKFLOW.md documents the first successful PR loop from one repairable stable Rust or preview Python/TypeScript gap to one focused proof and receipt; docs/OUTPUT_SCHEMA.md documents the implemented output shape | maintenance | gap_decision_records_total, gap_decision_repairable_total, gap_decision_static_limitation_total, gap_decision_no_action_total, gap_decision_missing_artifact_total, gap_decision_projection_pr_comment_eligible, gap_decision_projection_gate_candidate, gap_decision_projection_agent_packet_eligible, gap_decision_ripr_zero_target_count, gap_decision_ripr_plus_target_count, gap_decision_preview_ineligible_total, gap_decision_receipt_improved_total, gap_decision_receipt_unchanged_after_attempt_total, gap_decision_missing_output_contract_total |
| Agent seam packets | alpha | RIPR-SPEC-0005 | crates/ripr/src/output/agent_seam_packets.rs, schema 0.3, write_targeted_test + inspect_static_limitation tasks via cargo xtask agent-seam-packets, ranked related-test fields, recommended_test, nearest_strong_test_to_imitate, candidate_values, assertion_shape, patterns_to_imitate, patterns_to_avoid, confidence, additive packets[].evidence_record, GapRecord packet safety scope with allowed_files, forbidden_files, conflict_group, receipt_command, receipt_status, and fixtures/boundary_gap/expected/editor-agent-loop/agent-packet.json | maintenance | packet carries missing discriminator + suggested assertion templates |
| Agent loop status | alpha | RIPR-SPEC-0011 | ripr agent status --root . --json reports before snapshot, after snapshot, agent brief, agent packet, agent verify, and agent receipt artifact state without rerunning analysis; ripr agent status --root . emits Markdown for CI/reviewer packets; ripr agent start --root . --seam-id <id> --out target/ripr/workflow writes workflow.json, commands.md, and agent-brief.json as a source-edit-free selected-seam workflow packet; ripr agent packet --root . --gap-ledger <path> --gap-id <id> --json renders one explicit agent-packet-eligible GapRecord as an advisory repair packet without rerunning analysis; crates/ripr/src/agent/loop_commands.rs centralizes current workflow, pilot, and editor-agent artifact paths plus packet, brief, snapshot, verify, receipt, status, review-summary, outcome, and start command templates; crates/ripr/src/app/agent_status.rs recovers seam_id from receipt, verify, packet, or brief JSON and emits missing-input commands; crates/ripr/src/app/agent_workflow.rs builds selected-seam workflow manifests; crates/ripr/src/output/agent_workflow.rs renders workflow JSON and commands Markdown; ripr agent receipt --root . --verify-json <agent-verify-json> --seam-id <id> --json emits schema 0.3 provenance with before/after/verify artifact SHA-256 hashes, static boundary flags, and structured next-action guidance; ripr agent review-summary --root . joins existing status, workflow, receipt, cockpit, repo exposure, optional LSP cockpit, and local CI artifact state into compact Markdown; ripr agent review-summary --root . --json emits Agent Review Summary schema 0.1; generated GitHub CI uploads target/ripr/workflow status, workflow, packet, brief, verify, and review-summary artifacts plus target/ripr/reports/agent-receipt.json and operator cockpit artifacts as advisory evidence; docs/LLM_OPERATOR_GUIDE.md documents the source-edit-free operator loop and anti-goals; crates/ripr/src/app/agent_review_summary.rs renders review-summary JSON and Markdown without rerunning analysis; fixtures/boundary_gap/expected/llm-work-loop pins happy, unchanged, regressed, missing-artifact, stale-artifact, configured-off, path-with-spaces, and Windows-separator loop cases; crates/ripr/src/agent/provenance.rs hashes receipt artifacts with SHA-256; crates/ripr/src/output/agent_receipt.rs renders receipt provenance and structured next-action guidance without rerunning analysis; crates/ripr/src/lsp/actions.rs, crates/ripr/src/output/agent_brief.rs, crates/ripr/src/output/pilot/mod.rs, crates/ripr/src/cli/commands.rs, and xtask/src/reports/operator.rs reuse the shared templates for existing command payloads without changing output text; crates/ripr/src/cli/agent.rs parses the status, start, and review-summary subcommands; docs/OUTPUT_SCHEMA.md Agent Status, Agent Workflow Manifest, Agent Receipt, and Agent Review Summary sections; docs/specs/RIPR-SPEC-0011-llm-work-loop.md; cargo test -p ripr agent | maintenance | agent status, workflow packets, provenance-backed receipts, reviewer summaries, generated CI uploads, and the operator guide name artifacts, commands, selected seam context, recovered seam_id, stale-looking warnings, hashes, bounded next actions, joined surfaces, and source-edit-free boundaries |
| PR test guidance annotations | alpha | RIPR-SPEC-0012 | docs/specs/RIPR-SPEC-0012-pr-test-guidance.md pins the advisory PR annotation and optional review-comment contract; docs/OUTPUT_SCHEMA.md PR Test Guidance section defines the review-comments JSON shape; docs/PR_REVIEW_GUIDANCE.md documents the command, generated CI behavior, placement-safe reviewer loop, fixture matrix, and inline-comment opt-in boundary; ripr review-comments --root . --base <sha> --head <sha> --out target/ripr/review/comments.json writes JSON plus Markdown without posting to GitHub; ripr review-comments --gap-ledger ... renders changed-line repair cards only from PR-comment-eligible GapRecord records without rerunning analysis; crates/ripr/src/output/review_comments.rs renders bounded line annotations, GapRecord repair cards, summary-only fallbacks, cap suppression, nearby-test suppression, LLM guidance, and static limits; crates/ripr/src/output/pr_inline_comment_publish_plan.rs renders repair_card bodies as repair instructions instead of raw classification labels or confidence scores; crates/ripr/src/cli/commands.rs exposes the command and parses required revisions plus optional gap-ledger input; docs/CI.md PR Test Guidance Annotations section documents the default job-summary and check-annotation posture; ripr init --ci github generates an advisory workflow that runs ripr review-comments on pull requests, writes a RIPR advisory summary, and emits non-blocking changed-line check annotations when target/ripr/review/comments.json exists; crates/ripr/src/cli/commands.rs::init_generated_github_workflow_matches_smoke_fixture pins generated workflow artifact paths, top-seam extraction, review-comments execution before summary and annotation consumers, advisory posture, optional SARIF gates, badge output, summary sections, and annotation hooks; fixtures/boundary_gap/expected/pr-guidance pins exact-line, owner-function-line, same-file-line, summary-only, capped, configured-off, and changed-test-skip JSON and Markdown outputs; docs/handoffs/2026-05-08-campaign-13-closeout.md records the closeout proof and non-goals | editor/gap-work-packet-projection | PR guidance projects existing seam evidence into bounded changed-line annotations without blocking by default |
| Recommendation calibration report | alpha | RIPR-SPEC-0013 | docs/specs/RIPR-SPEC-0013-recommendation-calibration-report.md defines the recommendation calibration report contract; docs/OUTPUT_SCHEMA.md Recommendation Calibration Report section defines the JSON shape; docs/OUTPUT_SCHEMA.md Review Guidance Outcome Receipt section defines the optional local receipt shape; docs/RECOMMENDATION_CALIBRATION.md explains how to run and read the report, outcome receipts, placement quality, suppression correctness, static movement buckets, and advisory limits; cargo xtask recommendation-calibration emits advisory JSON and Markdown reports; xtask/src/reports/recommendation.rs joins PR guidance, expectations, optional outcome receipts, suppression state, target placement, latency, and static movement; fixtures/boundary_gap/expected/recommendation-calibration/expectations.json pins PR-shaped calibration expectations; fixtures/boundary_gap/expected/recommendation-calibration/outcome-receipts/ pins optional local outcome receipt examples; fixtures/boundary_gap/expected/recommendation-calibration/recommendation-calibration.{json,md} pins checked report output; docs/handoffs/2026-05-08-campaign-14-closeout.md records the Recommendation Calibration PR chain and deferred policy boundary | maintenance | recommendation calibration counts usefulness, false annotations, summary-only correctness, suppression correctness, target-file correctness, latency, static improved, unchanged, or regressed movement, and unknown outcomes without telemetry or CI blocking |
| Calibrated gate policy | alpha | RIPR-SPEC-0014 | docs/specs/RIPR-SPEC-0014-calibrated-gate-policy.md defines optional visible-only, acknowledgeable, baseline-check, and calibrated-gate modes; ripr gate evaluate writes gate-decision JSON/Markdown from existing PR guidance or explicit gap decision ledger records plus optional labels, baseline, recommendation calibration, and imported mutation calibration inputs; ripr gate evaluate --gap-ledger consumes repairable stable Rust GapRecord gate candidates that satisfy the safe gate predicate instead of deriving blocking authority from raw static labels; gate baseline comparison prefers supplied canonical_gap_id from direct, identity, or evidence_record fields before legacy identities; crates/ripr/src/output/gate.rs keeps the evaluator read-only and returns non-zero only after writing blocked or config_error reports; fixtures/boundary_gap/expected/calibrated-gate pins advisory, acknowledged, baseline-check, high-confidence blocking, suppression, missing-input, and calibration disagreement decisions; ripr init --ci github generates optional gate evaluation only when RIPR_GATE_MODE is explicitly configured and uploads gate-decision artifacts with the advisory report packet; fixtures/boundary_gap/expected/gate-adoption pins checked dogfood receipts for visible-only, acknowledged waiver, baseline-existing, baseline-new, missing-baseline, and explicit calibrated-gate decisions; cargo xtask dogfood writes and compares those gate adoption receipts while recording non-blocking generated CI defaults; docs/CALIBRATED_GATE_POLICY.md documents modes, waivers, CI behavior, calibration evidence, rollout stages, fixture matrix, and static/runtime vocabulary boundaries; docs/BLOCKING_READINESS.md explains when to stay advisory, require acknowledgement, use baseline-check, or enable calibrated blocking; docs/handoffs/2026-05-08-campaign-15-closeout.md records the Campaign 15 closeout audit, proof, and non-goals; docs/handoffs/2026-05-08-campaign-16-closeout.md records the Gate Adoption UX audit, proof, and next-work boundary | maintenance | gate_decisions_evaluated, gate_decisions_blocking, gate_decisions_acknowledged, gate_decisions_advisory, gate_decisions_suppressed, gate_decisions_unknown_confidence, gate_config_errors |
| Baseline debt delta report | alpha | RIPR-SPEC-0016 | docs/specs/RIPR-SPEC-0016-baseline-debt-delta.md defines the baseline debt delta contract; ripr baseline create writes .ripr/gate-baseline.json ledgers from existing gate-decision JSON without overwriting by default and includes additive owner/reason/created/review-after/source metadata plus canonical_gap_id when supplied; ripr baseline diff --baseline .ripr/gate-baseline.json --current target/ripr/reports/gate-decision.json writes advisory baseline-debt-delta JSON/Markdown, preserves present review metadata on baseline-derived items, and matches canonical_gap_id before legacy selectors; ripr baseline update --remove-resolved shrink-only refreshes reviewed baselines without adopting new current debt, preserving entry metadata and canonical gap identity matches across line movement; generated CI runs ripr baseline diff when RIPR_GATE_BASELINE and gate-decision.json are present, uploads baseline-debt-delta.{json,md}, and summarizes debt movement without making the report the pass/fail authority or ever invoking baseline update/adopt-new; docs/BASELINE_LEDGER_WORKFLOW.md documents initial advisory adoption, reviewed baseline creation, baseline-check rollout, shrink-only refresh, new debt review, waiver/baseline/suppression boundaries, CI no-auto-adopt guardrails, and the path toward RIPR 0; crates/ripr/src/output/baseline_delta.rs renders still-present, resolved, new policy-eligible, acknowledged, suppressed, stale, invalid, and missing-input buckets with canonical_gap_id in identity records when supplied; crates/ripr/src/output/baseline_update.rs preserves malformed or ambiguous entries while removing resolved reviewed debt; fixtures/boundary_gap/expected/baseline-debt-delta/mixed pins checked JSON/Markdown output including metadata compatibility; docs/OUTPUT_SCHEMA.md Gate Baseline Ledger, Gate Baseline Update, and Baseline Debt Delta Report sections define the ledger, update, and delta shapes; docs/handoffs/2026-05-09-campaign-17-closeout.md records the Campaign 17 audit and proof; Campaign 17 keeps the report advisory and separates debt movement from gate pass/fail authority | maintenance | baseline_debt_delta_entries, baseline_debt_delta_still_present, baseline_debt_delta_resolved, baseline_debt_delta_new_policy_eligible, baseline_debt_delta_acknowledged, baseline_debt_delta_suppressed, baseline_debt_delta_stale_entries, baseline_debt_delta_invalid_entries, baseline_debt_delta_missing_current_input |
| RIPR Zero status report | alpha | RIPR-SPEC-0017 | ripr zero status --delta target/ripr/reports/baseline-debt-delta.json writes advisory ripr-zero-status.{json,md} over reviewed baselines, baseline debt deltas, optional gap decision ledgers, gate decisions, PR guidance, and recommendation calibration without changing gate authority; crates/ripr/src/output/ripr_zero_status.rs renders RIPR 0 state, baseline metadata health, trend availability, top debt areas, and repair routes that prefer supplied gap decision ledger targets or evidence_record repair context with legacy fallback; crates/ripr/src/cli/commands.rs exposes the command, generated CI runs it when baseline-debt-delta.json exists, uploads ripr-zero-status.{json,md}, and appends an at-a-glance RIPR Zero summary while preserving advisory defaults and gate pass/fail authority; docs/RIPR_ZERO_REPORTING_WORKFLOW.md explains how teams read RIPR Zero status, age and refresh baseline metadata, route repair packets, and interpret movement without treating RIPR 0 as perfect tests or 100 percent coverage; docs/OUTPUT_SCHEMA.md documents the shape and advisory boundary; docs/handoffs/2026-05-09-campaign-18-closeout.md records the Campaign 18 audit and proof | maintenance | ripr_zero_status_reports, ripr_zero_visible_unresolved, ripr_zero_new_policy_eligible, ripr_zero_baseline_still_present, ripr_zero_baseline_resolved, ripr_zero_acknowledged, ripr_zero_suppressed, ripr_zero_stale_baseline_entries, ripr_zero_missing_metadata_entries, ripr_zero_top_repair_routes |
| PR evidence ledger | alpha | RIPR-SPEC-0018 | docs/specs/RIPR-SPEC-0018-pr-evidence-ledger.md defines the PR evidence ledger contract; ripr pr-ledger record writes advisory pr-evidence-ledger.{json,md} from existing PR guidance, gap decision ledger, gate decision, baseline debt delta, RIPR Zero status, recommendation calibration, agent receipt, optional coverage, and optional history inputs; crates/ripr/src/output/pr_evidence_ledger.rs renders PR movement, visible waivers, suppressions, repair receipts, top repair route, coverage/grip frontier status, and history summaries without changing gate authority, routing repairable stable Rust GapRecord inputs before legacy fallback artifacts and carrying gap_id/canonical_gap_id when supplied; generated GitHub CI runs pr-ledger record on pull requests when PR guidance exists, uploads pr-evidence-ledger.{json,md}, and appends a PR movement summary while keeping gate decisions as the pass/fail authority; fixtures/boundary_gap/expected/pr-evidence-ledger/mixed pins checked JSON and Markdown output for a mixed acknowledged/suppressed/resolved/new-debt case; docs/OUTPUT_SCHEMA.md documents the pr-evidence-ledger JSON/Markdown shape; docs/PR_EVIDENCE_LEDGER_WORKFLOW.md explains how teams read ledger cards for waiver aging, baseline burn-down, repair receipts, coverage/grip frontier signals, and movement toward RIPR 0 | maintenance | pr_evidence_ledger_records, pr_evidence_ledger_new_policy_eligible, pr_evidence_ledger_baseline_still_present, pr_evidence_ledger_baseline_resolved, pr_evidence_ledger_acknowledged, pr_evidence_ledger_suppressed, pr_evidence_ledger_blocking_candidates, pr_evidence_ledger_repair_receipts, pr_evidence_ledger_gap_record_routes, pr_evidence_ledger_waiver_age_max_days, pr_evidence_ledger_coverage_grip_frontier_available, pr_evidence_ledger_flat_coverage_grip_improved |
| Coverage/grip frontier report | alpha | RIPR-SPEC-0018 | ripr coverage-grip frontier writes advisory coverage-grip-frontier.{json,md} from optional coverage summary plus PR evidence ledger, baseline debt delta, or RIPR Zero status inputs; crates/ripr/src/output/coverage_grip_frontier.rs keeps coverage delta, RIPR movement, quadrants, interpretation, warnings, and advisory limits separate without treating coverage as adequacy; crates/ripr/src/cli/commands.rs exposes the command and checks required RIPR movement input; docs/OUTPUT_SCHEMA.md documents the coverage-grip-frontier JSON/Markdown shape; docs/PR_EVIDENCE_LEDGER_WORKFLOW.md explains how teams interpret coverage/grip frontier signals in PR review without treating coverage as adequacy | maintenance | coverage_grip_frontier_reports, coverage_grip_frontier_available, coverage_grip_frontier_flat_coverage_grip_improved |
| Test-oracle assistant loop | alpha | RIPR-SPEC-0019 | docs/specs/RIPR-SPEC-0019-test-oracle-assistant-loop.md defines the end-to-end proof contract; ripr assistant-loop proof writes advisory test-oracle-assistant-proof JSON and Markdown from explicit PR guidance, agent packet, before/after evidence, receipt, PR ledger, optional gate, and optional coverage/grip frontier inputs; crates/ripr/src/output/test_oracle_assistant_proof.rs preserves selected seam identity, missing discriminator, placement, handoff command, static movement, CI projection paths, warnings, and advisory limits without rerunning analysis, preferring evidence_record projection fields when supplied; crates/ripr/src/cli/commands.rs exposes assistant-loop proof and keeps supplied artifact inputs explicit; docs/OUTPUT_SCHEMA.md documents the implemented advisory test-oracle assistant proof report shape; fixtures/boundary_gap/expected/test-oracle-assistant-loop/canonical pins the canonical replay corpus across PR guidance, agent handoff, before/after static evidence, receipt, and PR ledger projection; crates/ripr/src/output/test_oracle_assistant_proof.rs::test_oracle_assistant_proof_matches_canonical_fixture, test_oracle_assistant_proof_prefers_agent_packet_evidence_record, and test_oracle_assistant_proof_prefers_repo_exposure_evidence_record_movement validate canonical replay plus evidence-record precedence; crates/ripr/tests/cli_smoke.rs::test_oracle_assistant_proof_cli_writes_canonical_report validates the public CLI writes the canonical JSON and Markdown proof artifacts; crates/ripr/tests/cli_smoke.rs::test_oracle_assistant_canonical_review_loop_fixture_pins_expected_surfaces validates one seam identity flows through those surfaces; docs/handoffs/2026-05-09-test-oracle-assistant-receipt.md records the repo-local dogfood receipt across PR guidance, editor/agent handoff, verification commands, after evidence, receipt, PR ledger projection, and coverage/grip frontier availability; docs/TEST_ORACLE_ASSISTANT_WORKFLOW.md documents the PR/editor-to-handoff-to-receipt user workflow and static evidence limits; generated GitHub CI runs ripr assistant-loop proof only when PR guidance, editor/agent brief, before/after evidence, agent receipt, and PR evidence ledger inputs already exist, uploads test-oracle-assistant-proof JSON/Markdown with the normal report packet, and appends the proof summary without changing advisory defaults; docs/TEST_ORACLE_ASSISTANT_PROOF_REPORT.md explains how reviewers, maintainers, and coding agents read the proof report, warnings, static movement, optional CI projection, and advisory limits without artifact archaeology; docs/handoffs/2026-05-09-campaign-20-closeout.md records the prompt-to-artifact audit and follow-up boundaries; docs/handoffs/2026-05-09-campaign-21-closeout.md records the report-producer campaign audit and next-work boundary; docs/IMPLEMENTATION_CAMPAIGNS.md records Campaign 21 complete after the report producer, generated-CI projection, docs, and closeout slices | maintenance | test_oracle_assistant_loop_reports, test_oracle_assistant_loop_verified_receipts, test_oracle_assistant_loop_unknown_inputs, test_oracle_assistant_loop_summary_only, test_oracle_assistant_loop_static_improved, test_oracle_assistant_loop_static_resolved, test_oracle_assistant_loop_static_regressed |
| First useful action report | alpha | RIPR-SPEC-0020 | docs/specs/RIPR-SPEC-0020-first-useful-action-report.md defines the first-useful-action report contract over existing editor, PR guidance, gap decision ledger, PR evidence ledger, baseline, assistant proof, receipt, optional gate, optional coverage/grip, and staleness evidence; docs/OUTPUT_SCHEMA.md documents the first-useful-action.{json,md} shape, optional gap decision fields, bounded status vocabulary, action vocabulary, routing priorities, command fields, warnings, fallback states, and advisory limits; crates/ripr/src/output/first_useful_action.rs builds the read-only report from explicit existing artifact paths and can route from repairable stable Rust GapRecord inputs without assistant-proof inference; ripr first-action writes JSON and Markdown from explicit inputs including --gap-ledger without hidden analysis, source edits, generated tests, provider calls, mutation execution, or default CI blocking; generated GitHub CI runs ripr first-action when explicit inputs are present, uploads first-useful-action.{json,md} with the normal report packet, and appends the First Useful Action summary without changing pass/fail authority; VS Code status and ripr: Show Status project an existing target/ripr/reports/first-useful-action.json report without invoking hidden analysis or adding diagnostics; docs/FIRST_USEFUL_ACTION_WORKFLOW.md documents GitHub and editor entry points, status meanings, developer/reviewer/agent actions, verification, receipts, fallback interpretation, gap-record routing, and the advisory gate boundary; fixtures/boundary_gap/expected/first-useful-action pins actionable, stale, missing-required-artifact, baseline-only, acknowledged, waived, suppressed, no-actionable-seam, already-improved, unchanged-after-attempt, and explicit gap-record routing cases; crates/ripr/tests/cli_smoke.rs and crates/ripr/src/cli/commands.rs cover the CLI producer, gap-ledger input, and generated workflow paths; editors/vscode/test/suite/extension.test.ts covers the existing-report status projection; cargo xtask dogfood validates repo-local first-action receipts for actionable, baseline-only, stale, missing-required-artifact, unchanged-after-attempt, and no-actionable-seam cases while recording advisory limits; docs/handoffs/2026-05-09-first-useful-action-receipts.md records the checked dogfood receipt cases and validation result; docs/handoffs/2026-05-09-campaign-22-closeout.md records the Campaign 22 closeout audit, validation plan, and future-lane boundary | editor/gap-work-packet-projection | first_useful_action_reports, first_useful_action_actionable, first_useful_action_gap_record_routes, first_useful_action_stale, first_useful_action_missing_required_artifact, first_useful_action_baseline_only, first_useful_action_acknowledged, first_useful_action_waived, first_useful_action_suppressed, first_useful_action_no_actionable_seam, first_useful_action_already_improved, first_useful_action_unchanged_after_attempt |
| Assistant loop health report | alpha | RIPR-SPEC-0022 | docs/specs/RIPR-SPEC-0022-assistant-loop-health-report.md defines the advisory assistant-loop-health report contract over explicit test-oracle-assistant-proof inputs; docs/OUTPUT_SCHEMA.md documents the assistant-loop-health JSON and Markdown shape, proof-state vocabulary, movement buckets, warning kinds, repair queue kinds, future multi-proof inputs, and advisory limits; fixtures/boundary_gap/expected/assistant-loop-health/ pins complete-improved, partial-missing-optional, missing-required-input, unchanged, regressed, warning-heavy, and multi-proof report cases plus representative proof inputs; crates/ripr/src/output/assistant_loop_health.rs builds and renders the read-only report from explicit proof inputs without rerunning analysis; ripr assistant-loop health writes advisory JSON/Markdown reports; generated GitHub CI runs the health producer when test-oracle-assistant-proof.json exists, uploads assistant-loop-health.{json,md} with ripr-reports, and appends a compact advisory health summary; docs/ASSISTANT_LOOP_HEALTH_WORKFLOW.md explains proof report versus health report, complete versus partial proof states, missing-input repair, unchanged movement, generated-CI summary use, coding-agent handoff, and advisory limits; crates/ripr/tests/cli_smoke.rs::assistant_loop_health_cli_writes_multi_proof_report and generated workflow tests validate the public CLI and CI projection; docs/handoffs/2026-05-09-campaign-23-closeout.md records the final audit and future-lane boundary | maintenance | assistant_loop_health_reports, assistant_loop_health_complete, assistant_loop_health_partial, assistant_loop_health_missing_required_input, assistant_loop_health_missing_optional_input, assistant_loop_health_static_improved, assistant_loop_health_static_unchanged, assistant_loop_health_static_regressed, assistant_loop_health_unknown_movement, assistant_loop_health_repair_queue_items, assistant_loop_health_warnings |
| PR review front panel report | alpha | RIPR-SPEC-0023 | docs/specs/RIPR-SPEC-0023-pr-review-front-panel-report.md defines the advisory PR review front-panel contract over explicit PR guidance, first-useful-action, assistant proof, assistant-loop health, PR evidence ledger, baseline delta, RIPR Zero, gate decision, receipt, calibration, and optional coverage/grip artifacts; docs/OUTPUT_SCHEMA.md documents the implemented pr-review-front-panel.{json,md} shape, bounded status vocabulary, top-issue states, policy states, movement buckets, coverage/grip states, artifact groups, warnings, generated-CI projection boundary, and advisory limits; crates/ripr/src/output/pr_review_front_panel.rs builds and renders the read-only report from explicit inputs; ripr pr-review front-panel writes advisory JSON and Markdown without hidden analysis, source edits, generated tests, provider calls, mutation execution, inline comments, or default CI blocking; generated GitHub CI runs the front-panel producer only when explicit input artifacts exist, uploads pr-review-front-panel.{json,md} with ripr-reports, and appends a compact advisory PR review summary while preserving ripr gate evaluate as pass/fail authority; docs/PR_REVIEW_FRONT_PANEL_WORKFLOW.md documents reviewer, maintainer, developer, and coding-agent use of the panel, repair routes, receipts, and advisory gate limits; fixtures/boundary_gap/expected/pr-review-front-panel/ pins advisory-only, actionable, summary-only, acknowledged, suppressed, baseline-resolved, blocked, missing-proof, and coverage-flat-grip-improved report cases; xtask/src/main.rs validates the PR review front-panel fixture corpus through check-fixture-contracts and dogfood receipts; crates/ripr/src/output/pr_review_front_panel.rs::pr_review_front_panel_matches_fixture_corpus validates the producer against the corpus; generated workflow tests validate the advisory CI projection; docs/handoffs/2026-05-10-campaign-24-closeout.md records the closeout audit and future-lane boundary | maintenance | pr_review_front_panel_reports, pr_review_front_panel_actionable, pr_review_front_panel_summary_only, pr_review_front_panel_no_actionable, pr_review_front_panel_acknowledged, pr_review_front_panel_waived, pr_review_front_panel_suppressed, pr_review_front_panel_blocked, pr_review_front_panel_config_error, pr_review_front_panel_baseline_still_present, pr_review_front_panel_baseline_resolved, pr_review_front_panel_new_policy_eligible, pr_review_front_panel_missing_required_input, pr_review_front_panel_flat_coverage_grip_improved, pr_review_front_panel_repair_routes, pr_review_front_panel_artifact_links |
| Report packet index | alpha | RIPR-SPEC-0024 | docs/specs/RIPR-SPEC-0024-report-packet-index.md defines the report-packet index contract over explicit existing report, review, receipt, workflow, agent, pilot, and CI artifact directories; ripr reports index writes advisory target/ripr/reports/index.{json,md} from those explicit directories without rerunning analysis or changing gate authority; crates/ripr/src/output/report_packet_index.rs groups artifacts by reviewer use, identifies the start-here front panel, preserves gate-decision authority, records missing expected surfaces, and emits regeneration commands when known; generated GitHub CI runs ripr reports index only when indexed artifacts exist, uploads index.{json,md} with the normal report packet, and appends packet-index status, start-here, gate-authority, missing-surface, and warning summaries without changing pass/fail authority; cargo xtask reports index adds repo-local lane1_readiness for evidence-health, Lane 1 audit, actionable-gap, scorecard, trend, and badge-basis artifacts without running those expensive reports; docs/OUTPUT_SCHEMA.md documents the implemented report_packet_index JSON and Markdown shape, group vocabulary, status vocabulary, missing-surface reasons, Lane 1 readiness, generated-CI projection boundary, and advisory limits; docs/REPORT_PACKET_INDEX_WORKFLOW.md documents reviewer, maintainer, developer, and coding-agent use of the grouped packet map, missing-surface regeneration, and advisory gate boundary; fixtures/boundary_gap/expected/report-packet-index/ pins complete, sparse advisory, missing-front-panel, blocked-gate, missing-proof, missing-receipt, and coverage/grip-present packet cases; xtask/src/main.rs validates the report-packet index fixture corpus through check-fixture-contracts; cargo xtask dogfood validates checked repo-local report-packet index receipts for complete, sparse advisory, missing-front-panel, blocked-gate, missing-proof, missing-receipts, and coverage/grip-present cases; docs/handoffs/2026-05-10-report-packet-index-receipts.md records the checked dogfood receipt cases and validation result; crates/ripr/tests/cli_smoke.rs::report_packet_index_cli_writes_packet_index validates the public CLI writes JSON and Markdown artifacts; docs/REPORT_PACKET_INDEX_PROPOSAL.md records Campaign 25's proposal and non-goals; docs/handoffs/2026-05-10-campaign-25-closeout.md records the closeout audit and future-lane boundary | maintenance | report_packet_index_reports, report_packet_index_pass, report_packet_index_warn, report_packet_index_fail, report_packet_index_incomplete, report_packet_index_available_entries, report_packet_index_missing_expected, report_packet_index_start_here_available, report_packet_index_gate_authority_present, report_packet_index_repair_commands, report_packet_index_warning_entries |
| PR inline comment publisher | alpha | RIPR-SPEC-0025 | docs/specs/RIPR-SPEC-0025-pr-inline-comment-publisher.md defines the optional inline comment publisher contract, read-only publish-plan schema, explicit inputs, permission boundary, dedupe/upsert semantics, cap rules, summary-only exclusion, generated-CI default-off posture, and fixture-first implementation plan; ripr pr-comments plan writes advisory comment-publish-plan.{json,md} from explicit review-comments and optional existing-comment metadata without posting to GitHub or changing gate authority; crates/ripr/src/output/pr_inline_comment_publish_plan.rs builds and renders create/update/keep/delete/skip/blocked operations while preserving default-off, summary-only exclusion, cap, dedupe, fork, token, and permission boundaries; generated GitHub CI keeps RIPR_COMMENT_MODE=off by default, captures existing RIPR comment metadata only for opt-in modes, uploads and summarizes comment-publish-plan.{json,md}, and publishes create/update operations only when RIPR_COMMENT_MODE=inline and the plan reports safe same-repository pull-request permissions; docs/PR_INLINE_COMMENT_PUBLISHER_WORKFLOW.md documents off, plan, and inline rollout, publish-plan review, fork and permission behavior, review-thread noise controls, dedupe/upsert, rollback, and the advisory gate boundary; docs/OUTPUT_SCHEMA.md documents the implemented pr_inline_comment_publish_plan JSON and Markdown shape, operation vocabulary, skip and blocked reasons, existing-comment metadata shape, command surface, and advisory/default-off boundary; docs/PR_INLINE_COMMENT_PUBLISHER_PROPOSAL.md records Campaign 26's proposal and non-goals; fixtures/boundary_gap/expected/pr-inline-comment-publisher/ pins publishable changed-line, summary-only excluded, cap overflow, dedupe/upsert, stale-existing, fork or no-token, and missing-input publish-plan cases; generated workflow tests pin default-off, plan artifact, safe-publish, and no-pull_request_target behavior; crates/ripr/src/output/pr_inline_comment_publish_plan.rs::inline_comment_publish_plan_matches_fixture_corpus validates the producer against the corpus; xtask/src/main.rs validates the PR inline comment publisher fixture corpus through check-fixture-contracts and dogfood receipts; docs/handoffs/2026-05-10-pr-inline-comment-publisher-receipts.md records the checked publish-plan receipt cases; docs/handoffs/2026-05-10-campaign-26-closeout.md records the Campaign 26 closeout audit and future-lane boundary | maintenance | pr_inline_comment_publish_plans, pr_inline_comment_publishable, pr_inline_comment_planned_create, pr_inline_comment_planned_update, pr_inline_comment_planned_keep, pr_inline_comment_planned_delete, pr_inline_comment_skipped, pr_inline_comment_blocked, pr_inline_comment_summary_only_skipped, pr_inline_comment_cap_reached, pr_inline_comment_dedupe_matches, pr_inline_comment_permission_blocked, pr_inline_comment_fork_blocked |
| Pilot packet | alpha | RIPR-SPEC-0009 | ripr pilot writes repo-exposure JSON/Markdown, agent seam packets, and pilot-summary JSON/Markdown; crates/ripr/src/output/pilot/ranking.rs ranks top actionable seams; pilot-summary Markdown and terminal copy surface the top inspected seam, why it matters, the focused test to write, and the before/after commands without opening JSON; Python preview diff runs also project the top python_repair_card with language/status, supported/deferred features, limitation count, missing discriminator, suggested test, verify command, and deferred receipt status; docs/OUTPUT_SCHEMA.md documents the Pilot Summary contract; docs/QUICKSTART.md starts with zero-config ripr pilot; docs/INSTALLATION_VERIFICATION.md defines the public install smoke checklist | campaign/editor-agent-integration-closeout | pilot_packet_generated |
| Targeted-test outcome receipt | alpha | RIPR-SPEC-0009 | crates/ripr/src/cli/commands.rs exposes ripr outcome; crates/ripr/src/output/outcome/mod.rs compares before/after repo-exposure JSON by seam_id, preferring seams[].evidence_record stage/value/discriminator/oracle/related-test movement when present and falling back to legacy fields; it also compares check-output JSON findings by canonical gap ID so Python repair cards and TypeScript repair packets can produce gap_movement = "closed" receipts without language-specific receipt commands, keeps strengthened-but-still-weak rows visible in remaining weak/unknown receipt output, and renders additive summary.gap_movement counts for closed/opened/strengthened/weakened/unchanged/new/removed/changed canonical gaps in outcome and agent-verify receipts; fixtures/first_successful_pr/python-preview-gap/inputs/reports/before-check.json, fixtures/first_successful_pr/python-preview-gap/inputs/reports/after-check.json, fixtures/first_successful_pr/python-preview-gap/inputs/reports/no-path-check.json, and fixtures/first_successful_pr/python-preview-gap/expected/outcome/{closed,unchanged,opened,strengthened,weakened}.{json,md} pin Python preview closed, unchanged, opened, strengthened, and weakened receipt paths; fixtures/first_successful_pr/typescript-preview-gap/inputs/reports/{before-check,after-check}.json and expected/outcome/closed.{json,md} pin TypeScript preview packet closure; fixtures/first_successful_pr/python-return-gap/inputs/reports/{before-check,after-check}.json and expected/outcome/closed.{json,md} pin non-boundary Python return-value closure from broad to exact evidence; fixtures/first_successful_pr/python-exception-gap/inputs/reports/{before-check,after-check}.json and expected/outcome/closed.{json,md} pin non-boundary Python exception-path closure from broad exception evidence to exact message evidence; fixtures/first_successful_pr/python-field-gap/inputs/reports/{before-check,after-check}.json and expected/outcome/closed.{json,md} pin non-boundary Python field/object closure from broad object truthiness to exact field evidence; fixtures/first_successful_pr/python-output-gap/inputs/reports/{before-check,after-check}.json and expected/outcome/closed.{json,md} pin non-boundary Python output/log closure from broad output smoke to exact output text evidence; ripr outcome prints Markdown by default and supports --format json plus --out; fixtures/boundary_gap/calibration/targeted-test-outcome.json; fixtures/boundary_gap/calibration/targeted-test-outcome.md; crates/ripr/tests/cli_smoke.rs outcome smoke tests; docs/INSTALLATION_VERIFICATION.md defines the public install smoke checklist | campaign/editor-agent-integration-closeout | targeted_test_outcome_available, language_adapter_python_gap_receipt_from_check_output, language_adapter_typescript_gap_receipt_from_check_output |
| Operator cockpit | alpha | RIPR-SPEC-0009 | cargo xtask operator-cockpit with operator-cockpit-report alias; target/ripr/reports/operator-cockpit.json; target/ripr/reports/operator-cockpit.md; xtask/src/reports/operator.rs joins repo exposure, LSP cockpit, before/after snapshots, agent verify, agent receipt, SARIF policy, badge status, targeted-test outcome, and optional mutation calibration; agent verify summary counts improved, changed, regressed, and unchanged seams; missing editor-agent loop inputs include next commands aligned with the saved-workspace editor copy actions; fixtures/boundary_gap/expected/editor-agent-loop/operator-cockpit.{json,md}; docs/OUTPUT_SCHEMA.md Operator Cockpit Report section; docs/TARGETED_TEST_WORKFLOW.md repo-local cockpit guidance; fixtures/EXAMPLE_CORPUS.md public operator corpus | campaign/editor-agent-integration-closeout | operator_cockpit_available |
| LSP seam diagnostics | alpha | RIPR-SPEC-0005, RIPR-SPEC-0009 | crates/ripr/src/lsp/diagnostics.rs, stable ripr-seam-{class} codes, severity table, bounded saved-workspace seam diagnostics default on with seamDiagnostics: false as an explicit override, VS Code ripr.check.mode defaults to draft instead of overriding missing config with instant, VS Code status bar and Show Status name disabled config, missing workspace, server unavailable, queued, running, complete, no-actionable-seam, stale, and failed states, dirty Rust buffers keep stale status visible until save or close, docs/EDITOR_EXTENSION.md documents the install path and saved-workspace default, docs/EDITOR_EVIDENCE_UX.md records the editor evidence contract, docs/EDITOR_EVIDENCE_WORKFLOW.md documents the saved-workspace editor loop, fixtures/boundary_gap/expected/lsp-diagnostics.json and fixtures/editor_lsp_workflow/expected/lsp-diagnostics.json pin seam diagnostics, and fixtures/boundary_gap/expected/editor-agent-loop/agent-packet.json pins the same seam identity | maintenance | seam_id in diagnostic.data is the hover lookup key |
| LSP seam evidence hover | alpha | RIPR-SPEC-0005 | crates/ripr/src/lsp/hover.rs, RIPR evidence path + related test locations + missing discriminator + suggested test shape + packet/brief handoff commands + verify/receipt commands + static limits + per-kind next step, framed LSP protocol smoke drives a published boundary-gap seam diagnostic through hover, VS Code e2e drives the real boundary-gap server path through a seam diagnostic and hover, docs/EDITOR_EVIDENCE_WORKFLOW.md documents hover as the first explanation step, falls through to pre-4B Finding hover, fixtures/boundary_gap/expected/lsp-diagnostics.json pins seam lookup data, fixtures/editor_lsp_workflow/expected/lsp-hover.md pins the saved-workspace hover/status projection contract, and fixtures/boundary_gap/expected/editor-agent-loop/agent-brief.json pins the agent-side evidence handoff | maintenance | hover renders evidence path from ClassifiedSeam, never parses diagnostic message |
| LSP seam code actions | alpha | RIPR-SPEC-0005 | crates/ripr/src/lsp/actions.rs seam-aware code_action_response, crates/ripr/src/lsp/backend.rs collectContext returns agent seam packets for seam_id and collectEvidenceContext returns schema 0.1 editor handoff packets from ClassifiedSeam evidence, framed LSP protocol smoke drives a published boundary-gap seam diagnostic through codeAction and collectEvidenceContext, VS Code e2e drives the real boundary-gap server path through code actions, copied seam packet and verify payloads, and related-test opening, VS Code copySuggestedAssertion and openRelatedTest handlers, seam diagnostics surface intent-titled actions for inspecting the seam, writing the targeted test only when related-test or suggested-assertion context exists, copying agent handoff commands, verifying after the test, reviewing the receipt, opening the best related test only when a related-test location exists, and refreshing saved-workspace analysis while Finding code actions remain available; validated GapRecord diagnostics surface bounded gap repair actions for copying repair packets, opening safe related tests, copying safe verify/receipt commands, copying static-limit notes, and refreshing saved-workspace analysis; Python preview GapRecords additionally accept safe pytest ... and python -m unittest ... verify commands, copy a fail-fast pytest skeleton, and open repair_route.target_file when related_test is a bare test name; stale seam diagnostics fail closed to refresh-only; docs/EDITOR_EVIDENCE_WORKFLOW.md documents the action-to-receipt workflow; docs/TESTING.md documents e2e coverage for command registration, LSP-first seam context, agent loop command copying, targeted-test brief copying, suggested assertions, related-test opening, malformed argument handling, and restart behavior; fixtures/boundary_gap/expected/lsp-code-actions.json and fixtures/editor_lsp_workflow/expected/lsp-code-actions.json pin the public action packet; fixtures/editor_lsp_workflow/expected/vscode-status.json and first-useful-action-status.json pin Show Status and stale-refresh behavior; fixtures/boundary_gap/expected/editor-agent-loop/agent-verify.json and agent-receipt.json pin the copied verification chain | maintenance | seam diagnostics expose only supported packet/assertion/test actions without automatic edits |
| Editor preview language routing | alpha | RIPR-SPEC-0036, RIPR-SPEC-0037 | editors/vscode/package.json registers Rust plus TypeScript, TypeScript React, JavaScript, JavaScript React, and Python activation events; editors/vscode/src/client.ts registers the same LSP document selectors, keeps saved-workspace stale guards limited to routed file languages, and leaves analysis gated by [languages] through the server adapter layer; LSP diagnostics preserve preview language, language_status, owner_kind, and static_limit_kind metadata; LSP hover renders preview language/status, syntax-first/advisory boundary, and static-limit kind before RIPR evidence; refresh logs and VS Code status surface preview/static-limit counts; Rust default selector behavior and saved-workspace cockpit tests remain covered by LSP and VS Code extension tests; docs/LANGUAGE_ADAPTER_PREVIEW.md documents the opt-in editor workflow and rollback; cargo xtask dogfood records TypeScript/Python preview receipt coverage for static-limit and disabled-language projection boundaries; the Campaign 27 closeout records the preview/advisory boundary | maintenance | editor_preview_language_routing, editor_preview_static_limit_projection |
| Language-aware generated CI grouping | alpha | RIPR-SPEC-0038 | crates/ripr/src/cli/commands.rs generated GitHub workflow summary reads enabled languages through public ripr doctor, keeps the language grouping section hidden for Rust-only config, and groups TypeScript/JavaScript/Python advisory artifact entries, preview-status counts, classifications, static-limit kinds, actionability states/categories, repair-packet-ready counts, and gate_impact = none only when preview adapters are configured; TypeScript-family grouping includes separately labeled JavaScript preview evidence when TypeScript preview is configured; the summary states that preview-language groups are advisory presentation only and that ripr gate evaluate remains pass/fail authority when explicitly configured; generated workflow and CLI smoke tests pin the opt-in grouping guard, Rust-default boundary, and report artifact paths; docs/LANGUAGE_ADAPTER_PREVIEW.md documents generated-CI grouping and the gate-authority boundary; cargo xtask dogfood now checks that generated-CI cockpit receipts treat preview language grouping, JavaScript grouping, actionability summaries, and gate impact none as checked while preserving advisory defaults; the Campaign 27 closeout records the Rust-default and gate-authority boundary | maintenance | generated_pr_ci_language_groups, generated_pr_ci_preview_language_groups, generated_pr_ci_preview_language_javascript_group, generated_pr_ci_preview_actionability_groups, generated_pr_ci_preview_gate_impact_none, generated_pr_ci_rust_default_unchanged, generated_pr_ci_advisory_summaries |
| Repository config | alpha | RIPR-SPEC-0007 | crates/ripr/src/config.rs ancestor-aware ripr.toml loader, CLI/LSP precedence tests, ripr doctor config visibility, configured oracle policy, severity, suppressions path, seam diagnostics defaults, ripr init defaults-first config generation, generated_init_config_matches_builtin_defaults pins missing config and generated ripr.toml policy equivalence, repo-mode production filters exclude repository automation and non-production trees while fixture roots still work, ripr.toml.example | reports/operator-cockpit | configured analysis mode, oracle policy, severity, suppressions, and seam diagnostics apply across CLI, reports, and LSP |
| TypeScript preview static facts | alpha | RIPR-SPEC-0027 | RIPR-SPEC-0027 accepts the TypeScript-family preview static-facts contract, docs/lanes/LANE_1_TYPESCRIPT_PREVIEW_COMPLETION.md records current implementation and missing completion slices, plans/typescript-preview-completion/implementation-plan.md sequences the bounded completion PRs, JavaScript findings emitted by the TypeScript-family adapter are separately labeled language = javascript while remaining preview evidence, TypeScript fixtures cover boundary gap, strong oracle, return-value shape, mocked-module static limit, awaited rejected promise, effect probe shapes, TSX parsing, JavaScript .js and .jsx labeling, disabled TypeScript config, parser-error unsupported_syntax, static-limit taxonomy for dynamic dispatch, metaprogramming, missing import graph, decorator indirection, mocked modules, and unsupported syntax, owner-kind projection for functions, arrow functions, methods, class methods, TSX/JSX components, module initializers, mixed Rust plus TypeScript output, Jest/Vitest assertion facts for nested describe, test.each, it.each, exact-value, async resolves, mock interaction, snapshot, and smoke-only evidence while keeping weak oracles weak, related-test matching for direct owner calls, relative named import aliases, namespace import member calls, bounded direct new-instance method receiver calls, unshadowed direct static class-method calls, and uncertainty-only same-stem, describe-name, and test-name proximity while excluding unrelated imports, type-only imports, unsafe object methods, factories, dependency injection, mocked modules, namespace chains, dynamic property access, strings, comments, and partial owner-token names, probe facts for predicate, return-value, error-path, field/object construction, side-effect, mock-interaction, and log/output shapes while suppressing discriminator candidates for ambiguous const expressions and computed-member calls, strict actionability evidence that fails closed with gap_state, actionability_category, why_not_actionable, repair_route, missing actionability fields, and raw preview evidence refs instead of emitting repair packets, structured preview_actionability and advisory typescript_preview_card projection through check JSON, human output, GitHub annotations, and diff-scoped SARIF properties while leaving repair-packet, gate, badge, baseline, and RIPR Zero surfaces unchanged, LSP diagnostic data, hover preview actionability context, and inspect-context code actions carry the same preview context while incomplete preview items stay bounded to inspect and refresh actions without repair-packet, verify, receipt, edit, or generated-test actions, and generated CI groups TypeScript-family preview evidence as separate TypeScript and JavaScript advisory groups with actionability summaries, repair-packet-ready counts, static-limit context, and gate impact none; cargo xtask dogfood checks TypeScript preview labels, disabled-language behavior, static limits, no cross-language related-test routing, and TypeScript-family repair-loop receipts for advisory boundary proof, weak-oracle downgrades, skipped incomplete-packet routes, static limitations, and unchanged already-observed evidence while preserving preview/advisory boundaries and repair_packet_ready=false for all except the complete-contract case (RIPR-SPEC-0087 §PR7); RIPR-SPEC-0087 adds repair_packet_ready: true flip for TypeScript findings that satisfy the full G-A–G-F preconditions and pass validate_agent_gap_record_packet — fixtures/ts_repair_packet_complete pins the complete-contract flip while fixtures/ts_dynamic_oracle, ts_heuristic_relation, ts_cross_package_test, ts_no_verify_command, ts_static_limit, ts_cross_language_bridge_limit, and ts_already_observed each pin a named failure family that stays non-actionable; TypeScript still remains preview and authority_boundary stays preview_advisory_only even when flipped; fixtures/typescript-preview-false-actionable-audit/corpus.json audits mock-interaction payload gaps, broad error checks, weak snapshot/smoke oracles, heuristic related-test links, owner-name-only test titles, method receiver and static class-method repair-packet gaps, remaining receiver ambiguity, module-initializer ambiguity, and static limits as safe advisory, named limitation, candidate future support, or must-remain-non-actionable cases; language_repair_route_quality reports TypeScript and JavaScript preview outcomes by language and repair kind without promoting preview evidence into public packets, badge inputs, gates, baseline authority, or RIPR Zero; docs/handoffs/2026-05-30-typescript-preview-completion-closeout.md records the support-tier decision that TypeScript and JavaScript remain preview; RIPR-SPEC-0088 (§PR8) projects the actionable GapRecord from RIPR-SPEC-0087 into four surfaces via the shared renderer: human output emits a field-note with canonical_gap_id, verify/receipt commands, edit surface, must_not_change, and authority when actionable, or a named limitation with status: not actionable and limitation when blocked; JSON output emits typescript_repair_packet as an additive optional field present only when repair_packet_ready: true; LSP hover adds a ## Repair packet (TypeScript preview, advisory) section when actionable; LSP code actions add a "Copy TypeScript repair packet (advisory)" action when actionable; all four surfaces stay advisory and authority boundary remains preview_advisory_only; complete TypeScript repair packets can also materialize from check-output JSON into PR-local preview GapRecords, preview-limited first-pr start-here packets, and before/after ripr outcome receipts while remaining advisory-only and ineligible for gate, badge, baseline, RIPR Zero, and support-tier authority; fixtures/ts_repair_packet_complete goldens (check.json + human.txt) pin the full packet projection and fixtures/ts_dynamic_oracle, ts_heuristic_relation, ts_cross_package_test, ts_no_verify_command, ts_static_limit, ts_cross_language_bridge_limit, and ts_already_observed human goldens pin the named limitation section | maintenance | language_adapter_typescript_findings_preview, language_adapter_typescript_owner_function, language_adapter_typescript_owner_method, language_adapter_typescript_owner_class_method, language_adapter_typescript_owner_arrow_function, language_adapter_typescript_owner_component, language_adapter_typescript_oracle_exact_value, language_adapter_typescript_oracle_error_path, language_adapter_typescript_oracle_side_effect, language_adapter_typescript_oracle_snapshot_weak, language_adapter_typescript_oracle_smoke, language_adapter_typescript_related_imported_owner_call, language_adapter_typescript_related_method_receiver_call, language_adapter_typescript_probe_predicate, language_adapter_typescript_probe_return_value, language_adapter_typescript_probe_error_path, language_adapter_typescript_probe_field_construction, language_adapter_typescript_probe_call_side_effect, language_adapter_typescript_probe_mock_interaction, language_adapter_typescript_probe_ambiguous_suppressed, language_adapter_typescript_static_limit_dynamic_dispatch, language_adapter_typescript_static_limit_metaprogramming, language_adapter_typescript_static_limit_missing_import_graph, language_adapter_typescript_static_limit_decorator_indirection, language_adapter_typescript_static_limit_mocked_module, language_adapter_typescript_static_limit_unsupported_syntax, language_adapter_typescript_actionability_advisory, language_adapter_typescript_actionability_static_limitation, language_adapter_typescript_actionability_already_observed, language_adapter_typescript_preview_card, language_adapter_typescript_gap_receipt_from_check_output, language_adapter_typescript_lsp_preview_actionability_context, language_adapter_typescript_ci_preview_grouping, language_adapter_typescript_preview_repair_loop_dogfood, language_adapter_typescript_false_actionable_audit, language_adapter_typescript_route_quality_by_language, language_adapter_javascript_route_quality_by_language, language_adapter_typescript_actionability_complete_repair_packet, language_adapter_typescript_repair_packet_human_field_note, language_adapter_typescript_repair_packet_json_field, language_adapter_typescript_repair_packet_lsp_hover, language_adapter_typescript_repair_packet_lsp_copy_action, language_adapter_typescript_repair_packet_named_limitation |
| Python preview static facts | alpha | RIPR-SPEC-0028 | Python preview adapter runs only when [languages] enables python; JSON and human goldens show language = "python" and language_status = "preview"; fixtures cover owner/test, assertion/oracle, probe, related-test, and static-limit families including dynamic_dispatch, dynamic import through missing_import_graph, decorator_indirection, mocked_module with patch and monkeypatch syntax, opaque_custom_assertion_helper, property_based_test, unresolved_pytest_fixture, missing_import_graph, metaprogramming including metaclass declarations, and unsupported_syntax; non-static-limit Python findings carry stable canonical gap IDs across JSON, human, SARIF, GitHub annotation, LSP diagnostic/hover, and context-packet surfaces while static-limit findings fail closed as static_unknown with typed stop reasons; non-static Python findings carry family-specific RIPR infection/propagation evidence and selected repair-class missing discriminators for predicate boundary, return value, exception path, field/object value, and output/log/call effects; exact exception-message observers through pytest.raises(..., match=...) and assertRaisesRegex(...) are strong exception evidence while broad exception observers stay weak; ranking now puts direct repairable weak Python findings ahead of observed, no-path, heuristic-only, and static-limit preview findings; direct weak pytest/unittest findings carry suggested test placement, verify commands, and verify-command confidence; direct weak Python findings with canonical gaps, concrete missing discriminators, placement, and verify commands now carry python_repair_card output with changed owner, changed behavior, current test evidence, test shape, suggested assertion, suggested location, verify command, preview/advisory authority boundary, receipt status, stop conditions, and limits; ripr pilot can project that top Python repair card into pilot-summary.{json,md} and terminal first-use output for Python diff runs; LSP GapRecord code actions accept bounded pytest ... and python -m unittest ... verify commands for Python repair cards, copy a bounded Python agent packet for current actionable repairable records, copy a full repair card for safe target-file routes with a current validated GapRecord freshness cue, copy a fail-fast pytest skeleton, and open the target test file when the repair route has a bare test name; ripr first-pr can select Python preview GapRecords from a gap decision ledger, write preview-limited start-here.{json,md} for Python project roots without Cargo, recover missing Python-only gap ledgers through ripr check --json plus reports gap-ledger --check-output instead of Rust repo-exposure, and accept --check-output <check.json> to materialize that ledger before selecting the start-here repair; reports gap-ledger --check-output derives Python preview GapRecords from repair cards, synthesizes receipt commands for check-output before/after snapshots when raw cards lack one, and derives report-only StaticLimitation GapRecords from Python static_limit_kind findings without making them agent-packet eligible; ripr outcome can compare those before/after check snapshots by canonical Python gap ID, first_successful_pr/python-preview-gap pins closed, unchanged, opened, strengthened, and weakened preview receipts, first_successful_pr/python-return-gap pins non-boundary return-value closure, first_successful_pr/python-exception-gap pins non-boundary exception-path closure, first_successful_pr/python-field-gap pins non-boundary field/object closure, and first_successful_pr/python-output-gap pins non-boundary output/log closure; fixtures/python_api_route_decorator_repair_gap pins simple route decorators such as @api.post(...) as static route metadata that can produce a field/object repair card while arbitrary decorators remain static limits; fixtures/python-real-repo-evals/corpus.json records tiny controlled pytest, normal pytest app, async return-value, parametrized-boundary, CLI/output, log output, argparse CLI output, Click CLI output, Typer CLI output, CLI exit-code, pytest exception, custom exception, unittest exception, API status-code, API JSON detail, Flask route JSON detail, FastAPI route JSON detail, mixed Rust/Python, decorated route, unittest return-value, unittest returned-dict field, and dataclass/model-field scratch-repo repair cards, bounded agent packets, focused verify passes, and closed Python outcome receipts while static_limit_cases records dynamic_dispatch_no_packet_eval, decorator_indirection_no_packet_eval, missing_import_graph_no_packet_eval, metaprogramming_no_packet_eval, mocked_module_no_packet_eval, opaque_custom_helper_no_packet_eval, property_based_no_packet_eval, unresolved_fixture_no_packet_eval, and unsupported_syntax_no_packet_eval as no card, no packet, not_applicable verify/receipt, and no_receipt movement; dogfood derives Python repair-routing quality metrics for top-1 usefulness, top-3 actionable precision over captured ranked repair-card findings, verify-command validity, agent-packet boundary validity, concrete-discriminator coverage, suggested test-location coverage, false-actionable and crash rates, receipt closure, unsupported limitation distribution, and required receipt-backed boundary, async return-value, CLI/output, CLI exit-code, pytest exception, custom exception, and unittest exception, API status, API JSON detail, Flask route JSON detail, FastAPI route JSON detail, API exception-response, mixed, decorated-route, unittest return-value, unittest dict-field, and model-field eval rows; agent packet --gap-ledger exports bounded packets with allowed files, forbidden files, conflict groups, missing discriminators, verify commands, receipt commands/status, and stop conditions, and ripr swarm queue --language python ranks packetable Python GapRecords into conflict-grouped repair work without queuing static limits or no-action records while blocking wrong-root/rootless ledgers and marking receipt-stale or already-closed packets as blocked_stale before assignment; heuristic, no-path, and static-limit cases suppress repair guidance until later repair-card contracts can bound them; cargo xtask dogfood checks Python preview receipts for missing_import_graph, disabled-language behavior, no cross-language related-test routing, and the Python real-repo eval receipt corpus; docs/LANGUAGE_ADAPTER_PREVIEW.md documents how to enable, read, and roll back Python preview evidence; the Campaign 27 closeout records Python as opt-in preview rather than Rust parity | maintenance | language_adapter_python_findings_preview, language_adapter_python_static_limit_*, language_adapter_python_canonical_gap_identity, language_adapter_python_ripr_evidence_model, language_adapter_python_repair_class_*, language_adapter_python_repair_guidance_suppressed_non_actionable, language_adapter_python_repair_ranking_noise_control, language_adapter_python_test_placement_verify, language_adapter_python_repair_card_v1, language_adapter_python_route_decorator_repair_card, language_adapter_python_agent_packet_v1, language_adapter_python_swarm_queue_stale_packets, language_adapter_python_gap_receipt_from_check_output, language_adapter_python_real_repo_eval_receipt, language_adapter_python_repair_routing_quality_metrics, language_adapter_python_pilot_first_use_path, language_adapter_python_pr_summary_repair_card_projection, language_adapter_python_lsp_agent_packet_action, language_adapter_python_lsp_repair_card_action, language_adapter_python_lsp_pytest_skeleton_action, language_adapter_python_first_pr_start_here_path, language_adapter_python_first_pr_check_output_bridge, language_adapter_python_static_limit_stop_reasons, language_adapter_python_static_limit_mocked_module, language_adapter_python_static_limit_opaque_custom_assertion_helper, language_adapter_python_static_limit_property_based_test, language_adapter_python_static_limit_unresolved_pytest_fixture |
| Python repair routing loop | usable alpha | RIPR-SPEC-0028 | Direct weak Python findings with canonical gaps, concrete missing discriminators, suggested test locations, verify commands, stop conditions, and limits emit python_repair_card output across human, JSON, SARIF, GitHub, pilot, first-pr, and LSP surfaces; check-output-derived GapRecords, ripr agent packet --gap-ledger, and ripr swarm queue --language python export bounded test-repair packets with allowed files, forbidden production files, conflict groups, verify/receipt commands, and stop conditions while excluding static limits and no-action records; ripr swarm ingest --result classifies Python repair attempts without trusting them blindly; fixtures/first_successful_pr/python-preview-gap plus return, exception, field, and output variants pin closed before/after outcome receipts by canonical gap ID; fixtures/real-repair-attempts and fixtures/python-real-repo-evals record test-only Python repair attempts, bounded agent packets, focused pytest/unittest verify passes, closed outcome receipts including no-config pyproject project detection, async return-value, external-repo-style src/ package layout, parametrized-boundary, CLI/output, log output, argparse CLI output, Click CLI output, Typer CLI output, CLI exit-code, pytest exception, custom exception, unittest exception, API status, API JSON detail, Flask route JSON detail, FastAPI route JSON detail, API exception-to-response, mixed, decorated route, unittest return-value, unittest returned-dict field, and dataclass/model-field repair, static-limit no-action evals for dynamic dispatch, decorator indirection, missing import graph, metaprogramming, mocked modules, opaque custom assertion helpers, property-based tests, unresolved pytest fixtures, generated-file exclusions, and unsupported syntax, plus no-related-test, already-observed, and heuristic-only ordinary no-action evals; cargo xtask dogfood derives top-1/top-3 usefulness, verify-command, agent-packet boundary, discriminator, location, false-actionable, crash, receipt-closure, unsupported-limitation, no-action static-limit distribution, and ordinary no-action distribution metrics, and requires the receipt-backed boundary, no-config pyproject boundary, external-repo-style src/ package layout, async return-value, CLI/output, log output, argparse CLI output, Click CLI output, Typer CLI output, CLI exit-code, pytest exception, custom exception, and unittest exception, API status, API JSON detail, Flask route JSON detail, FastAPI route JSON detail, API exception-response, mixed, decorated-route, unittest return-value, unittest dict-field, and model-field eval rows plus the required no-action rows; docs/status/SUPPORT_TIERS.md promotes only this scoped loop to usable alpha; docs/handoffs/2026-05-31-python-repair-routing-usable-alpha-closeout.md records proof and remaining limits | dogfood/python-stability-evals-v1 | language_adapter_python_repair_card_v1, language_adapter_python_agent_packet_v1, language_adapter_python_swarm_queue_stale_packets, language_adapter_python_gap_receipt_from_check_output, language_adapter_python_real_repair_attempt_receipt, language_adapter_python_real_repo_eval_receipt, language_adapter_python_repair_routing_quality_metrics, language_adapter_python_swarm_ingest, language_adapter_python_swarm_ingest_result_states |
| SARIF and CI policy | alpha | RIPR-SPEC-0008 | SARIF/CI contract defining finding and seam rule IDs, configured severity mapping, suppression visibility, and advisory baseline-policy modes; crates/ripr/src/output/sarif.rs renders diff-scoped Finding SARIF and repo-scoped seam SARIF with configured severity, suppression metadata, stable rule IDs, and stable fingerprints; ripr init --ci github generates a non-blocking defaults-first GitHub workflow that runs ripr pilot, uploads pilot/report/agent/review artifacts, writes a RIPR advisory summary, writes repo badge JSON and Shields artifacts, optionally renders an operator cockpit when the repo-local xtask exists, and gates SARIF rendering/upload behind RIPR_UPLOAD_SARIF; crates/ripr/src/cli/commands.rs::init_generated_github_workflow_matches_smoke_fixture pins the generated workflow artifact packet, optional SARIF gates, non-blocking posture, and badge outputs; cargo xtask sarif-policy compares current SARIF against a baseline and only fails on new warning-level results when explicitly requested; docs/CI.md documents the generated workflow shape | advisory-policy-feedback | SARIF result counts by rule/level, new configured-warning results, and advisory_ci_workflow_generated |
| Public actionable badge counts | usable alpha | RIPR-SPEC-0056 | docs/BADGE_POLICY.md defines canonical_actionable_gap as the public badge basis; docs/OUTPUT_SCHEMA.md Badge Output schema 0.5 documents basis values plus badge-basis audit fields; crates/ripr/src/output/badge/summaries.rs renders repo badge payloads from unresolved actionable canonical repair items while badge-basis preserves seam-native inventory as internal analyzer-health pressure; repo badge native JSON uses basis: canonical_actionable_gap by default and basis: gap_decision_ledger when supplied; diff badge native JSON remains basis: finding_exposure; checked-in badges/ripr.json and badges/ripr-plus.json are refreshed from generated endpoint artifacts | campaign/public-badge-projection-realignment | public badge headline counts unresolved actionable canonical repair items; seam-native inventory is available through cargo xtask badge-basis --include-seam-classes, repo-exposure, seam-inventory, and evidence-quality reports, not the public ripr / ripr+ headline |
| Suppression policy health | alpha | RIPR-SPEC-0029, RIPR-SPEC-0030 | .ripr/suppressions.toml remains the durable exception manifest with owner and reason required; optional policy metadata covers scope, created_at, last_seen, review_by, expected_visibility, language, and language_status, while static_class is required only for exposure_gap entries; ripr policy suppression-health writes advisory suppression-health.{json,md} without applying or mutating suppressions; the report flags missing owner, missing reason, stale review windows, overbroad scope, unknown selectors, missing exposure-gap class, and preview-language suppressions without language_status = "preview" while keeping still_visible = true; policy readiness consumes suppression-health status so warning/config-error ledgers do not qualify acknowledgement readiness; docs/POLICY_ALLOWLISTS.md aligns no-panic, Clippy, non-Rust, workflow, RIPR suppression, baseline, and waiver ledgers around reviewed reasons, durable identity, visibility, and stale-entry behavior; docs/BLOCKING_READINESS.md uses policy readiness as the ceiling for visible-only, acknowledgeable, baseline-check, and calibrated-gate promotion, including preview evidence as advisory by default; generated CI writes, uploads, and summarizes waiver-aging, suppression-health, and policy-readiness artifacts as advisory-only projections; docs/handoffs/2026-05-12-policy-readiness-closeout.md records the closed Lane 2 audit and future-lane boundary | maintenance | suppression_health_missing_owner, suppression_health_missing_reason, suppression_health_stale, suppression_health_overbroad_scope, suppression_health_unknown_selector, suppression_health_missing_static_class, suppression_health_preview_without_preview_label |
| Policy operations readiness | alpha | RIPR-SPEC-0039 | docs/specs/RIPR-SPEC-0039-policy-operations-report.md defines the read-only policy operations report over explicit policy-readiness, waiver-aging, suppression-health, baseline-delta, gate-decision, recommendation-calibration, optional mutation-calibration, and preview-boundary inputs; crates/ripr/src/output/policy_operations.rs builds and renders the policy_operations JSON and Markdown shape; crates/ripr/src/cli/commands.rs wires ripr policy operations with parser and write-path tests; generated GitHub CI writes, uploads, indexes, and summarizes policy-operations.{json,md} as advisory-only operator packets; docs/OUTPUT_SCHEMA.md documents the policy_operations contract; docs/POLICY_OPERATIONS_WORKFLOW.md documents maintainer use from readiness through operations, history, promotion packet review, manual config review, and post-change monitoring; docs/handoffs/2026-05-13-policy-operations-closeout.md records the closed Lane 2 audit; docs/policy/POLICY_OPERATIONS.md and .ripr/goals/lane2-policy-operations.toml keep the Lane 2 tracker scoped to policy meaning and operations without analyzer, editor, generated-test, mutation-execution, default-blocking, config-mutation, baseline-adoption, suppression-creation, or preview-promotion changes | maintenance | policy_operations_reports, policy_operations_current_ceiling, policy_operations_safe_target_count, policy_operations_blocked_target_count, policy_operations_promotion_blocker_count, policy_operations_warning_count, policy_operations_unknown_count, policy_operations_input_malformed_count |
| Policy history trend | alpha | RIPR-SPEC-0041 | docs/specs/RIPR-SPEC-0041-policy-history-ledger.md defines the read-only policy history report over current policy operations and optional history JSONL input; crates/ripr/src/output/policy_history.rs builds and renders the policy_history JSON and Markdown shape; crates/ripr/src/cli/commands.rs wires ripr policy history with parser and write-path tests; generated GitHub CI writes, uploads, indexes, and summarizes policy-history.{json,md} without appending .ripr/policy-history.jsonl automatically; docs/OUTPUT_SCHEMA.md documents the policy_history contract; docs/POLICY_OPERATIONS_WORKFLOW.md documents how maintainers use history before promotion and after manual policy changes; docs/handoffs/2026-05-13-policy-operations-closeout.md records the closed Lane 2 audit; docs, capability, and traceability surfaces keep policy history read-only without automatic history append, telemetry, dashboards, gate authority, config mutation, baseline mutation, suppression mutation, or preview promotion | maintenance | policy_history_reports, policy_history_entries, policy_history_readiness_improved, policy_history_waiver_pressure_increased, policy_history_suppression_health_regressed, policy_history_baseline_shrank, policy_history_preview_remained_advisory, policy_history_calibration_changed_ceiling, policy_history_warning_count, policy_history_unknown_count |
| Policy promotion packets | alpha | RIPR-SPEC-0042 | docs/specs/RIPR-SPEC-0042-policy-promotion-packets.md defines read-only manual-review promotion packets for visible-only, acknowledgeable, baseline-check, and calibrated-gate; crates/ripr/src/output/policy_promotion.rs builds and renders the policy_promotion_packet JSON and Markdown shape from explicit policy operations and optional policy history inputs; crates/ripr/src/cli/commands.rs wires ripr policy promote --to ... with target-mode parser and write-path tests; generated GitHub CI writes, uploads, indexes, and summarizes read-only policy-promotion-*.{json,md} packets for the four configured-mode targets; docs/OUTPUT_SCHEMA.md documents the implemented output contract; docs/POLICY_OPERATIONS_WORKFLOW.md documents promotion packet review before manual config changes; docs/handoffs/2026-05-13-policy-operations-closeout.md records the closed Lane 2 audit; docs/policy/POLICY_OPERATIONS.md and .ripr/goals/lane2-policy-operations.toml keep the packet split from preview promotion without config, baseline, suppression, workflow, history, default-blocking, or preview-eligibility mutation | maintenance | policy_promotion_packets, policy_promotion_allowed, policy_promotion_blocked, policy_promotion_required_repairs, policy_promotion_required_receipts, policy_promotion_missing_history, policy_promotion_warning_count, policy_promotion_unknown_count |
| Preview evidence promotion packets | alpha | RIPR-SPEC-0044 | docs/specs/RIPR-SPEC-0044-preview-evidence-promotion-packet.md defines read-only preview-language promotion packets with default allowed_now = false, required/supplied/missing evidence accounting, advisory generated-CI posture, rollback guidance, and no actual promotion; required evidence covers fixture corpus, static-limit taxonomy, false-positive review, recommendation calibration, dogfood receipts, related-test accuracy, false repair packet review, surface consistency, policy signoff, baseline behavior, waiver/suppression behavior, rollback, and generated CI posture; crates/ripr/src/output/policy_preview_promotion.rs builds and renders the preview_evidence_promotion_packet JSON and Markdown shape; crates/ripr/src/cli/commands.rs wires ripr policy preview-promote --language ... --class ... with parser and write-path tests; generated GitHub CI writes, uploads, indexes, and summarizes preview-promotion-*.{json,md} only when TypeScript or Python preview adapters are configured; docs/OUTPUT_SCHEMA.md documents the implemented output contract; docs/POLICY_OPERATIONS_WORKFLOW.md documents preview promotion review while keeping TypeScript, JavaScript, and Python evidence advisory by default; docs/specs/RIPR-SPEC-0053-start-here-surface-convergence.md defines proof criteria for fixture matrix coverage, dogfood receipts, related-test accuracy, static-limit taxonomy, false-positive review, false repair packet review, surface consistency, and policy-owner signoff before preview evidence can claim stronger status; docs/handoffs/2026-05-13-policy-operations-closeout.md records the closed Lane 2 audit; docs/policy/POLICY_OPERATIONS.md and .ripr/goals/lane2-policy-operations.toml keep preview promotion split from CI projection without gate eligibility, RIPR Zero inclusion, calibrated confidence, CI blocking, or preview-eligibility mutation | maintenance | preview_promotion_packets, preview_promotion_allowed, preview_promotion_blocked, preview_promotion_required_evidence, preview_promotion_supplied_evidence, preview_promotion_missing_evidence, preview_promotion_warning_count, preview_promotion_unknown_count |
| cargo-mutants calibration | calibrated | RIPR-SPEC-0006 | mutation calibration spec, public ripr calibrate cargo-mutants, crates/ripr/src/output/mutation_calibration.rs, advisory Markdown/JSON renderer with --format json and --out, repo-local cargo xtask mutation-calibration, importer and seam/outcome join unit tests, static/runtime agreement buckets, per-row static/runtime confidence labels, static-only finding samples, runtime-signal-without-static-gap samples, fixtures/CALIBRATION_CORPUS.md scenario index, crates/ripr/tests/cli_smoke.rs::calibration_runtime_fixture_matches_checked_reports, crates/ripr/tests/cli_smoke.rs::calibration_runtime_fixture_v2_matches_checked_reports, crates/ripr/tests/cli_smoke.rs::calibration_runtime_fixture_v3_matches_checked_reports, fixtures/boundary_gap/calibration/runtime-mutants.json, fixtures/boundary_gap/calibration/mutation-calibration.json, fixtures/boundary_gap/calibration/mutation-calibration.md, checked fixtures/boundary_gap/calibration/runtime-fixtures-v1/, runtime-fixtures-v2/, and runtime-fixtures-v3/ reports, and Lane 1 tracker documented covered-class boundary for imported runtime confidence labels | maintenance | checked calibration fixtures cover static gap plus runtime signal, static gap plus runtime clean, runtime signal without static gap, static clean plus runtime clean, inconclusive runtime labels, ambiguous file_line joins, unmatched runtime data, static seams without runtime data, confidence labels, seam_id/file_line join methods, side-effect observer seams, mock expectations, weak snapshot oracles, opaque dispatch, ambiguous opaque dispatch joins, runtime-only signals that do not create static gaps, custom assertion helper outcomes, table-driven boundary outcomes, builder override outcomes, cross-file constant boundary outcomes, snapshot field-discriminator outcomes, and mock expectation mismatch outcomes |
| Rust producer-owned source role | alpha | RIPR-SPEC-0153 | docs/specs/RIPR-SPEC-0153-rust-source-role.md defines the typed per-file role (production subject, test/bench/example/fixture evidence, production-like opt-in, reserved unknown) and the typed item roles (Production, TestAttribute, CfgTestModule, HarnessHelper, RegisteredTestAttribute, ParameterizedExpansion); declared Cargo targets and the governed [analysis.test_harnesses] registry (#3532) confirm evidence outside default layouts; filename conventions never classify alone; diff seeding and repo seam inventory route through one authority (analysis/workspace/source_role.rs); the retained conformance corpus (crates/ripr/tests/data/source-role-corpus/, driven by analysis::source_role_corpus) and the cargo xtask check-rust-source-role-authority structural gate pin the denominator and reject consumer-side role re-derivation; composition provenance across include and module edges is covered by RIPR-SPEC-0169 | analysis/source-role-authority | source_role_layout_classification, source_role_declared_targets, source_role_production_like_opt_in, source_role_harness_registry, source_role_cfg_composition, source_role_naming_lookalike_rejected |
| Perl repair routing loop | planned | RIPR-SPEC-0064 | Consumer spine, packet integrity, fixture-scoped two-binary harness proof, managed producer mode, doctor preview, advisory-only preview-card invariant, the corrected perl-ripr-facts exporter architecture, and checked fixtures/perl-real-repo-evals launchpoints are landed in source. The capability remains blocked on real producer data-plane proof: usable-alpha promotion still requires actionable/already-observed/limited outcomes across at least five real Perl repos, top-1 precision and verify-command thresholds, before/after receipts, expanded perl-real-repo-evals real-repo receipts, and decommissioning of the bespoke preview-card path in favor of the shared validator. Until then Perl has no gate, badge, RIPR Zero, or stable-authority claim. | dogfood/perl-real-repo-evals-v2 | language_adapter_perl_facts_packet_v1, language_adapter_perl_gap_record_projection, language_adapter_perl_doctor_preview, language_adapter_perl_bespoke_card_advisory_only_invariant, language_adapter_perl_real_repo_eval_launchpoints |
Update Rules
Update this file when a PR changes capability status, adds fixtures, changes a public output contract, or adds a measurable acceptance condition.
README should show only the headline capability snapshot. This file is the deeper tracking surface for contributors and agents.