{
  "$schema": "../schemas/article-types.schema.json",
  "version": "1.0",
  "effectiveDate": "2026-05-01",
  "description": "Single source of truth for every Riksdagsmonitor agentic news article type. Currently consumed by scripts/horizon-context.ts (runtime context for long-horizon workflows), scripts/render-lib/aggregator/order.ts (section ordering — already aligned with this registry), .github/prompts/ext/tier-c-aggregation.md (multiplier table — manually mirrored), and Article-Generation.md (horizon table — manually mirrored). Wiring this registry into scripts/aggregate-analysis.ts, scripts/render-articles.ts, scripts/generate-news-indexes.ts, and scripts/validate-article.ts is planned follow-up work (tracked in separate issues). When adding a new article type: (1) append an entry here, (2) add the matching news-*.md workflow in .github/workflows/, (3) re-run `npm test` — tests/article-types.test.ts validates parity.",
  "owner": "CEO",
  "classification": "Public",
  "license": "Apache-2.0",
  "types": [
    {
      "id": "propositions",
      "family": "single-type",
      "horizonDays": 0,
      "lookbackDays": 1,
      "subfolder": "propositions",
      "tierCMultiplier": 1.0,
      "articleWordFloor": 1000,
      "scenarioHorizonYears": 1,
      "forwardIndicatorHorizons": ["72h", "week", "month", "election"],
      "electionCycleAnchor": "current",
      "imfPolicy": "macro-fiscal-on-demand",
      "icon": "📜",
      "label": "Propositions",
      "workflow": "news-propositions.md",
      "cronExpression": "0 5 * * 1-5",
      "dispatchOnly": false,
      "coreLanguages": ["en", "sv"],
      "extraArtifacts": []
    },
    {
      "id": "motions",
      "family": "single-type",
      "horizonDays": 0,
      "lookbackDays": 1,
      "subfolder": "motions",
      "tierCMultiplier": 1.0,
      "articleWordFloor": 1000,
      "scenarioHorizonYears": 1,
      "forwardIndicatorHorizons": ["72h", "week", "month", "election"],
      "electionCycleAnchor": "current",
      "imfPolicy": "macro-fiscal-on-demand",
      "icon": "📝",
      "label": "Motions",
      "workflow": "news-motions.md",
      "cronExpression": "0 6 * * 1-5",
      "dispatchOnly": false,
      "coreLanguages": ["en", "sv"],
      "extraArtifacts": []
    },
    {
      "id": "committee-reports",
      "family": "single-type",
      "horizonDays": 0,
      "lookbackDays": 1,
      "subfolder": "committee-reports",
      "tierCMultiplier": 1.0,
      "articleWordFloor": 1000,
      "scenarioHorizonYears": 1,
      "forwardIndicatorHorizons": ["72h", "week", "month", "election"],
      "electionCycleAnchor": "current",
      "imfPolicy": "macro-fiscal-on-demand",
      "icon": "📊",
      "label": "Committee Reports",
      "workflow": "news-committee-reports.md",
      "cronExpression": "0 4 * * 1-5",
      "dispatchOnly": false,
      "coreLanguages": ["en", "sv"],
      "extraArtifacts": []
    },
    {
      "id": "interpellations",
      "family": "single-type",
      "horizonDays": 0,
      "lookbackDays": 1,
      "subfolder": "interpellations",
      "tierCMultiplier": 1.0,
      "articleWordFloor": 1000,
      "scenarioHorizonYears": 1,
      "forwardIndicatorHorizons": ["72h", "week", "month", "election"],
      "electionCycleAnchor": "current",
      "imfPolicy": "macro-fiscal-on-demand",
      "icon": "❓",
      "label": "Interpellations",
      "workflow": "news-interpellations.md",
      "cronExpression": "0 7 * * 1-5",
      "dispatchOnly": false,
      "coreLanguages": ["en", "sv"],
      "extraArtifacts": []
    },
    {
      "id": "realtime-monitor",
      "family": "tier-c-aggregation",
      "horizonDays": 0,
      "lookbackDays": 7,
      "subfolder": "realtime-monitor",
      "tierCMultiplier": 0.8,
      "articleWordFloor": 1500,
      "scenarioHorizonYears": 1,
      "forwardIndicatorHorizons": ["72h", "week", "month", "election"],
      "electionCycleAnchor": "current",
      "imfPolicy": "macro-fiscal-on-demand",
      "icon": "🚨",
      "label": "Realtime Monitor",
      "workflow": "news-realtime-monitor.md",
      "cronExpression": "0 10,14 * * 1-5",
      "dispatchOnly": false,
      "coreLanguages": ["en", "sv"],
      "extraArtifacts": []
    },
    {
      "id": "evening-analysis",
      "family": "tier-c-aggregation",
      "horizonDays": 0,
      "lookbackDays": 1,
      "subfolder": "evening-analysis",
      "tierCMultiplier": 1.0,
      "articleWordFloor": 1500,
      "scenarioHorizonYears": 1,
      "forwardIndicatorHorizons": ["72h", "week", "month", "election"],
      "electionCycleAnchor": "current",
      "imfPolicy": "macro-fiscal-on-demand",
      "icon": "🌆",
      "label": "Evening Analysis",
      "workflow": "news-evening-analysis.md",
      "cronExpression": "0 18 * * 1-5",
      "dispatchOnly": false,
      "coreLanguages": ["en", "sv"],
      "extraArtifacts": []
    },
    {
      "id": "week-ahead",
      "family": "long-horizon-forecast",
      "horizonDays": 7,
      "lookbackDays": 7,
      "subfolder": "week-ahead",
      "tierCMultiplier": 1.2,
      "articleWordFloor": 1500,
      "scenarioHorizonYears": 1,
      "forwardIndicatorHorizons": ["72h", "week", "month", "quarter", "election"],
      "electionCycleAnchor": "current",
      "imfPolicy": "weo-fm-prewarm",
      "icon": "📅",
      "label": "Week Ahead",
      "workflow": "news-week-ahead.md",
      "cronExpression": "0 7 * * 5",
      "dispatchOnly": false,
      "coreLanguages": ["en", "sv"],
      "extraArtifacts": [],
      "longHorizonRules": {
        "scenarioCount": 3,
        "wildcardCount": 0,
        "counterfactualParagraphs": 1,
        "pestleMandatory": false,
        "crossHorizonCitations": ["evening-analysis"],
        "minDokIdReferences": 5,
        "minCharts": 2
      }
    },
    {
      "id": "month-ahead",
      "family": "long-horizon-forecast",
      "horizonDays": 30,
      "lookbackDays": 30,
      "subfolder": "month-ahead",
      "tierCMultiplier": 1.5,
      "articleWordFloor": 1500,
      "scenarioHorizonYears": 1,
      "forwardIndicatorHorizons": ["72h", "week", "month", "quarter", "year", "election"],
      "electionCycleAnchor": "current",
      "imfPolicy": "weo-fm-prewarm-pinned-vintage",
      "icon": "🗓️",
      "label": "Month Ahead",
      "workflow": "news-month-ahead.md",
      "cronExpression": "0 8 1 * *",
      "dispatchOnly": false,
      "coreLanguages": ["en", "sv"],
      "extraArtifacts": [],
      "longHorizonRules": {
        "scenarioCount": 4,
        "wildcardCount": 0,
        "counterfactualParagraphs": 1,
        "pestleMandatory": false,
        "crossHorizonCitations": ["week-ahead", "weekly-review"],
        "minDokIdReferences": 5,
        "minCharts": 2
      }
    },
    {
      "id": "quarter-ahead",
      "family": "long-horizon-forecast",
      "horizonDays": 90,
      "lookbackDays": 90,
      "subfolder": "quarter-ahead",
      "tierCMultiplier": 1.7,
      "articleWordFloor": 2000,
      "scenarioHorizonYears": 1,
      "forwardIndicatorHorizons": ["week", "month", "quarter", "year", "election"],
      "electionCycleAnchor": "current",
      "imfPolicy": "weo-fm-pinned-vintage-quarterly-trajectory",
      "icon": "🧭",
      "label": "Quarter Ahead",
      "workflow": "news-quarter-ahead.md",
      "cronExpression": "0 9 1,15 * *",
      "dispatchOnly": false,
      "coreLanguages": ["en", "sv"],
      "extraArtifacts": [],
      "longHorizonRules": {
        "scenarioCount": 4,
        "wildcardCount": 0,
        "counterfactualParagraphs": 2,
        "pestleMandatory": false,
        "crossHorizonCitations": ["week-ahead", "month-ahead"],
        "minDokIdReferences": 5,
        "minCharts": 2
      }
    },
    {
      "id": "year-ahead",
      "family": "long-horizon-forecast",
      "horizonDays": 365,
      "lookbackDays": 180,
      "subfolder": "year-ahead",
      "tierCMultiplier": 2.0,
      "articleWordFloor": 2500,
      "scenarioHorizonYears": 2,
      "forwardIndicatorHorizons": ["month", "quarter", "year", "cycle", "election"],
      "electionCycleAnchor": "current",
      "imfPolicy": "weo-fm-compare-nordic-peers-mandatory-dots-bilateral",
      "icon": "🛰️",
      "label": "Year Ahead",
      "workflow": "news-year-ahead.md",
      "cronExpression": "0 9 5 1,7 *",
      "dispatchOnly": false,
      "coreLanguages": ["en", "sv"],
      "extraArtifacts": ["pestle-analysis.md", "wildcards-blackswans.md", "quantitative-swot.md"],
      "longHorizonRules": {
        "scenarioCount": 4,
        "wildcardCount": 5,
        "counterfactualParagraphs": 2,
        "pestleMandatory": true,
        "crossHorizonCitations": ["quarter-ahead", "monthly-review"],
        "minDokIdReferences": 8,
        "minCharts": 3
      }
    },
    {
      "id": "election-cycle",
      "family": "long-horizon-forecast",
      "horizonDays": 1460,
      "lookbackDays": 365,
      "subfolder": "election-cycle",
      "tierCMultiplier": 2.5,
      "articleWordFloor": 3500,
      "scenarioHorizonYears": 4,
      "forwardIndicatorHorizons": ["quarter", "year", "cycle", "election"],
      "electionCycleAnchor": "both",
      "imfPolicy": "weo-fm-compare-nordic-peers-multi-vintage-trajectory",
      "icon": "🗳️",
      "label": "Election Cycle",
      "workflow": "news-election-cycle.md",
      "cronExpression": "0 9 13 3,9 *",
      "dispatchOnly": true,
      "coreLanguages": ["en", "sv"],
      "extraArtifacts": ["pestle-analysis.md", "wildcards-blackswans.md", "quantitative-swot.md", "political-stride-assessment.md", "cycle-trajectory.md"],
      "longHorizonRules": {
        "scenarioCount": 4,
        "scenarioBranchesPerScenario": 3,
        "wildcardCount": 5,
        "counterfactualParagraphs": 3,
        "pestleMandatory": true,
        "crossHorizonCitations": ["year-ahead", "monthly-review"],
        "minDokIdReferences": 10,
        "minCharts": 5
      }
    },
    {
      "id": "weekly-review",
      "family": "tier-c-aggregation",
      "horizonDays": 0,
      "lookbackDays": 7,
      "subfolder": "weekly-review",
      "tierCMultiplier": 1.2,
      "articleWordFloor": 1500,
      "scenarioHorizonYears": 1,
      "forwardIndicatorHorizons": ["72h", "week", "month", "election"],
      "electionCycleAnchor": "current",
      "imfPolicy": "weo-fm-prewarm",
      "icon": "🔄",
      "label": "Weekly Review",
      "workflow": "news-weekly-review.md",
      "cronExpression": "0 9 * * 6",
      "dispatchOnly": false,
      "coreLanguages": ["en", "sv"],
      "extraArtifacts": []
    },
    {
      "id": "monthly-review",
      "family": "tier-c-aggregation",
      "horizonDays": 0,
      "lookbackDays": 30,
      "subfolder": "monthly-review",
      "tierCMultiplier": 1.5,
      "articleWordFloor": 1500,
      "scenarioHorizonYears": 1,
      "forwardIndicatorHorizons": ["week", "month", "quarter", "election"],
      "electionCycleAnchor": "current",
      "imfPolicy": "weo-fm-pinned-vintage",
      "icon": "📈",
      "label": "Monthly Review",
      "workflow": "news-monthly-review.md",
      "cronExpression": "0 10 28 * *",
      "dispatchOnly": false,
      "coreLanguages": ["en", "sv"],
      "extraArtifacts": []
    }
  ],
  "electionCycles": {
    "current": {
      "id": "tido-2022",
      "label": "Tidö Mandate (2022–2026)",
      "start": "2022-09-11",
      "end": "2026-09-13",
      "governingCoalition": ["M", "KD", "L"],
      "confidenceSupport": ["SD"],
      "opposition": ["S", "V", "C", "MP"]
    },
    "next": {
      "id": "post-2026",
      "label": "Post-2026 Mandate (2026–2030)",
      "start": "2026-09-13",
      "end": "2030-09-08",
      "governingCoalition": null,
      "confidenceSupport": null,
      "opposition": null
    }
  },
  "horizonBands": {
    "72h": { "days": 3, "wepFloor": "very likely / very unlikely permitted" },
    "week": { "days": 7, "wepFloor": "likely / unlikely permitted" },
    "month": { "days": 30, "wepFloor": "likely / unlikely permitted" },
    "quarter": { "days": 90, "wepFloor": "roughly even / about even permitted" },
    "year": { "days": 365, "wepFloor": "roughly even / about even mandatory unless ≥3 corroborated sources" },
    "cycle": { "days": 1460, "wepFloor": "roughly even / unlikely / very unlikely; never likely/very likely without ≥3 cycle-aged sources" },
    "election": { "days": 1460, "wepFloor": "scenario-driven; coalition-formation outcomes never above 'likely'" }
  }
}
