msos/docs
popovskik 8ff968739a feat(cms): U3 derive article dates from content/ front-matter
Replace the hand-maintained ARTICLE_DATES registry as the source of
truth with dates read from content/ front-matter, so publishing a post
via the CMS needs no manual registry edit (plan R4).

- tools/content_index.py: load_dates() reads content/ front-matter into
  {source_folder/slug: {published|modified: iso}}. Standalone (os+yaml),
  no import cycle with seo_inject.
- tools/seo_inject.py: ARTICLE_DATES is now {**static_fallback,
  **content_dates}; content wins. The static table is kept only as a
  fallback for entries not present in content/.
- migration now preserves the published-vs-modified distinction
  (date_type), so the switch is byte-identical: content-derived dates
  equal the old static table exactly (17/17, incl. the one 'modified').

Verified: full `seo_inject --all --sitemap` + build_listings +
build_botlinks run produces ZERO changes to any site page. build_content
--check still reproduces all 51 pages.

build_botlinks.py needs no change (it scrapes built pages, which are a
pure function of content/). Listings get content-driven dates for free
via seo_inject.ARTICLE_DATES.

tools/tests/test_content_index.py: 5 tests (dates == legacy registry,
merged registry unchanged, published/modified distinction, events key on
projects/<slug>, one ISO date per entry).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-08 16:47:03 +02:00
..
plans docs: add no-code CMS implementation plan 2026-08-08 16:09:31 +02:00
GA4-ASSISTANT-REPORT.md feat(assistant): one-time disclaimer note + GA4 question-report guide 2026-08-04 01:57:55 +02:00
MK-PROOFREADING.md content(MK): apply proofreading corrections from owner + rename header menu 2026-08-04 13:13:04 +02:00
PRE-LAUNCH-CHECKLIST.md a11y: make mobile menu toggle keyboard & screen-reader accessible 2026-08-04 00:57:27 +02:00
PRE-LAUNCH-TODO.md docs: note the SEO regeneration step for new pages 2026-08-05 18:39:04 +02:00
content-model.md feat(cms): U3 derive article dates from content/ front-matter 2026-08-08 16:47:03 +02:00
geo-offsite-worklist.md GEO: FAQPage/NGO/Event schema + autonomous generation for new projects 2026-08-07 22:17:03 +02:00
get-to-know-pages-handover.md Add five 2025 event blogs (EN/SI/MK), remove placeholders 2026-07-28 15:44:23 +02:00
launch-seo-checklist.md Add article dates, brand OG image, launch SEO checklist 2026-08-02 12:38:20 +02:00
newsletter-signup.md Homepage refresh, activities redesign + newsletter rollout 2026-08-01 19:51:59 +02:00