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
- #1 The report produced by just signal-fidelity measures at or under 27,212 lines, pasted, on main
- #2 No finding, PENDING stub, contradiction or exemption disappears: the set of (class, signal, field, substrate, source) tuples before and after is identical, pinned by a test on the renderer
- #3 The size measurement and bound in docs/reality-corpus.md are unchanged, and the parent SKT-0010 AC8 is checked with the pasted count
- #4 The machine-readable report and the CI gate semantics are byte-for-byte or behaviourally unchanged, stated with evidence
Definition of Done
- #1 just check (fmt-check, lint, gen-check, env-check, docs-check, test, race, hygiene, ui-check, compose-check, helm-test, lab-check, signal-fidelity)
- #2 just gen (only if a blueprint field, construct/workload config struct, or a skill under plugins/synthkit/skills/ changed)
- #3 just dump — inventory diffed against signals/
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.