Description
The last step of SKT-0010, and deliberately last: flipping the gate before the false positives are gone would wedge CI on 1806 findings.
Decided with Rob 2026-08-27: a contradiction fails the build; a coverage gap reports and does not. The asymmetry is the point. A contradiction means synthkit emits a shape reality contradicts, which is the defect that makes a user-built dashboard work against synthkit and break against production. A coverage gap means synthkit emits less than reality, which is a smaller and more forgivable claim, and is the normal state of a generator that models a subset of the world.
Depends on SKT-0010.01 landing and on the Contradictions section being genuinely empty or genuinely actionable first. Do not suppress a real contradiction to make the flip possible: if one survives, it is fixed or it is recorded as a deliberate, reasoned difference with an explicit exemption carrying its reason, never silently filtered.
The exemption mechanism needs to be visible in the report itself — an exempted contradiction that disappears from the output is indistinguishable from one that was fixed.
Acceptance Criteria
- #1 A contradiction finding fails the fidelity command with a non-zero exit and CI surfaces it
- #2 Coverage gaps report without failing the build
- #3 Any surviving contradiction is either fixed or carries an explicit exemption with a recorded reason
- #4 Exempted contradictions still appear in the report, marked as exempted, rather than vanishing from the output
- #5 The CI leg runs the gate on every PR and its failure output names the diverging signal and field
- #6 docs/reality-corpus.md documents what fails the build, what only reports, and how to record an exemption
Definition of Done
- #1 make gate (build vet test race rw-proto-check spdx-check forbidden-words)
- #2 make blueprint-schema (only if a blueprint field or construct/workload config struct changed)
- #3 DRY_RUN=true go run ./cmd/synthkit -once -dump — inventory diffed against signals/
Implementation Plan
Root-only and last: after all five dependencies are integrated and named contradictions are resolved, make contradictions fail while coverage gaps report; preserve visible reasoned exemptions; wire the existing CI leg; document semantics; then run final gates and exact-SHA CI.
Implementation Notes
Final verification 2026-08-29: focused tests observed contradiction non-zero exit, gap-only success, visible exemptions, strict malformed/stale/overlap rejection, and named failure output. The final report shows 256 visible exempted contradictions, zero unexempted contradictions, and 638 reporting-only coverage gaps. just signal-fidelity, just check, just dump, and just e2e passed; exact-SHA CI’s signal-fidelity and helm-validate jobs passed. No blueprint field or construct/workload config struct changed, so the conditional blueprint-schema DoD item was not applicable.
Final Summary
Enabled the fidelity gate with fail-closed, visible, reasoned exemptions: unexempted contradictions fail and coverage gaps report. Focused gate tests and local/full CI evidence passed.