Skip to content

hygiene: name zero-warnings as a discoverable gate (#178 seam 4, deferred from #221) #225

Description

@heyoub

Context

The last open seam from #178 (deliberately deferred out of #221 as a maintainer-taste decision): the repo's zero-warnings posture is now structurally enforced — five doctrine lints manifest-denied, -D warnings on clippy/rustdoc surfaces, the zero-#[allow] tripwire — but it is not named. There is no single gate an agent or human can point to that says "zero warnings, everywhere, by law" and no receipts-vocabulary entry that proves it ran.

Why it stayed open

"Clean because several -D warnings invocations happen to cover everything" is emergent; #178's other seams made it structurally guaranteed, which is most of the value. What remains is discoverability: an auditor today must reconstruct the posture from [workspace.lints], the ci-fast lane bodies, the rustdoc-gate, and AGENTS.md prose.

Decision needed (maintainer taste)

Smallest honest shapes, in increasing weight:

  1. A receipts-vocabulary line / gate-registry row that names the posture and points at its enforcing surfaces — pure documentation-of-record, no new machinery.
  2. A traced invariant (INV-ZERO-WARNINGS or similar) in traceability/invariants.yaml whose witnesses are the existing enforcing gates.
  3. A dedicated structural detector asserting the posture's components stay wired (lint table levels, -D warnings flags present in the lane bodies) — real teeth, more detector surface; overlaps the anti-rebury family.

Anti-pattern to avoid (per the #207 discussion): a hand-authored claim that restates what the manifest already enforces, with nothing checking the two agree.

Acceptance shape

One of the shapes above exists, is discoverable from the factory docs or just inspect output, and — if shape 2 or 3 — carries a planted-RED proof like every other gate.

Refs: #178 (parent, closed by #221), #221 (the deferral), #207 (declared-law vs derived-fact split).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions