VAR

Output modes

Three output modes: human-readable (default), compact (for scripting), and JSON (for CI and tooling).

Human-readable (default)

The default output is a multi-section terminal report:

vary var -- Adaptive Review Loop
────────────────────────────────────────
Stage: check | Status: BLOCKED

Changes: 9 files (+3 ~5 -1)
  source: 4  test: 3  config: 2

Check: 2 errors, 1 warning
  src/app.vary:12  error: type mismatch
  src/lib.vary:45  error: undefined symbol

Blockers:
  1. Fix 2 check error(s)

Next: vary check src/app.vary src/lib.vary

Sections include:

SectionContent
HeaderCurrent stage and terminal classification
Change summaryCategory breakdowns
Per-stage resultsCheck errors, test pass/fail, mutation scores
Blocker listingFix suggestions
No-progress warningShown if stuck across multiple runs
Next-step recommendationExact command to run

Dry-run output

With --dry-run, the human output shows the planned pipeline instead of results:

vary var -- Dry Run
────────────────────────────────────────
Significance: HIGH (source changes in PURE_LOGIC area)

  [RUN]  discovery  9 files
  [RUN]  check      4 files
  [RUN]  test       3 files
  [SKIP] mutation   Budget capped at medium
  [SKIP] review     Not enabled

Add --explain to include per-stage rationale and scoped file lists.

Compact (--compact)

Terse multi-line output for scripting and CI. One line per concern, parseable with grep, cut, or awk:

stage=check status=blocked blockers=2
changes=+3 ~5 -1 src:4 test:3 cfg:2
check: errors=2 warnings=1
next: fix 2 check error(s)
LineContent
1Stage, status, and blocker count
2Change summary (additions, modifications, deletions, category counts)
3Per-stage result (one line per completed stage)
4Next action recommendation

JSON (--json)

Machine-readable JSON output following a versioned schema. For CI integration, dashboards, or programmatic consumption.

Schema version 1.0.0

Top-level fields (stable; not renamed or removed without a version bump):

FieldTypeDescription
schema_versionStringAlways "1.0.0"
stageStringCurrent pipeline stage
outcomeStringTerminal classification: complete, blocked, partial, advisory
changeSetObject{ size, files: [{ path, status, category, code_area }] }
comparisonObject or nullDelta to previous run: fixed, new_files, newly_affected, unchanged
completedStepsArrayStages that have completed
blockersArrayCurrent blocking issues (empty when unblocked)
recommendationStringHuman-readable next-action recommendation
nextCommandString or nullExact CLI command to run next
confidenceString"high", "medium", or "low"
checkObject or nullCheck results: { errors, warnings, details }
testObject or nullTest results: { passed, failed, skipped, details }
mutationObject or nullMutation results: { score, threshold, details }
reviewObject or nullReview packet summary
noProgressBooleanTrue if stuck without improvement
noProgressDetailsObject or nullRuns without improvement, stuck stage, repeated blockers

Example

{
  "schema_version": "1.0.0",
  "stage": "check",
  "outcome": "blocked",
  "changeSet": {
    "size": 9,
    "files": [
      { "path": "src/app.vary", "status": "M", "category": "SOURCE", "code_area": "PURE_LOGIC" },
      { "path": "tests/test_app.vary", "status": "M", "category": "TEST", "code_area": "TEST" }
    ]
  },
  "completedSteps": ["discovery", "check"],
  "blockers": ["2 check errors in src/app.vary, src/lib.vary"],
  "recommendation": "fix 2 check error(s)",
  "nextCommand": "vary check src/app.vary src/lib.vary",
  "confidence": "high",
  "check": { "errors": 2, "warnings": 1 },
  "noProgress": false
}

Dry-run JSON

With --dry-run --json, the output includes a dry_run: true flag and replaces result fields with a stages array of planned actions:

{
  "schema_version": "1.0.0",
  "dry_run": true,
  "significance": "high",
  "significance_rationale": "Source changes in PURE_LOGIC area",
  "stages": [
    { "stage": "check", "action": "run", "rationale": "Source files changed", "files": ["src/app.vary"] },
    { "stage": "mutation", "action": "skip", "rationale": "Budget capped at medium" }
  ]
}
← Decision policy