{
  "market": "St Albans and Harpenden",
  "updated": "2026-06-16",
  "status": "internal_prep_only",
  "sourceIssue": "MY-2577",
  "purpose": "Source freshness and edition readiness dashboard for the local morning newsletter build loop.",
  "boundary": "No subscriber email, public post, source contact, sponsor outreach, checkout or payment action is triggered by this artifact.",
  "counts": {
    "sources": 68,
    "categories": 12,
    "categoriesWithCoreSource": 7,
    "categoriesWithoutCoreSource": 5,
    "dailySweepCategories": 11,
    "places": 12,
    "issueDates": 5,
    "rawSnapshots": 4
  },
  "latest": {
    "issueDate": "2026-06-17",
    "rawSnapshotDate": "2026-06-17",
    "latestIssueSubject": "MP calls social media ban 'half-baked' after Sir Keir announces restrictions"
  },
  "priorityCounts": {
    "medium": 28,
    "high": 24,
    "core": 14,
    "low": 2
  },
  "categoryRows": [
    {
      "category": "Government and records",
      "sources": 18,
      "core": 4,
      "high": 9,
      "medium": 5,
      "low": 0,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "Weather and disruption",
      "sources": 4,
      "core": 3,
      "high": 1,
      "medium": 0,
      "low": 0,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "Education",
      "sources": 8,
      "core": 2,
      "high": 2,
      "medium": 3,
      "low": 1,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "Culture and heritage",
      "sources": 6,
      "core": 2,
      "high": 0,
      "medium": 4,
      "low": 0,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "Health and safety",
      "sources": 8,
      "core": 1,
      "high": 4,
      "medium": 3,
      "low": 0,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "Local news",
      "sources": 7,
      "core": 1,
      "high": 4,
      "medium": 2,
      "low": 0,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "Transport",
      "sources": 6,
      "core": 1,
      "high": 2,
      "medium": 3,
      "low": 0,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "Events and business",
      "sources": 4,
      "core": 0,
      "high": 1,
      "medium": 2,
      "low": 1,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "Events",
      "sources": 2,
      "core": 0,
      "high": 1,
      "medium": 1,
      "low": 0,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "Council",
      "sources": 2,
      "core": 0,
      "high": 0,
      "medium": 2,
      "low": 0,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "NHS/health",
      "sources": 2,
      "core": 0,
      "high": 0,
      "medium": 2,
      "low": 0,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "Sport",
      "sources": 1,
      "core": 0,
      "high": 0,
      "medium": 1,
      "low": 0,
      "tracked": 0,
      "check": "Weekly support sweep"
    }
  ],
  "corelessCategoryRows": [
    {
      "category": "Events and business",
      "sources": 4,
      "core": 0,
      "high": 1,
      "medium": 2,
      "low": 1,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "Events",
      "sources": 2,
      "core": 0,
      "high": 1,
      "medium": 1,
      "low": 0,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "Council",
      "sources": 2,
      "core": 0,
      "high": 0,
      "medium": 2,
      "low": 0,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "NHS/health",
      "sources": 2,
      "core": 0,
      "high": 0,
      "medium": 2,
      "low": 0,
      "tracked": 0,
      "check": "Daily AM source sweep"
    },
    {
      "category": "Sport",
      "sources": 1,
      "core": 0,
      "high": 0,
      "medium": 1,
      "low": 0,
      "tracked": 0,
      "check": "Weekly support sweep"
    }
  ],
  "gates": [
    "Check core and high-priority source groups before rendering the morning issue.",
    "Do not describe a route as live or automated unless the source registry and latest issue prove it.",
    "Use source notes and public URLs only; do not publish private inboxes, API payloads or credentials.",
    "Categories without a core source can support the edition, but need manual verification before driving the lead slot.",
    "If a source is stale, mark the gap for manual follow-up instead of padding the edition."
  ],
  "nextSafeActions": [
    "Review categories with no core source and add one official public route where available.",
    "Promote recurring council, planning, transport and weather-disruption sources to daily AM checks.",
    "Use the feedback desk to collect missing-place reports, then verify against public source routes."
  ]
}
