The Undated Citation: Why a Governance Score Can Look Current While Its Evidence Is Two Years Old
A report's timestamp tells you when it was scored, not when the disclosures behind it were actually said — this is how Lacuna surfaces a stale two-year-old citation hiding inside a freshly generated score.

The Undated Citation: Why a Governance Score Can Look Current While Its Evidence Is Two Years Old
A report date tells you when a score was calculated. It tells you nothing about when the evidence behind that score was actually said. A diligence memo finished this morning can still be built on a management claim from a transcript that is two years stale — and nothing about the memo's own timestamp will tell you that.
The gap a report date doesn't cover
Every scoring dimension in a Lacuna Index report — leadership accountability, AI monetization claims, capital discipline, and the rest — is backed by a list of cited evidence: a verbatim quote plus a source description. Those source descriptions are free text, written the way people actually cite things in filings and press coverage: "Q3 2024 earnings call transcript," "DEF 14A 2023" (a company's annual proxy statement filed with the U.S. Securities and Exchange Commission, the SEC), "Press release · 2025-03-12," "FY24 10-K" (annual report filed with the SEC).
None of that is a structured date field. It's prose. Which means a dimension can be scored today, carry a confident-looking number, and still be resting on a citation nobody checked the age of.
How the code closes it
evidenceAgeFromSources(), in src/integrations/lacuna/evidence-age.ts on the current main branch, runs a small regex pass over every source string attached to a dimension's evidence list and pulls out the newest plausible date token it can find — a bare four-digit year, an ISO-style date, or shorthand like "Q1 2024" or "FY24." It takes the most recent year across all of a dimension's citations, computes the age in decimal years against today's date, and classifies it into three tones:
- fresh — under a year old
- ok — one to two years old
- stale — two years or older
That result renders directly on the report itself. In the executive-summary dimension cards (ExecDimensionCard, in src/routes/app.issuer.$ticker.report.tsx), a small dashed-border badge sits right under the dimension's score and weight: evidence · newest cited 2024 · 0.4y old. The border and text color follow the tone — so a stale citation doesn't wait for a footnote or an appendix table to surface. It sits next to the number it's propping up, on the same card, in the same glance.
That placement is the actual point. A diligence analyst skimming twelve dimension cards for an issuer doesn't reliably cross-reference a citations appendix against a scoring table. Putting the age badge on the card means the staleness is priced into the first read, not something you find during the second pass if you happen to go looking.
What it deliberately doesn't claim
The tool is honest about its own limits, and the source code says so directly. It works by pattern-matching text, not by reading a structured field — because as of today, no such field exists. When no year-like token is found anywhere in a dimension's sources, the function returns null, and the UI renders nothing rather than guessing at an age. A comment in the file already marks this as an interim design: a planned second version would populate a structured cited_at field per evidence row at the point of extraction, replacing the regex pass entirely. Until that lands, the badge is a best-effort read of whatever date language a source happened to be written with — good enough to catch a two-year-old transcript, not a substitute for reading the citation yourself when the badge is missing.
A different axis from evidence coverage
It's worth distinguishing this from a related but separate mechanism already in the codebase: evidence coverage. A separate audit system (src/integrations/lacuna/evidence-coverage.server.ts) logs every document-fetch attempt — annual reports, quarterly reports, merger-related current reports, proxy statements, transcripts, investor-relations pages, press releases — against every provider Lacuna pulls from, and rolls that up into a coverage state: complete, partial, sparse, or retrieval failure. Coverage answers "did we actually manage to retrieve the disclosure documents for this issuer." Evidence age answers a different question about the documents you did get: "how current is what's actually cited inside them."
An issuer can have complete coverage — every filing type successfully retrieved — and still carry a stale dimension score, because the disclosure language a claim rests on hasn't meaningfully changed since an old filing. Coverage and age are both necessary and neither substitutes for the other, which is why they're tracked as two separate signals rather than folded into one.
Why this matters for diligence workflow
For a buy-side analyst building a comparison across a coverage list, the practical risk isn't that Lacuna's evidence is wrong — it's that a rubric can look freshly assessed while quietly leaning on a citation that predates a management change, a strategy shift, or a full fiscal year of results. A capital-discipline score citing a call transcript from before a buyback program started, or a leadership-accountability score citing a proxy statement from before a board reshuffle, can carry the same numeric confidence as one citing last quarter's filing — unless something forces the age of the underlying claim into view.
That's the job this badge does: it turns "when was this evidence actually said" into a first-class, visible signal instead of something an analyst has to reconstruct by opening every citation by hand. It's not a replacement for reading the underlying disclosures. It's a triage layer — a reason to open the stale-flagged dimension's sources first, before trusting the number sitting above them.
