Issue 515: risk score interpretation and validation preparation

Refs #515. Partial implementation; keep the Issue open. No measured point-in-time calibration dataset/results are supplied, so the full acceptance criteria remain unmet.

Selection and scope

Live queue: #571/#572/#573 CLEAN, 89 passing checks each, one scheduled-only link check skipped, no requested changes or inline review comments. No file overlap. Skipped #332/#495/#496/#298/#297 because existing branches/worktrees already exist. Skipped #497 and #507 because their proposed CI/client edits overlap open PRs. Considered #512; selected #515 as a narrower risk-interpretation change.

Replace probability claims with heuristic score labels and explicit JSON/report/CLI interpretation. Preserve score weights and risk-budget policies. Reject analogue matches for incomplete/invalid evidence or weighted RMS >15; expose nearest candidate only as a diagnostic. Specify a reproducible point-in-time dataset/evaluation protocol. Regenerate the skill package and affected generated documentation/metadata.

Plan review

Round 1: independent sub-agent identified fallback numeric components could match without actual evidence. Fixed plan to pass availability flags; invalid inputs yield null match/distance/nearest and empty comparisons. Review approved corrected plan. Also cover unrounded threshold boundaries and all output representations.

Validation

Run skill pytest, scoped Ruff, package checks, catalog/docs/index/workflow/skillset and navigator snapshot checks, pre-commit and diff checks. No live financial calls. Implementation review results and actual validation are recorded in the PR.

Implementation review

Three rounds. Round 1 found contradictory calibration claims in bundled references; round 2 found remaining outcome-likelihood descriptions in the illustrative band examples. Corrected all claims and rebuilt the package. Round 3 approved with no unresolved material findings. Full skill suite: 229 passed; targeted additions: 11 passed. Scoped Ruff passes. Standard generated/metadata checks pass after removing an unrelated duplicate Stockbee catalog row produced by the docs generator.

Existing PR CI repair (2026-10-17)

Prioritized PR #574 over new Issue work: workflow replay and repo-scripts failed because the full-path market-regime golden lacked four new interpretation fields. Coverage explicitly blocked on the failed repo-scripts row, rather than a measured coverage threshold failure. Regenerated the replay in a temporary directory; whole-tree comparison found only 03_top_risk_report.json drift. Updated that single golden with calibrated_probability, interpretation, score_kind, and score_version; all numbers, exposure decisions, and other outputs are unchanged.

Repair plan review: one round, incorporated whole-tree/numeric invariance and Coverage-log checks. Repair implementation review: one round, no findings. Validation: Python 3.12 locked dev/ci environment, 256 targeted tests passed; full workflow replay check passed; scoped Ruff, all standard generated metadata checks, pre-commit all-files, and diff checks passed. Python 3.9 replay execution is unsupported by existing Path.write_text(newline=…) usage; initial Python 3.12 run needed the locked pyarrow dependency before the full replay tests passed. Full repository matrix is deferred to GitHub CI for this golden-only repair. Refs #515 remains open; no new PR or merge.