Task · SKT-0010.21

Bring the signal-fidelity report under its documented 27,212-line bound

Description

SKT-0010 AC8 states the human-readability standard (docs/reality-corpus.md: 27,212 lines) and just signal-fidelity prints the measured count, but the current report measures 28,022 lines in CI and 28,423 locally on 2026-09-06, so the parent cannot close.

Measured composition of the local report (28,423 lines): extra_metric 17,528; unknown_instrument_evidence 4,711; unexpected_label_key 4,640; label_value_contradiction 1,120. Inside extra_metric, 11,635 lines are the PENDING stub line internal/inventory/report.go:135 emits once per (signal, substrate) pair, and the same signal repeats across the seven synthkit_terraform_capture substrates (full 1917, azure 1806, aws 1135, eks 1132, aks 1119, gke 738, gcp 738 finding lines) plus gcx_live_readback eks (110). Only 2,031 distinct signal names are involved.

The lever is grouping, not dropping: render one finding per signal with its substrates and sources listed, and one PENDING stub per signal naming every substrate it is pending on. Every finding class, every contradiction, every exemption and every coverage gap stays visible; the machine-readable output and the gate semantics are unchanged. Do not weaken a threshold, add an exemption, or filter a substrate to hit the number.

Acceptance Criteria

Definition of Done

Implementation Plan

Group rendered findings and PENDING stubs without losing tuple identity; prove tuple equality test-first and preserve machine output and gate semantics. Root integrates with the non-EKS lane, runs the gate and safe explicit dump, then finalizes against measured output.

Implementation Notes

Integrated report grouping preserves 13719 unique finding tuples on the committed corpus; the full current gate reports: Report size: 6323 lines (bound: 27212; size-only breaches are report-only). CodeRabbit major fixed: each substrate/source retains its own synth/reality value pair, including swapped pairs. Corpus-backed regression runs with SYNTHKIT_SIGNAL_FIDELITY_INVENTORY set; machine inventory and exit semantics unchanged. just check and safe explicit dump passed; no emitter changed and no exemption added.

Final Summary

Integrated in 63c183ac77ccf237fb76351cd5a27537a5910523. Report size: 6323 lines (bound: 27212; size-only breaches are report-only). Committed-corpus regression and before/after comparison retain all 13719 unique finding tuples and 2919 pending signals; swapped value-pair regression passes. Parent AC8 checked. JSON inventory and command exit semantics unchanged; thresholds, filters and exemptions unchanged. just check, safe dump and agent-disabled e2e passed. Conditional just gen is not applicable.

View the source file on GitHub