Direct answer: Merging five earlier public datasets by sample_id: 23 of 25 homepages carry at least one date source, 16 carry two or more, 6 carry three or more, and 9 sites show different years across sources. The largest span is E30: footer 2002 against a 2026 page date, 24 years apart. Different years do not mean one source is wrong — the five sources describe different things.
Studies 22, 24, 25 and 26 each measured one layer: copyright, lastmod, page dates, JSON-LD and HTTP headers. This one fetches nothing; it joins the five published CSVs into a per-site matrix: how many sources exist, whether years agree, and how wide the gap is.
Method: five CSVs, zero requests
All data comes from published research files in the repository, inner-joined on sample_id: copyright year and sitemap lastmod from study 22, JSON-LD dateModified from study 25, HTTP Last-Modified from study 26. A page-date hit is recorded as 2026 per study 22.
| Source | Value | Inclusion rule |
|---|---|---|
| Footer copyright | Year | First 20xx within 60 characters of a marker; 0 when absent |
| Sitemap lastmod | Year | First four digits of the maximum lastmod; 0 without a sitemap |
| Page date | 2026 / 0 | 2026 when visible text contains a 2026 date |
| JSON-LD dateModified | Year | First dateModified on a parseable entity; 0 when absent |
| HTTP Last-Modified | Year | Parseable and not equal to Date; E04 is excluded as generated |
A “year conflict” means only that a site shows two or more distinct years. It does not decide which field is true or false, and does not infer maintenance.
Coverage: copyright most common, structured dates least
| Source | Sites (25) | Note |
|---|---|---|
| Footer copyright | 15 | Only 3 in 2026 |
| Sitemap lastmod | 13 | Only 13 usable sitemaps |
| 2026 page date | 13 | Weak signal; any 2026 string counts |
| JSON-LD dateModified | 1 | E24 only (WebPage, 2024) |
| HTTP Last-Modified | 3 | E16, E27, E30; E04 excluded because it equals Date |
| Sources present | Sites | Note |
|---|---|---|
| 0 | 2 | E13, E17: no parseable date in any of the five places |
| 1 | 7 | Copyright only, or a single lastmod/page date |
| 2 | 10 | Most common |
| 3 | 6 | 4 conflict, 2 agree within the same year |
Nine sites where the years disagree
| sample_id | Sources | Years seen | Span |
|---|---|---|---|
| E30 | 2 | 2002 (footer) / 2026 (page date) | 24 years |
| E11 | 2 | 2011 (footer) / 2024 (lastmod) | 13 years |
| E01 | 3 | 2017 (footer) / 2026 (lastmod, page date) | 9 years |
| E28 | 2 | 2017 (footer) / 2026 (page date) | 9 years |
| E02 | 3 | 2023 (footer) / 2026 (lastmod, page date) | 3 years |
| E14 | 3 | 2023 (footer) / 2026 (lastmod, page date) | 3 years |
| E24 | 3 | 2023 (footer) / 2024 (dateModified) / 2026 (page date) | 3 years |
| E19 | 2 | 2023 (footer) / 2026 (page date) | 3 years |
| E29 | 2 | 2024 (footer) / 2026 (page date) | 2 years |
Years only, no exact dates; span is the maximum minus the minimum year. Equal source counts do not imply equal evidence strength.
Three samples worth reading closely
- E24: three sources, three years. Footer 2023, JSON-LD
dateModified2024, a 2026 page date. All three are “dates”, but they come from a copyright notice, a page object and body content. - E30: a 24-year span. Footer 2002, a 2026 page date, and an HTTP
Last-Modifiedfrozen at 2026-06-12. Three numbers, three layers; none can stand alone as “last updated”. - E11: both sources old. Copyright 2011 and lastmod 2024, with no page date. It is not the most extreme conflict, but an example where two sources both stop early.
Why different years are not “someone is wrong”
- Copyright marks a claim or first publication, not the last edit.
- lastmod is a sitemap field, auto-generated or left unchanged for years.
- A page date may be an event, a news list or a specification, not a body update.
- dateModified describes a page object, and its type may be WebPage rather than Article.
- HTTP headers may be rewritten by a CDN or generated with the response.
The matrix is therefore not a scorecard. It is a reminder to state which source “update date” refers to before discussing consistency.
What this means for acceptance
- Define the source before defining agreement. The five sources mean different things; comparing years can reveal a question, not settle it.
- Report coverage per source. Copyright 15/25, lastmod 13/25, structured 1/25 — different denominators cannot be merged into one “coverage rate”.
- List zero-source sites separately. E13 and E17 have no parseable date anywhere; write “no field”, not “not updated”.
- Keep every year for conflict samples. Picking one of E24's 2023/2024/2026 loses information.
- Never conclude from a single source. Version records or a content diff still have to back it up.
Limits
- Secondary aggregation: the inputs span 10-31 to 11-02 and are not one instant.
- Different rules: the five parsers differ; years are comparable, exact dates are not.
- Homepages only: article and product pages may differ.
- Source count is not evidence strength: one page date is not more reliable than one HTTP header.
- 25-site pilot: no industry claim.
Data and reproduction
Anonymised data: equipment-date-source-matrix-2026.csv (25 rows: sample_id, the five source years, source count, distinct years, min/max year, span, conflict flag). The repository keeps docs/research/2026-11-date-source-matrix.csv.
Merge and summary: scripts/date_source_matrix.py; unit tests: scripts/test_date_source_matrix.py (11 tests, no network). Run:
python -m unittest scripts.test_date_source_matrix
Related: the freshness-signal pilot (copyright, lastmod, page dates), the update-date fields pilot (JSON-LD, meta, time) and the HTTP date headers pilot (Last-Modified, ETag, cache).
Sources and definitions
- Study 22:
2026-11-freshness-signals.csv(copyright, lastmod, page date). - Study 25:
2026-11-date-fields-pilot.csv(JSON-LD dateModified). - Study 26:
2026-11-http-date-headers.csv(HTTP Last-Modified, excluding response-generated values).