The check is default-on, warning, verify stage, under project.checks.mcdc_coverage. It enforces the product-impact taxonomy so a green result cannot hide whether an ignored decision is a legitimate exemption or capability-gap debt. Four situations warn. An uncategorized code-level ignore. A :capability-gap ignore with no resolvable [ki:]. A capability-gap whose KnownIssue is closed or has no reproducer_command tripwire. An honored witness-row exemption with no [category:] trailer. Defensive, external-evidence, and capability-gap-with-open-KI-and-tripwire ignores pass.
Measuring MC/DC is a different hop. That page is whether each condition flips the outcome on its own. Stale KI disposition is a different hop. That page is an error when a leftover exemption outlived a fixed bug. Neither one asks whether pkg/upload.go:32 is still a free-form comment pretending to be an exemption.
//mcdc:ignore streaming upload not yet supported
// no :category, no [ki:], coverage already green
Pick one claim per ignore, not a cheapest label. Delete the ignore and witness the decision if it is reachable. Classify :defensive only for true structural unreachability where the positive path is already witnessed. Classify :capability-gap only with an open KnownIssue, a failing public-API tripwire run twice, and additional e2e tests on that surface. Classify :external-evidence only when a child process really drives the decision. A witness-row finding needs the same claim as a [category:] trailer. Writing :defensive because it needs no KnownIssue is the anti-pattern this hop exists to stop. The check will not catch that lie for you. It will catch the missing token.
proof mcdc ignores --unclassified
proof mcdc ignores --category capability-gap --with-ki
proof audit --check mcdc_ignore_classified
The structural floor the machine counts is capability-gap-no-tripwire. Additional e2e tests on the public surface are the help bar on top of that floor, not a second counted finding here. Classification is a pure function of the source comment. After you edit the token, proof mcdc refresh-classification rewrites the persisted object without re-running the suite. Opt-out reports skip, never pass. A human waiver is an authorization gate, not a mute.