{ "$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'" } } }