{
  "market": "Good Morning Oxfordshire",
  "updated": "2026-06-25",
  "status": "internal_prep_only",
  "sourceIssue": "MY-2577",
  "purpose": "Source freshness and edition readiness dashboard for the newsletter empire build loop.",
  "boundary": "No subscriber email, public post, source contact, sponsor outreach, checkout or payment action is triggered by this artifact.",
  "counts": {
    "sources": 34,
    "categories": 13,
    "categoriesWithCoreSource": 5,
    "categoriesWithoutCoreSource": 8,
    "dailySweepCategories": 11,
    "places": 6,
    "issueDates": 8,
    "rawSnapshots": 8,
    "latestProbeChecked": 28,
    "latestProbeSuccessful": 24,
    "latestProbeCandidates": 336,
    "latestProbeFailed": 4
  },
  "latest": {
    "issueDate": "2026-06-25",
    "rawSnapshotDate": "2026-06-25",
    "latestIssueSubject": "11 Oxfordshire roads set for quiet lanes pilot unveiled",
    "latestRawGeneratedAt": "2026-06-25T05:47:12.470Z"
  },
  "priorityCounts": {
    "medium": 14,
    "high": 13,
    "core": 7
  },
  "categoryRows": [
    {
      "category": "Government and records",
      "sources": 8,
      "core": 8,
      "high": 0,
      "medium": 0,
      "low": 0,
      "live": 0,
      "validated": 2
    },
    {
      "category": "Events",
      "sources": 5,
      "core": 1,
      "high": 2,
      "medium": 2,
      "low": 0,
      "live": 0,
      "validated": 0
    },
    {
      "category": "Travel",
      "sources": 5,
      "core": 1,
      "high": 1,
      "medium": 3,
      "low": 0,
      "live": 0,
      "validated": 1
    },
    {
      "category": "Safety",
      "sources": 1,
      "core": 1,
      "high": 0,
      "medium": 0,
      "low": 0,
      "live": 0,
      "validated": 0
    },
    {
      "category": "Weather",
      "sources": 1,
      "core": 1,
      "high": 0,
      "medium": 0,
      "low": 0,
      "live": 0,
      "validated": 0
    },
    {
      "category": "Council",
      "sources": 4,
      "core": 0,
      "high": 1,
      "medium": 3,
      "low": 0,
      "live": 3,
      "validated": 4
    },
    {
      "category": "Local news",
      "sources": 4,
      "core": 0,
      "high": 4,
      "medium": 0,
      "low": 0,
      "live": 4,
      "validated": 3
    },
    {
      "category": "Education",
      "sources": 1,
      "core": 0,
      "high": 0,
      "medium": 1,
      "low": 0,
      "live": 0,
      "validated": 0
    },
    {
      "category": "Local media",
      "sources": 1,
      "core": 0,
      "high": 0,
      "medium": 1,
      "low": 0,
      "live": 0,
      "validated": 0
    },
    {
      "category": "NHS/health",
      "sources": 1,
      "core": 0,
      "high": 0,
      "medium": 1,
      "low": 0,
      "live": 1,
      "validated": 1
    },
    {
      "category": "Open data",
      "sources": 1,
      "core": 0,
      "high": 0,
      "medium": 1,
      "low": 0,
      "live": 1,
      "validated": 1
    },
    {
      "category": "Police",
      "sources": 1,
      "core": 0,
      "high": 0,
      "medium": 1,
      "low": 0,
      "live": 1,
      "validated": 1
    },
    {
      "category": "Transport",
      "sources": 1,
      "core": 0,
      "high": 0,
      "medium": 1,
      "low": 0,
      "live": 1,
      "validated": 1
    }
  ],
  "corelessCategoryRows": [
    {
      "category": "Council",
      "sources": 4,
      "core": 0,
      "high": 1,
      "medium": 3,
      "low": 0,
      "live": 3,
      "validated": 4
    },
    {
      "category": "Local news",
      "sources": 4,
      "core": 0,
      "high": 4,
      "medium": 0,
      "low": 0,
      "live": 4,
      "validated": 3
    },
    {
      "category": "Education",
      "sources": 1,
      "core": 0,
      "high": 0,
      "medium": 1,
      "low": 0,
      "live": 0,
      "validated": 0
    },
    {
      "category": "Local media",
      "sources": 1,
      "core": 0,
      "high": 0,
      "medium": 1,
      "low": 0,
      "live": 0,
      "validated": 0
    },
    {
      "category": "NHS/health",
      "sources": 1,
      "core": 0,
      "high": 0,
      "medium": 1,
      "low": 0,
      "live": 1,
      "validated": 1
    },
    {
      "category": "Open data",
      "sources": 1,
      "core": 0,
      "high": 0,
      "medium": 1,
      "low": 0,
      "live": 1,
      "validated": 1
    },
    {
      "category": "Police",
      "sources": 1,
      "core": 0,
      "high": 0,
      "medium": 1,
      "low": 0,
      "live": 1,
      "validated": 1
    },
    {
      "category": "Transport",
      "sources": 1,
      "core": 0,
      "high": 0,
      "medium": 1,
      "low": 0,
      "live": 1,
      "validated": 1
    }
  ],
  "latestProbeCategoryRows": [
    {
      "category": "Travel",
      "checked": 5,
      "successful": 2,
      "failed": 3,
      "candidates": 24,
      "failedSources": [
        {
          "source": "Oxfordshire roadworks",
          "url": "https://www.oxfordshire.gov.uk/residents/roads-and-transport/street-maintenance-z/roadworks",
          "error": 404
        },
        {
          "source": "Chiltern Railways updates",
          "url": "https://www.chilternrailways.co.uk/service-updates",
          "error": 403
        },
        {
          "source": "Oxford Bus updates",
          "url": "https://www.oxfordbus.co.uk/service-updates",
          "error": 403
        }
      ]
    },
    {
      "category": "Safety",
      "checked": 1,
      "successful": 0,
      "failed": 1,
      "candidates": 0,
      "failedSources": [
        {
          "source": "Thames Valley Police news",
          "url": "https://www.thamesvalley.police.uk/news/",
          "error": 403
        }
      ]
    },
    {
      "category": "Government and records",
      "checked": 8,
      "successful": 8,
      "failed": 0,
      "candidates": 84,
      "failedSources": []
    },
    {
      "category": "Events",
      "checked": 5,
      "successful": 5,
      "failed": 0,
      "candidates": 84,
      "failedSources": []
    },
    {
      "category": "Local news",
      "checked": 4,
      "successful": 4,
      "failed": 0,
      "candidates": 72,
      "failedSources": []
    },
    {
      "category": "Council",
      "checked": 2,
      "successful": 2,
      "failed": 0,
      "candidates": 30,
      "failedSources": []
    },
    {
      "category": "Education",
      "checked": 1,
      "successful": 1,
      "failed": 0,
      "candidates": 12,
      "failedSources": []
    },
    {
      "category": "Transport",
      "checked": 1,
      "successful": 1,
      "failed": 0,
      "candidates": 18,
      "failedSources": []
    },
    {
      "category": "Weather",
      "checked": 1,
      "successful": 1,
      "failed": 0,
      "candidates": 12,
      "failedSources": []
    }
  ],
  "gates": [
    "Check core and high-priority source groups before rendering the morning issue.",
    "Do not describe a route as live or automated unless the 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 or failed in the latest raw snapshot, mark the gap for manual follow-up instead of padding the edition."
  ]
}
