Finding
Harmonia carries 159 lint suppressions in .kanon-lint-ignore (plus a handful of inline kanon:ignore). Only 5 carry a tracking-issue reference; 154 stand on permanent WHY justifications that have never been independently audited against the code they cover. PHILOSOPHY §4: a suppression is a violation at the highest severity — the WHY blocks are the only thing between this file and silent drift, and several entries have already been found stale in practice (four no-op entries removed in the lint-debt drain PR, including one per-crate file whose suppressed field had been deleted months earlier).
Evidence
.kanon-lint-ignore: 159 entries. By rule: RUST/as-cast 28, RUST/primitive-for-domain-id 22, RUST/plain-string-secret 12, RUST/indexing-slicing 11, WRITING/ai-trope 9, RUST/string-slice 5, RUST/blocking-in-async 4, STORAGE/no-migration-checksum 3, others smaller.
- Concentrations: akouo-core DSP/decode (as-cast, indexing — plausibly genuine), syndesmos/horismos config structs (primitive-for-domain-id, plain-string-secret — wire/protocol-shaped, plausibly genuine), but each is currently self-attested.
Why this matters
Self-attested suppressions are exactly the class "a measure shown to the maker stops measuring" covers. The July audit campaign burned the open-issue backlog to zero-suppression-tolerance in new code; the standing inventory predates that bar.
Desired correction
An adversarial per-entry audit (the kanon audit engine is the right runner): for each entry, verify the WHY against the current code — keep (genuine permanent justification), fix the code and drop the entry, or convert to a tracked issue with a non-size defer rationale. Expected survivors: the DSP/codec cast classes. Expected casualties: anything justified by a shape the code no longer has.
Done when: every entry is either independently verified, removed with its code fixed, or carries a live tracking issue.
Finding
Harmonia carries 159 lint suppressions in
.kanon-lint-ignore(plus a handful of inlinekanon:ignore). Only 5 carry a tracking-issue reference; 154 stand on permanent WHY justifications that have never been independently audited against the code they cover. PHILOSOPHY §4: a suppression is a violation at the highest severity — the WHY blocks are the only thing between this file and silent drift, and several entries have already been found stale in practice (four no-op entries removed in the lint-debt drain PR, including one per-crate file whose suppressed field had been deleted months earlier).Evidence
.kanon-lint-ignore: 159 entries. By rule: RUST/as-cast 28, RUST/primitive-for-domain-id 22, RUST/plain-string-secret 12, RUST/indexing-slicing 11, WRITING/ai-trope 9, RUST/string-slice 5, RUST/blocking-in-async 4, STORAGE/no-migration-checksum 3, others smaller.Why this matters
Self-attested suppressions are exactly the class "a measure shown to the maker stops measuring" covers. The July audit campaign burned the open-issue backlog to zero-suppression-tolerance in new code; the standing inventory predates that bar.
Desired correction
An adversarial per-entry audit (the kanon audit engine is the right runner): for each entry, verify the WHY against the current code — keep (genuine permanent justification), fix the code and drop the entry, or convert to a tracked issue with a non-size defer rationale. Expected survivors: the DSP/codec cast classes. Expected casualties: anything justified by a shape the code no longer has.
Done when: every entry is either independently verified, removed with its code fixed, or carries a live tracking issue.