Never writes anything. A cache miss here does not self-heal the cache --
only an explicit generation run (generateDataArtifacts() with
evidence) refreshes the artifact and its fingerprint together, so "when
was this last regenerated" stays under explicit control rather than
becoming an implicit side effect of a read. Two callers hitting the same
stale cache both recompute independently; neither one's recompute changes
what the other reads.
Trusts the persisted evidence artifact at
options.locationonly when its paired.fingerprintsidecar matches a freshly (cheaply) computed computeSourceFingerprint -- never on file presence alone, never on a timestamp. On any mismatch (stale fingerprint, missing/corrupt evidence file, no sidecar at all, an unrecognizedschemaVersion), falls back to a realcomputeDataArtifacts()call: never hard-fails, never silently serves data that might be stale.