- **Version:** 1.108.140 — **Phase C of the self-attesting contract: first gold corpus + measured channel accuracy.** New `benchmarks/goldset/`: authored Python corpus (14 files: payments protocol + subclasses, duck conformers incl. test-double/adapter, event-bus decorator handlers) with DELIBERATE traps (module-homonym `PaymentProvider` base → AST FP; electrical/legal `charge` → duck FPs; `/user_created_report` route + `cleanup_user_created_exports` task substring-matches → decorator FPs); `gold.json` labels every pair with rationale + expected channel. `measure.py`: snapshot-to-tmp (dodges the git-identity contains-path trap — NEVER index a subtree of the host repo in place), index, run find_implementations per target, join to labels; UNLABELED surfaced pair = harness error (corpus must stay complete). **Measured round 1: ast P=0.833/R=1.0 (tp5 fp1), duck P=0.6/R=1.0 (tp3 fp2), decorator P=0.6/R=1.0 (tp3 fp2)** → `benchmarks/provenance/channel_accuracy.json` (carries corpus_sha256 + scope note). `tests/test_channel_accuracy.py` (7) RE-RUNS the measurement live in CI + hash-pins the corpus + chains registry↔artifact. provenance.py: `measured_ref` per heuristic channel beside the DECLARED operating constant (deliberately NOT recalibrated — small-n would jitter ranking for false precision; declared priors held up: 0.85/0.833, 0.65/0.6, 0.45 more conservative than 0.6); `MEASURED["implementation_channel_accuracy"]`; `channel_provenance()` surfaces measured_ref (schema already permits it — additionalProperties). LSP/SCIP stay declared, no measured_ref (they're the ground-truth side). README provenance section extended. NO INDEX_VERSION / tool-count / schema change. **Corpus growth path: add languages (TS/Go), grow n per channel, then a DELIBERATE recalibration release flips constants to measured values gated by replay. jMRI normative section still LAST.**
0 commit comments