const HELP: &str = r#"ripr — static RIPR mutation exposure analysis for Rust
Usage:
ripr init [--root PATH] [--ci github] [--dry-run] [--force]
ripr pilot [--root PATH] [--out PATH] [--mode draft] [--max-seams 5] [--timeout-ms 30000]
ripr outcome --before PATH --after PATH [--format md|json] [--out PATH]
ripr evidence-health [--root PATH] [--out PATH] [--out-md PATH] [--mutation-calibration PATH]
ripr review-comments --root . --base SHA --head SHA [--out target/ripr/review/comments.json]
ripr gate evaluate --pr-guidance PATH [--mode visible-only] [--out target/ripr/reports/gate-decision.json]
ripr baseline create --from target/ripr/reports/gate-decision.json [--out .ripr/gate-baseline.json] [--dry-run] [--force]
ripr baseline diff --baseline .ripr/gate-baseline.json --current target/ripr/reports/gate-decision.json [--out target/ripr/reports/baseline-debt-delta.json] [--out-md target/ripr/reports/baseline-debt-delta.md]
ripr baseline update --baseline .ripr/gate-baseline.json --current target/ripr/reports/gate-decision.json --remove-resolved [--out .ripr/gate-baseline.json]
ripr zero status --delta target/ripr/reports/baseline-debt-delta.json [--baseline .ripr/gate-baseline.json] [--gate target/ripr/reports/gate-decision.json] [--out target/ripr/reports/ripr-zero-status.json] [--out-md target/ripr/reports/ripr-zero-status.md]
ripr pr-ledger record --pr-number 123 --base SHA --head SHA [--gate target/ripr/reports/gate-decision.json] [--baseline-delta target/ripr/reports/baseline-debt-delta.json] [--zero-status target/ripr/reports/ripr-zero-status.json] [--out target/ripr/reports/pr-evidence-ledger.json]
ripr pr-comments plan --pr-guidance target/ripr/review/comments.json [--existing-comments target/ripr/review/existing-comments.json] [--mode off|plan|inline] [--out target/ripr/review/comment-publish-plan.json]
ripr pr-review front-panel [--pr-guidance target/ripr/review/comments.json] [--first-action target/ripr/reports/first-useful-action.json] [--assistant-proof target/ripr/reports/test-oracle-assistant-proof.json] [--assistant-health target/ripr/reports/assistant-loop-health.json] [--ledger target/ripr/reports/pr-evidence-ledger.json] [--out target/ripr/reports/pr-review-front-panel.json]
ripr coverage-grip frontier (--ledger target/ripr/reports/pr-evidence-ledger.json|--baseline-delta target/ripr/reports/baseline-debt-delta.json|--zero-status target/ripr/reports/ripr-zero-status.json) [--coverage target/ripr/reports/coverage-summary.json] [--out target/ripr/reports/coverage-grip-frontier.json]
ripr assistant-loop proof --pr-guidance target/ripr/review/comments.json --agent-packet target/ripr/workflow/agent-brief.json --before target/ripr/pilot/repo-exposure.json --after target/ripr/pilot/after.repo-exposure.json --receipt target/ripr/reports/agent-receipt.json [--out target/ripr/reports/test-oracle-assistant-proof.json]
ripr assistant-loop health --proof target/ripr/reports/test-oracle-assistant-proof.json [--out target/ripr/reports/assistant-loop-health.json]
ripr first-action [--root .] [--pr-guidance target/ripr/review/comments.json] [--assistant-proof target/ripr/reports/test-oracle-assistant-proof.json] [--ledger target/ripr/reports/pr-evidence-ledger.json] [--out target/ripr/reports/first-useful-action.json]
ripr reports index [--reports-dir target/ripr/reports] [--review-dir target/ripr/review] [--out target/ripr/reports/index.json]
ripr calibrate cargo-mutants --mutants-json PATH --repo-exposure-json PATH [--format md|json] [--out PATH]
ripr agent start --root . --seam-id ID [--out target/ripr/workflow]
ripr agent brief --root . (--diff PATH|--base REV|--files PATHS|--seam-id ID) --json
ripr agent packet --root . --seam-id ID --json
ripr agent verify --root . --before before.json --after after.json --json
ripr agent receipt --root . --verify-json agent-verify.json --seam-id ID --json
ripr agent status --root . [--json]
ripr agent review-summary --root . [--json]
ripr check [--base origin/main] [--diff PATH] [--mode draft] [--format FORMAT]
ripr explain [--base REV|--diff PATH] <finding-id|file:line>
ripr context [--base REV|--diff PATH] --at <finding-id|file:line>
ripr lsp [--stdio]
ripr doctor
What it does:
Reads changed Rust code, creates mutation-like probes, and estimates whether
tests appear to reach, infect, propagate, and reveal the changed behavior
through meaningful oracles. It does not run mutants.
Quick start:
ripr doctor
ripr pilot
ripr outcome --before target/ripr/pilot/repo-exposure.json --after target/ripr/pilot/after.repo-exposure.json
ripr evidence-health --root .
ripr review-comments --root . --base origin/main --head HEAD --out target/ripr/review/comments.json
ripr gate evaluate --pr-guidance target/ripr/review/comments.json --mode visible-only
ripr baseline create --from target/ripr/reports/gate-decision.json --out .ripr/gate-baseline.json
ripr baseline diff --baseline .ripr/gate-baseline.json --current target/ripr/reports/gate-decision.json
ripr baseline update --baseline .ripr/gate-baseline.json --current target/ripr/reports/gate-decision.json --remove-resolved
ripr zero status --baseline .ripr/gate-baseline.json --delta target/ripr/reports/baseline-debt-delta.json --gate target/ripr/reports/gate-decision.json
ripr pr-ledger record --pr-number 123 --base origin/main --head HEAD --baseline-delta target/ripr/reports/baseline-debt-delta.json --zero-status target/ripr/reports/ripr-zero-status.json
ripr pr-comments plan --pr-guidance target/ripr/review/comments.json --mode plan
ripr pr-review front-panel --pr-guidance target/ripr/review/comments.json --first-action target/ripr/reports/first-useful-action.json --ledger target/ripr/reports/pr-evidence-ledger.json
ripr coverage-grip frontier --ledger target/ripr/reports/pr-evidence-ledger.json --coverage target/ripr/reports/coverage-summary.json
ripr assistant-loop proof --pr-guidance target/ripr/review/comments.json --agent-packet target/ripr/workflow/agent-brief.json --before target/ripr/pilot/repo-exposure.json --after target/ripr/pilot/after.repo-exposure.json --receipt target/ripr/reports/agent-receipt.json
ripr assistant-loop health --proof target/ripr/reports/test-oracle-assistant-proof.json
ripr first-action --pr-guidance target/ripr/review/comments.json --assistant-proof target/ripr/reports/test-oracle-assistant-proof.json --ledger target/ripr/reports/pr-evidence-ledger.json
ripr reports index
ripr calibrate cargo-mutants --mutants-json target/mutants/outcomes.json --repo-exposure-json target/ripr/pilot/after.repo-exposure.json
ripr agent start --root . --seam-id f3c9e4d21a0b7c88
ripr agent brief --root . --diff change.diff --json
ripr agent packet --root . --seam-id f3c9e4d21a0b7c88 --json
ripr agent verify --root . --before target/ripr/workflow/before.repo-exposure.json --after target/ripr/workflow/after.repo-exposure.json --json
ripr agent receipt --root . --verify-json target/ripr/workflow/agent-verify.json --seam-id f3c9e4d21a0b7c88 --json
ripr agent status --root .
ripr agent review-summary --root .
ripr check --diff crates/ripr/examples/sample/example.diff
ripr check --diff crates/ripr/examples/sample/example.diff --json
ripr explain --diff crates/ripr/examples/sample/example.diff <finding-id>
"#;
const INIT_HELP: &str = r#"Usage: ripr init [--root PATH] [--ci github] [--dry-run] [--force]
`ripr init` is optional. It writes the built-in defaults to a repo-local
ripr.toml so teams can commit, review, and tune policy. Missing ripr.toml is
the normal first-run state and uses the same defaults. Running `ripr init` does
not unlock basic CLI, editor, or pilot usefulness.
Options:
--root PATH Workspace root where ripr.toml should be written. Defaults to current directory.
--ci github Also write .github/workflows/ripr.yml with advisory reports and optional SARIF rendering/upload.
--dry-run Print the generated config without writing.
--force Overwrite an existing ripr.toml or generated workflow.
Generated config:
- uses draft analysis mode and includes unchanged tests
- shows actionable weak or missing seams with default severities
- hides seams whose configured severity is off
- records the built-in saved-workspace LSP seam diagnostic default
- remains advisory and does not configure CI blocking or mutation execution
Generated GitHub workflow:
- installs ripr and writes a pilot packet plus repo report artifacts
- uploads report artifacts and writes a reviewer-oriented advisory summary
- surfaces future PR test guidance reports as non-blocking check annotations
- renders and uploads diff/repo SARIF only while RIPR_UPLOAD_SARIF is true
- uses continue-on-error for advisory RIPR work and upload steps
- does not enable baseline failure policy by default
"#;
const PILOT_HELP: &str = r#"Usage: ripr pilot [--root PATH] [--out PATH] [--mode MODE] [--max-seams N] [--timeout-ms MS]
Options:
--root PATH Workspace root to analyze. Defaults to current directory.
--out PATH Output directory for the pilot packet. Defaults to target/ripr/pilot.
--mode MODE instant, draft, fast, deep, or ready. Defaults to draft unless ripr.toml sets one.
--max-seams N Maximum ranked seams in the pilot summary. Defaults to 5.
--timeout-ms MS Maximum analysis budget before writing a partial summary. Defaults to 30000.
Outputs:
- repo-exposure.json and repo-exposure.md
- agent-seam-packets.json
- pilot-summary.json and pilot-summary.md
The pilot packet is advisory. It reports saved-workspace static seam evidence
and points to one next focused test action; it does not run mutation testing,
edit source files, or configure CI policy. If analysis exceeds the timeout,
pilot-summary.json and pilot-summary.md are written with status=partial and an
explicit retry command.
"#;
const OUTCOME_HELP: &str = r#"Usage: ripr outcome --before PATH --after PATH [--format md|json] [--out PATH]
Options:
--before PATH Repo-exposure JSON snapshot before the focused test.
--after PATH Repo-exposure JSON snapshot after the focused test.
--format FORMAT md, markdown, text, or json. Defaults to md.
--out PATH Write the rendered receipt to a file instead of stdout.
The outcome receipt is advisory. It compares static repo-exposure snapshots by
seam_id and reports moved, unchanged, regressed, new, and removed seams; it
does not run analysis, mutation testing, or CI policy.
"#;
const EVIDENCE_HEALTH_HELP: &str = r#"Usage: ripr evidence-health [--root PATH] [--out PATH] [--out-md PATH] [--mutation-calibration PATH]
Options:
--root PATH Workspace root to summarize. Defaults to current directory.
--out PATH JSON output path. Defaults to target/ripr/reports/evidence-health.json.
--out-md PATH Markdown output path. Defaults to target/ripr/reports/evidence-health.md.
--mutation-calibration PATH Optional imported mutation-calibration JSON for calibration availability counts.
The evidence-health report is an advisory Lane 1 analyzer-health view. It
summarizes seam grip classes, missing discriminators, observed values, related
test confidence, oracle strength, unknown static stages, and optional imported
calibration availability. It does not change analyzer behavior, run mutation
testing, edit source files, configure CI policy, or make gate decisions.
"#;
const REVIEW_COMMENTS_HELP: &str = r#"Usage: ripr review-comments [--root PATH] --base SHA --head SHA [--out PATH]
Options:
--root PATH Workspace root. Defaults to current directory.
--base SHA Pull-request base revision.
--head SHA Pull-request head revision.
--out PATH JSON output path. Defaults to target/ripr/review/comments.json.
The review-comments command writes a bounded advisory PR guidance report as
JSON plus a sibling Markdown file. It joins existing static seam evidence with
the changed-line diff and only places line guidance on changed lines. It does
not post to GitHub, edit source, generate tests, run mutation testing, or make
CI blocking by default.
"#;
const GATE_HELP: &str = r#"Usage: ripr gate evaluate --pr-guidance PATH [--mode MODE] [--out PATH] [--out-md PATH]
Options:
--root PATH Workspace root. Defaults to current directory.
--repo-exposure PATH Optional repo-exposure JSON input.
--pr-guidance PATH Required PR guidance JSON from `ripr review-comments`.
--sarif-policy PATH Optional SARIF policy JSON input.
--labels-json PATH Optional JSON array or object with labels.
--label LABEL Repeatable current PR label input.
--agent-verify PATH Optional agent verify JSON input.
--agent-receipt PATH Optional agent receipt JSON input.
--recommendation-calibration PATH Optional recommendation calibration JSON input.
--mutation-calibration PATH Optional imported mutation calibration JSON input.
--baseline PATH Explicit baseline for baseline-check or calibrated-gate.
--mode MODE visible-only, acknowledgeable, baseline-check, or calibrated-gate. Defaults to visible-only.
--acknowledgement-label LABEL Repeatable acknowledgement label. Defaults to ripr-waive.
--out PATH JSON output path. Defaults to target/ripr/reports/gate-decision.json.
--out-md PATH Markdown output path. Defaults to --out with .md extension.
The gate evaluator is read-only policy over existing RIPR evidence. It writes
JSON and Markdown before returning a non-zero exit for `blocked` or
`config_error` decisions. It does not post comments, edit source, generate
tests, run mutation testing, upload SARIF, mutate GitHub state, or change
generated workflow defaults.
"#;
const BASELINE_HELP: &str = r#"Usage:
ripr baseline create --from PATH [--out PATH] [--dry-run] [--force]
ripr baseline diff --baseline PATH --current PATH [--out PATH] [--out-md PATH]
ripr baseline update --baseline PATH --current PATH --remove-resolved [--out PATH]
Create options:
--from PATH Gate-decision JSON from `ripr gate evaluate`.
--out PATH Baseline ledger path. Defaults to .ripr/gate-baseline.json.
--dry-run Print the baseline ledger JSON without writing.
--force Overwrite an existing baseline ledger.
Diff options:
--baseline PATH Reviewed baseline ledger. Defaults are supplied by callers.
--current PATH Current gate-decision JSON from `ripr gate evaluate`.
--out PATH JSON output path. Defaults to target/ripr/reports/baseline-debt-delta.json.
--out-md PATH Markdown output path. Defaults to target/ripr/reports/baseline-debt-delta.md.
Update options:
--baseline PATH Reviewed baseline ledger to refresh.
--current PATH Current gate-decision JSON from `ripr gate evaluate`.
--remove-resolved Required shrink-only mode; remove identities absent from current evidence.
--out PATH Updated baseline path. Defaults to --baseline.
The baseline create command writes a stable reviewed historical-debt ledger
from existing gate-decision evidence. It includes advisory, acknowledged, and
blocking identities; skips suppressed, configured-off, not-applicable, and
malformed decisions; and refuses to overwrite by default. It does not edit
source, run analysis, run mutation testing, generate tests, change gate policy,
or make CI blocking by default.
The baseline diff command compares a reviewed baseline ledger with current
gate-decision evidence and writes advisory JSON/Markdown debt movement. It
reports still-present, resolved, new policy-eligible, acknowledged, suppressed,
stale, invalid, and missing-input identities. It does not update baselines,
edit source, run analysis, run mutation testing, generate tests, change gate
policy, or make CI blocking by default.
The baseline update command refreshes a reviewed baseline ledger in shrink-only
mode. `--remove-resolved` removes reviewed identities that are absent from the
current gate-decision evidence, preserves malformed or ambiguous entries for
manual review, and never adopts new current debt. Generated CI should not use
this command to rewrite checked-in baselines automatically.
"#;
const ZERO_HELP: &str = r#"Usage: ripr zero status --delta PATH [--baseline PATH] [--gate PATH] [--pr-guidance PATH] [--recommendation-calibration PATH] [--out PATH] [--out-md PATH]
Status options:
--baseline PATH Optional reviewed gate baseline ledger.
--delta PATH Required baseline-debt-delta JSON from `ripr baseline diff`.
--gate PATH Optional gate-decision JSON from `ripr gate evaluate`.
--pr-guidance PATH Optional PR guidance JSON from `ripr review-comments`.
--recommendation-calibration PATH Optional recommendation calibration JSON.
--out PATH JSON output path. Defaults to target/ripr/reports/ripr-zero-status.json.
--out-md PATH Markdown output path. Defaults to target/ripr/reports/ripr-zero-status.md.
The RIPR Zero status report is read-only advisory progress evidence over
existing baselines, baseline debt deltas, gate decisions, PR guidance, and
optional calibration artifacts. It reports visible unresolved debt, baseline
movement, metadata health, top debt areas, and bounded repair routes. It does
not run analysis, mutate baselines, edit source, generate tests, call an LLM,
run mutation testing, change gate policy, or make CI blocking by default.
"#;
const PR_LEDGER_HELP: &str = r#"Usage: ripr pr-ledger record --pr-number VALUE --base REV --head REV [--gate PATH] [--baseline-delta PATH] [--zero-status PATH] [--pr-guidance PATH] [--recommendation-calibration PATH] [--agent-receipt PATH] [--coverage PATH] [--history PATH] [--out PATH] [--out-md PATH]
Record options:
--pr-number VALUE Pull request number or local identifier.
--base REV Pull request base revision.
--head REV Pull request head revision.
--label LABEL Repeatable PR label to preserve in the record.
--gate PATH Optional gate-decision JSON from `ripr gate evaluate`.
--baseline-delta PATH Optional baseline-debt-delta JSON from `ripr baseline diff`.
--zero-status PATH Optional RIPR Zero status JSON from `ripr zero status`.
--pr-guidance PATH Optional PR guidance JSON from `ripr review-comments`.
--recommendation-calibration PATH Optional recommendation calibration JSON.
--agent-receipt PATH Optional agent receipt JSON.
--coverage PATH Optional coverage summary JSON.
--history PATH Optional previous PR evidence ledger JSONL history.
--out PATH JSON output path. Defaults to target/ripr/reports/pr-evidence-ledger.json.
--out-md PATH Markdown output path. Defaults to target/ripr/reports/pr-evidence-ledger.md.
The PR evidence ledger is read-only advisory history over existing RIPR
artifacts. It records PR-local movement, waiver visibility, suppressions,
repair receipts, and optional coverage/grip frontier signals. It does not run
analysis, mutate baselines, post comments, edit source, generate tests, call an
LLM, run mutation testing, change gate policy, or make CI blocking by default.
"#;
const PR_COMMENTS_HELP: &str = r#"Usage: ripr pr-comments plan [--root PATH] [--pr-guidance PATH] [--existing-comments PATH] [--mode off|plan|inline] [--pull-request N] [--event-name NAME] [--head-repo OWNER/REPO] [--base-repo OWNER/REPO] [--token-available] [--no-write-permission] [--out PATH] [--out-md PATH]
Plan options:
--root PATH Workspace root label. Defaults to current directory.
--pr-guidance PATH PR guidance JSON from `ripr review-comments`.
--existing-comments PATH Optional existing RIPR comment metadata.
--mode MODE off, plan, or inline. Defaults to off.
--pull-request N Pull request number for inline safety checks.
--event-name NAME GitHub event name, usually pull_request.
--head-repo OWNER/REPO Pull request head repository.
--base-repo OWNER/REPO Pull request base repository.
--token-available Mark a pull-request write token as available.
--no-token Mark the token as unavailable. This is the default.
--write-permission Mark pull-request write permission as available. This is the default.
--no-write-permission Mark pull-request write permission as unavailable.
--max-inline-comments N Maximum publishable inline comments. Defaults to 3.
--out PATH JSON output path. Defaults to target/ripr/review/comment-publish-plan.json.
--out-md PATH Markdown output path. Defaults to target/ripr/review/comment-publish-plan.md.
The PR comments plan is a read-only advisory projection over existing
`ripr review-comments` output and optional existing-comment metadata. It emits
create/update/keep/delete/skip/blocked operations for a later explicit
publisher, but it never posts comments, calls GitHub, edits source, generates
tests, runs mutation testing, changes gate authority, or makes CI blocking by
default.
"#;
const PR_REVIEW_HELP: &str = r#"Usage: ripr pr-review front-panel [--root PATH] [--pr-guidance PATH] [--first-action PATH] [--assistant-proof PATH] [--assistant-health PATH] [--ledger PATH] [--baseline-delta PATH] [--zero-status PATH] [--gate-decision PATH] [--recommendation-calibration PATH] [--mutation-calibration PATH] [--coverage-frontier PATH] [--receipt PATH] [--out PATH] [--out-md PATH]
Front-panel options:
--root PATH Workspace root label. Defaults to current directory.
--pr-guidance PATH Optional PR guidance JSON from `ripr review-comments`.
--first-action PATH Optional first-useful-action JSON.
--assistant-proof PATH Optional proof JSON from `ripr assistant-loop proof`.
--assistant-health PATH Optional health JSON from `ripr assistant-loop health`.
--ledger PATH Optional PR evidence ledger JSON.
--baseline-delta PATH Optional baseline-debt-delta JSON.
--zero-status PATH Optional RIPR Zero status JSON.
--gate-decision PATH Optional gate-decision JSON; gate remains pass/fail authority.
--recommendation-calibration PATH Optional recommendation calibration JSON.
--mutation-calibration PATH Optional imported mutation calibration JSON.
--coverage-frontier PATH Optional coverage/grip frontier JSON.
--receipt PATH Optional agent or targeted-test receipt JSON.
--out PATH JSON output path. Defaults to target/ripr/reports/pr-review-front-panel.json.
--out-md PATH Markdown output path. Defaults to target/ripr/reports/pr-review-front-panel.md.
The PR review front panel is a read-only advisory first-screen report over
explicit existing RIPR artifacts. It shows the top issue or fallback, policy
state, movement, repair route, receipt state, calibration context, and artifact
groups. It does not rerun analysis, edit source, generate tests, call a
provider, run mutation testing, publish inline comments, or make CI blocking by
default.
"#;
const REPORTS_HELP: &str = r#"Usage: ripr reports index [--root PATH] [--reports-dir PATH] [--review-dir PATH] [--receipts-dir PATH] [--workflow-dir PATH] [--agent-dir PATH] [--pilot-dir PATH] [--ci-dir PATH] [--out PATH] [--out-md PATH]
Index options:
--root PATH Workspace root label. Defaults to current directory.
--reports-dir PATH Directory containing report artifacts. Defaults to target/ripr/reports.
--review-dir PATH Directory containing PR guidance artifacts. Defaults to target/ripr/review.
--receipts-dir PATH Directory containing receipt artifacts. Defaults to target/ripr/receipts.
--workflow-dir PATH Directory containing workflow repair artifacts. Defaults to target/ripr/workflow.
--agent-dir PATH Directory containing agent handoff artifacts. Defaults to target/ripr/agent.
--pilot-dir PATH Directory containing pilot artifacts. Defaults to target/ripr/pilot.
--ci-dir PATH Directory containing CI context artifacts. Defaults to target/ci.
--out PATH JSON output path. Defaults to target/ripr/reports/index.json.
--out-md PATH Markdown output path. Defaults to target/ripr/reports/index.md.
The report-packet index is a read-only advisory map over explicit existing
RIPR artifacts. It groups reports by reviewer use, names the start-here
artifact, preserves gate-decision as the configured pass/fail authority,
lists missing expected surfaces with regeneration commands when known, and
does not rerun analysis, edit source, generate tests, call providers, run
mutation testing, publish inline comments, or make CI blocking by default.
"#;
const COVERAGE_GRIP_HELP: &str = r#"Usage: ripr coverage-grip frontier (--ledger PATH|--baseline-delta PATH|--zero-status PATH) [--coverage PATH] [--out PATH] [--out-md PATH]
Frontier options:
--coverage PATH Optional coverage summary JSON.
--ledger PATH Optional PR evidence ledger JSON from `ripr pr-ledger record`.
--baseline-delta PATH Optional baseline-debt-delta JSON from `ripr baseline diff`.
--zero-status PATH Optional RIPR Zero status JSON from `ripr zero status`.
--out PATH JSON output path. Defaults to target/ripr/reports/coverage-grip-frontier.json.
--out-md PATH Markdown output path. Defaults to target/ripr/reports/coverage-grip-frontier.md.
The coverage/grip frontier report is read-only advisory evidence. It keeps
line execution coverage and RIPR behavioral grip movement as separate axes. It
does not treat coverage as adequacy, run mutation testing, change gate policy,
or make CI blocking by default.
"#;
const ASSISTANT_LOOP_HELP: &str = r#"Usage:
ripr assistant-loop proof [--pr-guidance PATH] [--agent-packet PATH] [--before PATH] [--after PATH] [--receipt PATH] [--ledger PATH] [--coverage-frontier PATH] [--gate-decision PATH] [--out PATH] [--out-md PATH]
ripr assistant-loop health --proof PATH [--proof PATH ...] [--out PATH] [--out-md PATH]
Proof options:
--root PATH Workspace root label. Defaults to current directory.
--pr-guidance PATH Optional PR guidance JSON from `ripr review-comments`.
--agent-packet PATH Optional editor/agent handoff JSON from `ripr agent brief`.
--before PATH Optional before repo-exposure JSON snapshot.
--after PATH Optional after repo-exposure JSON snapshot.
--receipt PATH Optional agent receipt JSON from `ripr agent receipt`.
--ledger PATH Optional PR evidence ledger JSON from `ripr pr-ledger record`.
--coverage-frontier PATH Optional coverage/grip frontier JSON.
--gate-decision PATH Optional gate-decision JSON from `ripr gate evaluate`.
--out PATH JSON output path. Defaults to target/ripr/reports/test-oracle-assistant-proof.json.
--out-md PATH Markdown output path. Defaults to target/ripr/reports/test-oracle-assistant-proof.md.
The assistant-loop proof report is read-only advisory evidence over explicit
Campaign 20 artifacts. It requires at least one supplied artifact input, joins
PR guidance, agent handoff packets, before and after static evidence, receipts,
and optional CI projection artifacts, and marks missing proof pieces as
incomplete or unknown. It does not rerun analysis, post comments, edit source,
generate tests, call a provider, run mutation testing, change gate policy, or
make CI blocking by default.
Health options:
--root PATH Workspace root label. Defaults to current directory.
--proof PATH Explicit test-oracle assistant proof JSON. Repeatable.
--out PATH JSON output path. Defaults to target/ripr/reports/assistant-loop-health.json.
--out-md PATH Markdown output path. Defaults to target/ripr/reports/assistant-loop-health.md.
The assistant-loop health report is read-only advisory evidence over explicit
test-oracle assistant proof JSON artifacts. It summarizes proof completeness,
missing inputs, static movement, recurring warnings, and bounded repair queues.
It does not rerun analysis, inspect source to infer missing data, edit source,
generate tests, call a provider, run mutation testing, change gate policy, or
make CI blocking by default.
"#;
const FIRST_ACTION_HELP: &str = r#"Usage: ripr first-action [--root PATH] [--pr-guidance PATH] [--assistant-proof PATH] [--ledger PATH] [--baseline-delta PATH] [--receipt PATH] [--gate-decision PATH] [--coverage-frontier PATH] [--editor-context PATH] [--out PATH] [--out-md PATH]
Options:
--root PATH Workspace root label. Defaults to current directory.
--pr-guidance PATH Optional PR guidance JSON from `ripr review-comments`.
--assistant-proof PATH Optional proof JSON from `ripr assistant-loop proof`.
--ledger PATH Optional PR evidence ledger JSON from `ripr pr-ledger record`.
--baseline-delta PATH Optional baseline-debt-delta JSON from `ripr baseline diff`.
--receipt PATH Optional agent receipt JSON from `ripr agent receipt`.
--gate-decision PATH Optional gate-decision JSON from `ripr gate evaluate`.
--coverage-frontier PATH Optional coverage/grip frontier JSON.
--editor-context PATH Optional editor evidence context packet JSON.
--out PATH JSON output path. Defaults to target/ripr/reports/first-useful-action.json.
--out-md PATH Markdown output path. Defaults to target/ripr/reports/first-useful-action.md.
The first-action report is a read-only advisory router over explicit existing
RIPR artifacts. It writes one next useful test action or one fallback reason
for developers, reviewers, or coding agents. It does not rerun analysis, post
comments, edit source, generate tests, call a provider, run mutation testing,
invent policy, or make CI blocking by default.
"#;
const CALIBRATE_HELP: &str = r#"Usage: ripr calibrate cargo-mutants --mutants-json PATH --repo-exposure-json PATH [--format md|json] [--out PATH]
Options:
--mutants-json PATH cargo-mutants JSON file, or directory containing outcomes.json and/or mutants.json.
--repo-exposure-json PATH RIPR repo-exposure-json snapshot to join against.
--format FORMAT md, markdown, text, or json. Defaults to md.
--out PATH Write the rendered calibration report to a file instead of stdout.
The calibration report is advisory. It imports already-produced runtime
mutation data and joins it to static seam evidence by seam_id first, then by
unambiguous file/line. It does not run mutation testing, alter static
classifications, or configure CI policy.
"#;
const AGENT_HELP: &str = r#"Usage: ripr agent <subcommand>
Subcommands:
start Write a source-edit-free workflow manifest for one seam.
brief Rank a working-set brief for the agent-active router.
packet Expand one visible seam into the existing agent seam packet JSON.
verify Compare before/after repo-exposure JSON for agent verification.
receipt Summarize one seam from agent verify JSON for review handoff.
status Report existing agent-loop artifacts and the next missing command.
review-summary
Join agent-loop artifacts into a compact review packet.
Run `ripr agent start --help` for the workflow manifest, `ripr agent brief
--help`, `ripr agent packet --help`, or `ripr agent verify --help` for
JSON-only agent surfaces. Run `ripr agent receipt --help` for the verification
receipt surface, `ripr agent status --help` for the artifact status lens, and
`ripr agent review-summary --help` for the PR-review packet.
"#;
const AGENT_START_HELP: &str = r#"Usage: ripr agent start [--root PATH] --seam-id ID [--out PATH]
Options:
--root PATH Workspace root. Defaults to current directory.
--seam-id ID Select one visible seam by ID.
--out PATH Workflow output directory. Defaults to target/ripr/workflow.
The start command writes a source-edit-free workflow packet for one seam:
workflow.json, commands.md, and agent-brief.json. The packet contains artifact
paths and shared command templates for the before snapshot, packet, brief,
after snapshot, verify, and receipt steps. It remains advisory and static; it
does not call an LLM API, run mutation testing, generate tests, edit files,
change cache behavior, or touch LSP/MCP surfaces.
"#;
const AGENT_BRIEF_HELP: &str = r#"Usage: ripr agent brief [--root PATH] (--diff PATH|--base REV|--files PATHS|--seam-id ID) --json [--max-seams N]
Options:
--root PATH Workspace root. Defaults to current directory.
--diff PATH Select a diff file and line-level working set.
--base REV Derive the working set from a base revision.
--files PATHS Comma-separated repo-relative file paths.
--seam-id ID Select one visible seam by ID.
--json Required until a human brief surface exists.
--max-seams N Requested seam cap. Defaults to 3 and cannot exceed 10.
This parser is the first implementation seam for RIPR-SPEC-0010. The brief
router remains advisory and static; it does not run mutation testing, generate
tests, edit files, change cache behavior, or touch LSP/MCP surfaces.
"#;
const AGENT_PACKET_HELP: &str = r#"Usage: ripr agent packet [--root PATH] --seam-id ID --json
Options:
--root PATH Workspace root. Defaults to current directory.
--seam-id ID Select one visible seam by ID.
--json Required until a human packet surface exists.
The packet command expands a seam selected by `ripr agent brief` into the
existing agent-seam-packets-json envelope with one packet. It remains advisory
and static; it does not run mutation testing, generate tests, edit files, change
cache behavior, or touch LSP/MCP surfaces.
"#;
const AGENT_VERIFY_HELP: &str = r#"Usage: ripr agent verify [--root PATH] --before PATH --after PATH --json
Options:
--root PATH Workspace root. Defaults to current directory.
--before PATH Before `repo-exposure-json` snapshot.
--after PATH After `repo-exposure-json` snapshot.
--json Required until a human verify surface exists.
The verify command compares two saved static repo-exposure artifacts and emits
an agent-focused before/after summary. Snapshot paths must resolve under
`--root`. The command remains advisory and static; it does not run analysis,
mutation testing, generate tests, edit files, change cache behavior, or touch
LSP/MCP surfaces.
"#;
const AGENT_RECEIPT_HELP: &str = r#"Usage: ripr agent receipt [--root PATH] --verify-json PATH --seam-id ID --json [--test NAME] [--command CMD] [--out PATH]
Options:
--root PATH Workspace root. Defaults to current directory.
--verify-json PATH JSON emitted by `ripr agent verify`.
--seam-id ID Select one seam from the verify JSON.
--json Required until a human receipt surface exists.
--test NAME Optional focused test added or changed by the agent.
--command CMD Optional verification command that was run. Repeatable.
--out PATH Write the JSON receipt to a file instead of stdout.
The receipt command narrows a saved agent verify artifact to one seam and adds
handoff metadata for review. The verify JSON path and the before/after snapshot
paths named inside it must resolve under `--root`; receipt provenance hashes
those three artifacts without rerunning analysis. It remains advisory and
static; it does not run analysis, mutation testing, generate tests, edit files,
change cache behavior, or touch LSP/MCP surfaces.
"#;
const AGENT_STATUS_HELP: &str = r#"Usage: ripr agent status [--root PATH] [--json]
Options:
--root PATH Workspace root. Defaults to current directory.
--json Emit the machine-readable status report. Human Markdown is the default.
The status command reads existing agent-loop artifacts under target/ripr only
and reports which before snapshot, after snapshot, brief, packet, verify, and
receipt files are present or missing. It may recover a seam_id from those
artifacts and emits the next command to run for missing inputs. It remains
advisory and static; it does not run analysis, mutation testing, generate
tests, edit files, change cache behavior, or touch LSP/MCP surfaces.
"#;
const AGENT_REVIEW_SUMMARY_HELP: &str = r#"Usage: ripr agent review-summary [--root PATH] [--json]
Options:
--root PATH Workspace root. Defaults to current directory.
--json Emit the machine-readable review summary. Human Markdown is the default.
The review-summary command reads existing agent-loop artifacts and joins agent
status, receipt, workflow, operator cockpit, repo exposure, LSP cockpit when
present, and local CI artifact state into a compact review packet. It remains
advisory and static; it does not run analysis, mutation testing, generate
tests, edit files, change cache behavior, or touch LSP/MCP surfaces.
"#;
const CHECK_HELP: &str = r#"Usage: ripr check [OPTIONS]
Options:
--root PATH Workspace root. Defaults to current directory.
--base REV Base revision for git diff. Defaults to origin/main.
--diff PATH Read a unified diff file instead of running git diff.
--mode MODE instant, draft, fast, deep, or ready. Defaults to draft.
--format FORMAT human, json, github, sarif, badge-json, badge-shields,
badge-plus-json, badge-plus-shields, repo-badge-json,
repo-badge-shields, repo-badge-plus-json,
repo-badge-plus-shields, repo-seams-json,
repo-seams-md, repo-exposure-json, repo-exposure-md,
repo-sarif, agent-seam-packets-json. Defaults to human.
badge-plus-* and repo-badge-plus-* formats require
target/ripr/reports/test-efficiency.json (run
`cargo xtask test-efficiency-report` first).
repo-* and agent-seam-packets-json formats render
against the full repo baseline; the non-repo badge-*
formats remain diff-scoped.
--json Shortcut for --format json.
--no-unchanged-tests Limit the index to changed Rust files.
Examples:
ripr check
ripr check --base HEAD~1
ripr check --diff crates/ripr/examples/sample/example.diff --format github
ripr check --mode ready --json
"#;
const EXPLAIN_HELP: &str =
"Usage: ripr explain [--root PATH] [--base REV|--diff PATH] <finding-id|file:line>";
const CONTEXT_HELP: &str = "Usage: ripr context [--root PATH] [--base REV|--diff PATH] --at <finding-id|file:line> [--max-related-tests N] [--json]";
const DOCTOR_HELP: &str = r#"Usage: ripr doctor [--root PATH]
Checks:
- root directory exists
- Cargo.toml is present at the selected root
- ripr.toml load status and effective defaults are visible
- git, cargo, and rustc are available
"#;
const LSP_HELP: &str = r#"Usage: ripr lsp [--stdio] [--version]
Options:
--stdio Run the language server over stdio LSP framing. This is the default.
--version Print the language server version.
"#;
pub(super) fn print_help() {
println!("{HELP}");
}
pub(super) fn print_check_help() {
println!("{CHECK_HELP}");
}
pub(super) fn print_init_help() {
println!("{INIT_HELP}");
}
pub(super) fn print_pilot_help() {
println!("{PILOT_HELP}");
}
pub(super) fn print_outcome_help() {
println!("{OUTCOME_HELP}");
}
pub(super) fn print_evidence_health_help() {
println!("{EVIDENCE_HEALTH_HELP}");
}
pub(super) fn print_review_comments_help() {
println!("{REVIEW_COMMENTS_HELP}");
}
pub(super) fn print_gate_help() {
println!("{GATE_HELP}");
}
pub(super) fn print_baseline_help() {
println!("{BASELINE_HELP}");
}
pub(super) fn print_zero_help() {
println!("{ZERO_HELP}");
}
pub(super) fn print_pr_ledger_help() {
println!("{PR_LEDGER_HELP}");
}
pub(super) fn print_pr_comments_help() {
println!("{PR_COMMENTS_HELP}");
}
pub(super) fn print_pr_review_help() {
println!("{PR_REVIEW_HELP}");
}
pub(super) fn print_coverage_grip_help() {
println!("{COVERAGE_GRIP_HELP}");
}
pub(super) fn print_assistant_loop_help() {
println!("{ASSISTANT_LOOP_HELP}");
}
pub(super) fn print_first_action_help() {
println!("{FIRST_ACTION_HELP}");
}
pub(super) fn print_reports_help() {
println!("{REPORTS_HELP}");
}
pub(super) fn print_calibrate_help() {
println!("{CALIBRATE_HELP}");
}
pub(super) fn print_agent_help() {
println!("{AGENT_HELP}");
}
pub(super) fn print_agent_start_help() {
println!("{AGENT_START_HELP}");
}
pub(super) fn print_agent_brief_help() {
println!("{AGENT_BRIEF_HELP}");
}
pub(super) fn print_agent_packet_help() {
println!("{AGENT_PACKET_HELP}");
}
pub(super) fn print_agent_verify_help() {
println!("{AGENT_VERIFY_HELP}");
}
pub(super) fn print_agent_receipt_help() {
println!("{AGENT_RECEIPT_HELP}");
}
pub(super) fn print_agent_status_help() {
println!("{AGENT_STATUS_HELP}");
}
pub(super) fn print_agent_review_summary_help() {
println!("{AGENT_REVIEW_SUMMARY_HELP}");
}
pub(super) fn print_explain_help() {
println!("{EXPLAIN_HELP}");
}
pub(super) fn print_context_help() {
println!("{CONTEXT_HELP}");
}
pub(super) fn print_doctor_help() {
println!("{DOCTOR_HELP}");
}
pub(super) fn print_lsp_help() {
println!("{LSP_HELP}");
}
#[cfg(test)]
mod tests {
use super::{
AGENT_BRIEF_HELP, AGENT_HELP, AGENT_PACKET_HELP, AGENT_RECEIPT_HELP,
AGENT_REVIEW_SUMMARY_HELP, AGENT_START_HELP, AGENT_STATUS_HELP, AGENT_VERIFY_HELP,
ASSISTANT_LOOP_HELP, BASELINE_HELP, CALIBRATE_HELP, CHECK_HELP, CONTEXT_HELP,
COVERAGE_GRIP_HELP, DOCTOR_HELP, EVIDENCE_HEALTH_HELP, EXPLAIN_HELP, FIRST_ACTION_HELP,
GATE_HELP, HELP, INIT_HELP, LSP_HELP, OUTCOME_HELP, PILOT_HELP, PR_COMMENTS_HELP,
PR_LEDGER_HELP, PR_REVIEW_HELP, REPORTS_HELP, REVIEW_COMMENTS_HELP, ZERO_HELP,
};
#[test]
fn top_level_help_mentions_supported_commands() {
assert!(HELP.contains("ripr init"));
assert!(HELP.contains("ripr pilot"));
assert!(HELP.contains("ripr outcome"));
assert!(HELP.contains("ripr evidence-health"));
assert!(HELP.contains("ripr review-comments"));
assert!(HELP.contains("ripr gate evaluate"));
assert!(HELP.contains("ripr baseline create"));
assert!(HELP.contains("ripr baseline diff"));
assert!(HELP.contains("ripr baseline update"));
assert!(HELP.contains("ripr zero status"));
assert!(HELP.contains("ripr pr-ledger record"));
assert!(HELP.contains("ripr pr-comments plan"));
assert!(HELP.contains("ripr pr-review front-panel"));
assert!(HELP.contains("ripr coverage-grip frontier"));
assert!(HELP.contains("ripr assistant-loop proof"));
assert!(HELP.contains("ripr assistant-loop health"));
assert!(HELP.contains("ripr first-action"));
assert!(HELP.contains("ripr reports index"));
assert!(HELP.contains("ripr calibrate"));
assert!(HELP.contains("ripr agent start"));
assert!(HELP.contains("ripr agent brief"));
assert!(HELP.contains("ripr agent packet"));
assert!(HELP.contains("ripr agent verify"));
assert!(HELP.contains("ripr agent receipt"));
assert!(HELP.contains("ripr agent status"));
assert!(HELP.contains("ripr agent review-summary"));
assert!(HELP.contains("ripr check"));
assert!(HELP.contains("ripr explain"));
assert!(HELP.contains("ripr context"));
assert!(HELP.contains("ripr doctor"));
}
#[test]
fn check_help_mentions_repo_badge_formats_and_examples() {
assert!(CHECK_HELP.contains("repo-badge-plus-shields"));
assert!(CHECK_HELP.contains("repo-exposure-json"));
assert!(CHECK_HELP.contains("agent-seam-packets-json"));
assert!(CHECK_HELP.contains("repo-sarif"));
assert!(CHECK_HELP.contains("test-efficiency-report"));
assert!(CHECK_HELP.contains("--mode ready --json"));
}
#[test]
fn command_specific_help_usage_lines_are_stable() {
assert!(INIT_HELP.starts_with("Usage: ripr init"));
assert!(INIT_HELP.contains("--ci github"));
assert!(INIT_HELP.contains("--dry-run"));
assert!(INIT_HELP.contains("--force"));
assert!(PILOT_HELP.starts_with("Usage: ripr pilot"));
assert!(PILOT_HELP.contains("pilot-summary.json"));
assert!(PILOT_HELP.contains("--timeout-ms MS"));
assert!(OUTCOME_HELP.starts_with("Usage: ripr outcome"));
assert!(OUTCOME_HELP.contains("--before PATH"));
assert!(EVIDENCE_HEALTH_HELP.starts_with("Usage: ripr evidence-health"));
assert!(EVIDENCE_HEALTH_HELP.contains("--mutation-calibration PATH"));
assert!(REVIEW_COMMENTS_HELP.starts_with("Usage: ripr review-comments"));
assert!(REVIEW_COMMENTS_HELP.contains("target/ripr/review/comments.json"));
assert!(GATE_HELP.starts_with("Usage: ripr gate evaluate"));
assert!(GATE_HELP.contains("visible-only"));
assert!(GATE_HELP.contains("ripr-waive"));
assert!(BASELINE_HELP.starts_with("Usage:"));
assert!(BASELINE_HELP.contains("ripr baseline create"));
assert!(BASELINE_HELP.contains("ripr baseline diff"));
assert!(BASELINE_HELP.contains("ripr baseline update"));
assert!(BASELINE_HELP.contains(".ripr/gate-baseline.json"));
assert!(BASELINE_HELP.contains("baseline-debt-delta.json"));
assert!(BASELINE_HELP.contains("--remove-resolved"));
assert!(ZERO_HELP.starts_with("Usage: ripr zero status"));
assert!(ZERO_HELP.contains("baseline-debt-delta JSON"));
assert!(ZERO_HELP.contains("RIPR Zero status report"));
assert!(PR_LEDGER_HELP.starts_with("Usage: ripr pr-ledger record"));
assert!(PR_LEDGER_HELP.contains("pr-evidence-ledger.json"));
assert!(PR_LEDGER_HELP.contains("read-only advisory history"));
assert!(PR_COMMENTS_HELP.starts_with("Usage: ripr pr-comments plan"));
assert!(PR_COMMENTS_HELP.contains("comment-publish-plan.json"));
assert!(PR_COMMENTS_HELP.contains("read-only advisory projection"));
assert!(PR_REVIEW_HELP.starts_with("Usage: ripr pr-review front-panel"));
assert!(PR_REVIEW_HELP.contains("pr-review-front-panel.json"));
assert!(PR_REVIEW_HELP.contains("read-only advisory first-screen report"));
assert!(COVERAGE_GRIP_HELP.starts_with("Usage: ripr coverage-grip frontier"));
assert!(COVERAGE_GRIP_HELP.contains("coverage-grip-frontier.json"));
assert!(COVERAGE_GRIP_HELP.contains("separate axes"));
assert!(ASSISTANT_LOOP_HELP.starts_with("Usage:"));
assert!(ASSISTANT_LOOP_HELP.contains("ripr assistant-loop proof"));
assert!(ASSISTANT_LOOP_HELP.contains("ripr assistant-loop health"));
assert!(ASSISTANT_LOOP_HELP.contains("test-oracle-assistant-proof.json"));
assert!(ASSISTANT_LOOP_HELP.contains("assistant-loop-health.json"));
assert!(ASSISTANT_LOOP_HELP.contains("Campaign 20 artifacts"));
assert!(FIRST_ACTION_HELP.starts_with("Usage: ripr first-action"));
assert!(FIRST_ACTION_HELP.contains("first-useful-action.json"));
assert!(FIRST_ACTION_HELP.contains("read-only advisory router"));
assert!(REPORTS_HELP.starts_with("Usage: ripr reports index"));
assert!(REPORTS_HELP.contains("target/ripr/reports/index.json"));
assert!(REPORTS_HELP.contains("read-only advisory map"));
assert!(CALIBRATE_HELP.starts_with("Usage: ripr calibrate cargo-mutants"));
assert!(CALIBRATE_HELP.contains("--mutants-json PATH"));
assert!(AGENT_HELP.starts_with("Usage: ripr agent"));
assert!(AGENT_START_HELP.starts_with("Usage: ripr agent start"));
assert!(AGENT_START_HELP.contains("workflow.json"));
assert!(AGENT_BRIEF_HELP.starts_with("Usage: ripr agent brief"));
assert!(AGENT_BRIEF_HELP.contains("--max-seams N"));
assert!(AGENT_BRIEF_HELP.contains("RIPR-SPEC-0010"));
assert!(AGENT_PACKET_HELP.starts_with("Usage: ripr agent packet"));
assert!(AGENT_PACKET_HELP.contains("agent-seam-packets-json"));
assert!(AGENT_VERIFY_HELP.starts_with("Usage: ripr agent verify"));
assert!(AGENT_VERIFY_HELP.contains("repo-exposure-json"));
assert!(AGENT_RECEIPT_HELP.starts_with("Usage: ripr agent receipt"));
assert!(AGENT_RECEIPT_HELP.contains("--verify-json PATH"));
assert!(AGENT_STATUS_HELP.starts_with("Usage: ripr agent status"));
assert!(AGENT_STATUS_HELP.contains("before snapshot"));
assert!(AGENT_REVIEW_SUMMARY_HELP.starts_with("Usage: ripr agent review-summary"));
assert!(AGENT_REVIEW_SUMMARY_HELP.contains("Human Markdown is the default"));
assert!(EXPLAIN_HELP.starts_with("Usage: ripr explain"));
assert!(CONTEXT_HELP.starts_with("Usage: ripr context"));
assert!(DOCTOR_HELP.starts_with("Usage: ripr doctor [--root PATH]"));
assert!(DOCTOR_HELP.contains("Cargo.toml"));
assert!(LSP_HELP.contains("--stdio"));
assert!(LSP_HELP.contains("--version"));
}
}