Public-facing read surface for the v0.36.0.0 calibration wave. CLI prints
the active calibration profile; MCP op exposes the same data path for
agents. Mirror of the v0.29 salience/anomalies shape (pure data fn + JSON
formatter + human formatter + thin CLI dispatch).
CLI: `gbrain calibration`
Flags:
--holder <id> specific holder (default 'garry')
--json machine output for piping
--regenerate run calibration_profile phase now
--undo-wave <ver> [placeholder — wires in Lane D / T17]
ab-report [placeholder — wires in Lane D / T18]
Human output:
Calibration profile — holder: garry, source: default
Generated: <local timestamp>
[Note: built on 60% graded — partial completion this cycle.] (when grade_completion < 0.9)
[Note: voice gate fell back to template (2 attempts).] (when voice_gate_passed=false)
Resolved: 12 takes
Brier: 0.210 (lower is better)
Accuracy: 60.0%
Partial: 10.0%
Pattern statements:
• You called early-stage tactics well — 8 of 10 held up.
Active bias tags: over-confident-geography
Cold-brain fallback message names the exact dream command to run.
MCP: `get_calibration_profile` (scope: read)
Param: holder?: string (defaults to 'garry')
Returns: latest CalibrationProfileRow | null
Source-scoping via sourceScopeOpts(ctx): scalar source-bound clients see
only their source; federated_read scopes see the union of allowed sources;
no source filter when neither is set (CLI default path).
Throws GBrainError('INVALID_HOLDER') on empty/non-string holder so
remote callers get a structured error instead of a SQL-shape failure.
Architecture:
getLatestProfile is the pure data fn — engine + opts → CalibrationProfileRow | null.
Reused by both the CLI and the MCP op. Source-scoped via the standard
v0.34.1 spread pattern (scalar sourceId vs sourceIds array).
formatProfileText is pure — null → cold-brain message, populated → full
printout. Annotates partial-grade rows and voice-gate-fallback rows so
the operator sees data-quality status inline.
parseArgs is exported via __testing for unit coverage. Sub-command
('ab-report') vs flag distinction is intentional — keeps the surface
parallel with `gbrain eval cross-modal` etc.
Tests: 21 cases.
parseArgs (6 cases): empty, --holder, --json, --regenerate, --undo-wave, ab-report.
getLatestProfile (5 cases): happy, null, scalar source scope, federated array
scope, no-source-filter default.
formatProfileText (5 cases): cold-brain, happy, partial-grade note, voice-fallback
note, published-to-mounts note.
getCalibrationProfileOp (5 cases): default holder, scalar source scope,
federated scope union, returns-null-on-unknown-holder, throws on empty holder.
Lane D follow-ups: --undo-wave (T17) and ab-report (T18) print a clear
"lands in Lane D" stderr line + exit 2; the surfaces exist for early
testers, the implementations land next.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>