Skip to content

vouch lint flags retired (archived/superseded/redacted) claims as stale #478

Description

@luciferlive112116

vouch lint (health.lint) is documented as the "user-actionable problems"
subset of the health checks. its stale-claim check runs over every claim with
no status guard, so a retired claim — superseded, archived, or redacted
whose freshness anchor is older than stale_after_days is reported as a
stale_claim warning.

that is non-actionable noise: a retired claim is terminal and is not expected
to be refreshed. the two sibling surfaces that compute the same "stale" notion
both already exempt retired claims, and their comments explicitly describe this
as lint's intended behaviour:

  • metrics.py: retired = {SUPERSEDED, ARCHIVED, REDACTED}; stale is only
    measured on live claims — "matching lint, which only warns on claims a
    reader would still trust"
    and "retired claims are intentionally exempt —
    they're not expected to be refreshed."
  • digest.py: skips c.status in _RETIRED_CLAIM_STATUSES before the stale
    test — "same freshness anchor and thresholds as vouch metrics /
    vouch lint."

so lint is the odd one out.

repro

register a source, then add an archived claim whose updated_at is
older than the freshness window (e.g. 400 days). vouch lint emits a
stale_claim finding for it; vouch metrics and vouch digest do not.

expected

lint exempts retired statuses from the stale check, matching metrics/digest.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions