Re-checks every currently-declared citation against previousSnapshot.
Two independent failure modes, both real findings, never silently
folded into one: a citation whose file no longer resolves at all
(DYNAMIC_ACCESS_CITATION_MISSING), and one that resolves but whose
content hash no longer matches what was recorded last run
(DYNAMIC_ACCESS_CITATION_STALE). A citation with no prior recorded
hash (first time seen, or previousSnapshot is undefined -- a first
run) is never flagged either way -- there is nothing to have gone stale
relative to yet, and "missing" only means the file doesn't currently
resolve, not that it used to.
Deliberately additive to, never a replacement for,
FIELD_DYNAMIC_ACCESS_DECLARED (usage-report.ts) -- that finding
states what was asserted; these state the assertion's own current
integrity. Both can legitimately appear together for the same field.
Re-checks every currently-declared citation against
previousSnapshot. Two independent failure modes, both real findings, never silently folded into one: a citation whose file no longer resolves at all (DYNAMIC_ACCESS_CITATION_MISSING), and one that resolves but whose content hash no longer matches what was recorded last run (DYNAMIC_ACCESS_CITATION_STALE). A citation with no prior recorded hash (first time seen, orpreviousSnapshotisundefined-- a first run) is never flagged either way -- there is nothing to have gone stale relative to yet, and "missing" only means the file doesn't currently resolve, not that it used to.Deliberately additive to, never a replacement for,
FIELD_DYNAMIC_ACCESS_DECLARED(usage-report.ts) -- that finding states what was asserted; these state the assertion's own current integrity. Both can legitimately appear together for the same field.