Skip to content

Outputs and exit behavior

Interactive commands default to concise human-readable output. Use --json for scripts and integrations.

Hosted commands return these top-level fields:

Command Fields
rad remote doctor --json status, apiVersion, repositoryId, profiles, limits
rad remote run --artifact <plan-path> --json run, created, sourceTransfer
rad verify --yes --json run, created, sourceTransfer
rad remote status --run <run-id> --json run
rad remote findings --run <run-id> --json findings
rad remote accept --run <run-id> --finding <finding-id> --reason <reason> --json accepted, manifest, noteRecommended
rad remote cancel --run <run-id> --attempt <attempt-id> --reason <reason> --json run, applied
rad remote retry --run <run-id> --json run, created
rad waivers list --json version, waivers
rad waivers prune --artifact <plan-path> --json removedCandidateIds, remaining, applied

A run contains:

Field Meaning
id Stable run identifier.
state Current run state.
authoritativeAttemptId Attempt that produced the terminal result. Empty before a result is authoritative.
attempts Every attempt for the run in execution order.

Each attempt contains id, state, and findingsCount. Each finding contains id, attemptId, sourcePath, sourceLine, kind, and payload. The finding payload contains candidateId, mutator, outcome, original, replacement, and durationMs.

sourceTransfer describes local source preparation without recording paths or content:

Field Meaning
protocol manifest-v1 for incremental transfer or archive-v1 for full upload.
fallbackReason not-advertised, plan-unbound, or server-unsupported for an archive fallback.
captureMilliseconds Time spent reading and validating tracked source.
constructionMilliseconds Time spent constructing packs or the compressed archive.
expandedBytes Total regular-file bytes represented by the snapshot.
compressedBytes Size of the worker-facing compressed source archive.
uploadedBytes Source-file or archive bytes uploaded by this command.
reusedBytes Source-file bytes reused through the manifest protocol.
uploadedBlobs Missing blobs uploaded, or 1 for a full archive.
reusedBlobs Existing repository-scoped blobs reused.

Planning JSON is the complete plan artifact. Its fields depend on the plan contract and language. Treat the generated artifact as immutable and submit it without editing it.

State Meaning
pending_dispatch Radforge accepted the run but has not queued its attempt.
queued The attempt is waiting for hosted execution.
running Hosted execution is active.
succeeded_with_findings Execution completed and produced findings.
succeeded_without_findings Execution completed without findings.
customer_failed Repository preparation or customer tests failed, so Radforge produced no mutation result.
infrastructure_failed Radforge infrastructure failed, so the run is not mutation evidence.
mutation_timed_out Mutation execution exceeded its allowed time.
cancelled The active attempt was canceled.
unsupported The repository profile or input is outside the supported contract.

Attempt states use pending, dispatched, and running before completion. Terminal attempt states use the same terminal values as runs.

Status Meaning
0 The command completed successfully. For remote status, this can include a failed or canceled run state. verify and remote run --wait require a successful terminal state.
1 Readiness, planning, local preparation, output, or remote service work failed.
2 Command syntax, required configuration, or authentication input is invalid or missing.

Errors are written to standard error. Scripts should check the exit status and the expected JSON fields.

Run state is separate from command success. A successful remote status request can report a failed, canceled, or otherwise terminal run. Inspect the returned run and attempt states before consuming findings.

Scripts may rely on the fields and state values documented on this page. Terminal wording and formatting may change between releases.