📌 Template Instructions — Copy to
analysis/daily/$ARTICLE_DATE/$SUBFOLDER/session-baseline.md. Used byweekly-review,monthly-review,motions(quarterly aggregation),propositionsand any aggregation workflow. Seeper-artifact-methodologies.md §session-baseline.
🎯 Purpose — The comprehensive, structured fact layer of which Riksdag plenary sittings and committee sessions took place during the period, how long they sat, and which texts they adopted. Distinct from
historical-parallels.md(metric trending). This is the calendar + roster — data-dense, low-prose — that every other artifact in the run points back to.
- F3EAD stage — Find + Fix: this is the primary evidence-gathering artifact; all other artifacts cite back to it for dates, dok_ids, vote counts, and actor names
- Scope discipline — Record every sitting and committee session in the covered period discretely; do not aggregate across sessions when individual session data is available
- Evidence standard — Source-grounded, structured, and low-inference; prioritise dates, durations, adopted texts, counts, chairing/session metadata over narrative prose
- Gap handling — If source material is incomplete or ambiguous, note the gap explicitly (
[DATA GAP: source returned zero rows]) rather than inferring missing details; flag inmcp-reliability-audit.md §Failure analysis - Cross-reference baseline — Every
dok_idcited here must resolve viaget_dokument; every MP reference must carry anintressent_id - MCP tools —
get_calendar_events,search_dokument,search_voteringar,search_anforanden,get_betankanden,get_propositioner,get_motioner,get_fragor,get_interpellationer,search_regering
📐 Template Contract — every fill of this template MUST satisfy this row.
Slot Value Owning methodology per-artifact-methodologies.mdOwning gate check Supplementary (Tier-C aggregation) — see 05-analysis-gate.mdRequired inputs 30 prior runs of same article type Horizon band per-run (per scripts/horizon-context.ts)Output family Operational Supplementary Aggregation order appended (alphabetical, after canonical block) (see scripts/render-lib/aggregator/order.ts)Reader Intelligence Guide row generated from session-baseline.md(seescripts/render-lib/aggregator/reader-guide.ts)Canonical evidence anchor | claim | evidence (dok_id / vote / MP intressent_id / primary-source URL) | retrieved_at | confidence |— every analytical claim row uses this schema.Cross-reference:
README.md §Template ↔ Methodology ↔ Gate-Check Matrix.
| Field | Value |
|---|---|
| Date | [REQUIRED: YYYY-MM-DD] |
| Run ID | [REQUIRED: {type}-run{N}] |
| Analysis Directory | [REQUIRED: analysis/daily/YYYY-MM-DD/{type}-run{N}/] |
| Article Type | [REQUIRED] |
| Riksmöte | [REQUIRED: e.g. 2025/26] |
| Period Covered | [REQUIRED: e.g. Week 17 (20-26 April 2026)] |
| Kammaren sittings | [REQUIRED: total # in period] |
| Committee sessions | [REQUIRED: total # in period] |
| Antagna betänkanden | [REQUIRED: total # in period] |
| Total voteringar | [REQUIRED: total # in period] |
Record each sitting separately. Populate from
get_calendar_events(org=kammaren) andsearch_dokument.
| Field | Detail |
|---|---|
| Datum | [REQUIRED: YYYY-MM-DD] |
| Plats | Riksdagshuset, Stockholm |
| Starttid / sluttid | [REQUIRED: HH:MM–HH:MM] |
| Duration | [REQUIRED: decimal hours, e.g. 6.5 h] |
| Antagna betänkanden | [REQUIRED: #] |
| Voteringar (roll-call) | [REQUIRED: #] |
| Anföranden | [REQUIRED: #] |
| Huvudtema | [REQUIRED: 1-line summary of dominant legislative focus] |
| Talman (chair) | [REQUIRED: name + party] |
| Vice talman | [if relevant] |
| Calendar source | get_calendar_events dok_id or event_id |
| Voteringsnummer | Beteckning | Ämne | Resultat (J–N–A–F) | Party-block pattern | Margin |
|---|---|---|---|---|---|
[REQUIRED] |
[REQUIRED] |
[1-line] |
[#–#–#–#] |
[e.g. Tidö vs S+V+MP+C] |
[#] |
(Repeat §1 block for each sitting in the period; add Sitting 2, Sitting 3, etc.)
Populate from
get_calendar_events(org=UTSK),get_betankanden, and direct committee-page queries.
| Utskott | Datum | Tid | Typ (beslutsmöte/sammanträde) | Dagordning | Antagna betänkanden | Ordförande | Party | Source |
|---|---|---|---|---|---|---|---|---|
[e.g. FiU] |
[YYYY-MM-DD] |
[HH:MM] |
[REQUIRED] |
[1-line] |
[#] |
[name + intressent_id] |
[party] |
[get_betankanden dok_id] |
| Utskott | Ordförande (party) | Vice ordförande (party) | Majority block | Minority parties |
|---|---|---|---|---|
[FiU] |
[name (M)] |
[name (S)] |
[M+KD+L+SD] |
[S, V, MP, C] |
[…] |
All rows must resolve via
get_dokument. Flag any row that fails resolution in §8 Data Quality.
dok_id |
Title | Typ | Föredragande utskott | Voteringsresultat | Majoritet | Länk |
|---|---|---|---|---|---|---|
[REQUIRED: e.g. H901FiU1] |
[REQUIRED] |
[bet / prop / mot / skr] |
[utskott abbrev] |
[J/N/A/F counts] |
[Ja/Nej/bifall/avslag] |
[riksdagen.se URL] |
Period totals:
- Betänkanden adopted:
[#](unanimous:[#]; contested:[#]; one-vote margin:[#]) - Propositioner referred to committee:
[#] - Motioner filed:
[#]
| # | Voteringsnummer | Beteckning | Ämne | Resultat (J–N–A–F) | Margin | Party-block pattern | Pivotal defectors |
|---|---|---|---|---|---|---|---|
| 1 | [REQUIRED] |
[REQUIRED] |
[REQUIRED] |
[#–#–#–#] |
[#] |
[Tidö vs opposition] |
[name + party + intressent_id if any] |
| 2 | |||||||
| 3 |
Source:
search_voteringargrouped byparti. Discipline = (MPs voting with party caucus majority / MPs casting a vote) × 100.
| Party | Seats in kammaren | Votes cast | Discipline % | Break-aways (# MPs) | Break-away names (intressent_id) |
|---|---|---|---|---|---|
| S | 107 | [#] |
[%] |
[#] |
[names if any] |
| M | 68 | [#] |
[%] |
[#] |
[names if any] |
| SD | 73 | [#] |
[%] |
[#] |
[names if any] |
| V | 24 | [#] |
[%] |
[#] |
[names if any] |
| MP | 18 | [#] |
[%] |
[#] |
[names if any] |
| C | 24 | [#] |
[%] |
[#] |
[names if any] |
| L | 16 | [#] |
[%] |
[#] |
[names if any] |
| KD | 19 | [#] |
[%] |
[#] |
[names if any] |
Period average party discipline: [overall %]
Most-disciplined party: [party, %]
Least-disciplined party: [party, %; note if low discipline correlates with specific issue]
| Vote | Coalition votes (J) | Opposition votes (N) | Majority line (175) | Margin | Bloc pattern |
|---|---|---|---|---|---|
[top 3 contested votes] |
[#] |
[#] |
175 | [J - 175] |
[M+KD+L+SD / S+V+MP+C / split] |
Source:
get_interpellationerandget_fragor. Record all in period; highlight politically significant ones.
| Typ | Nr | Avsändare | Party | Mottagare (minister) | Departement | Ämne | Status | Datum ställd | Datum besvarad |
|---|---|---|---|---|---|---|---|---|---|
[interpellation / skriftlig fråga] |
[YYYY:N] |
[MP + intressent_id] |
[party] |
[minister + titel] |
[Fi / Ju / UD…] |
[1-line] |
[ställd / besvarad / utgår] |
[YYYY-MM-DD] |
[YYYY-MM-DD or —] |
Period totals — Interpellationer: [#] (besvarade: [#], utgångna: [#]). Skriftliga frågor: [#] (besvarade: [#]).
Most-active interpellant: [name + party + intressent_id] ([#] interpellationer in period).
Source:
search_regeringandget_regering_document.
| Datum | Dokumenttyp | Titel | Departement | Avsändande minister | Länk |
|---|---|---|---|---|---|
[REQUIRED] |
[prop / skr / SOU / Ds / remiss / pressmeddelande] |
[REQUIRED] |
[e.g. Fi / Ju / UD] |
[minister name + title] |
[regeringen.se URL] |
Riksråd (government decisions) of note:
| Datum | Ärende | Beslutsdepartement | Significance | URL |
|---|---|---|---|---|
[YYYY-MM-DD] |
[1-line] |
[abbrev] |
[1–5] |
[URL] |
Record any EU-level developments (COM proposals, Council of EU decisions, EP votes, ECOFIN/Eurogroup) that directly interface with the period's Riksdag/Riksdag agenda. This section establishes the EU political context for downstream PESTLE §Legal and §Economic analysis.
| EU event | Date | Institution | Instrument / CELEX | Swedish Riksdag interface | Responsible utskott |
|---|---|---|---|---|---|
[e.g. COM proposal published] |
[YYYY-MM-DD] |
[COM / EP / Council] |
[COM(YYYY)N / CELEX] |
[Riksdag EUN discussion / prop. referral / UU betänkande] |
[UU / EUN / sector utskott] |
Locate the current period within the Swedish budget cycle. This informs downstream risk-assessment §Fiscal and scenario-analysis horizon calibration.
| Budget milestone | Date | Status | Responsible actor |
|---|---|---|---|
| Vårpropositionen (Spring fiscal bill) | [YYYY-MM-DD] |
[planned / submitted / adopted / past] |
Finansdepartementet |
| Budgetpropositionen (Autumn budget) | [YYYY-MM-DD] |
[planned / submitted / adopted / past] |
Finansdepartementet |
| Rambeslutet (Framework decision) | [YYYY-MM-DD] |
[planned / adopted / past] |
Riksdag FiU |
| Anslagsbeslutet (Appropriation decision) | [YYYY-MM-DD] |
[planned / adopted / past] |
Riksdag kammaren |
| Finanspolitiska rådet annual report | [YYYY-MM-DD] |
[published / pending] |
FPR |
Current fiscal cycle position: [describe: e.g. "Post-Vårproposition; pre-Budgetpropositionen; FiU reviewing spring supplement amendments"]
Source:
search_anforandengrouped by party and talare.
| Party | # Anföranden | Top speaker | # Speeches | Dominant topic |
|---|---|---|---|---|
| S | [#] |
[name + intressent_id] |
[#] |
[1-line] |
| M | [#] |
[name] |
[#] |
[1-line] |
| SD | [#] |
[name] |
[#] |
[1-line] |
| V | [#] |
[name] |
[#] |
[1-line] |
| MP | [#] |
[name] |
[#] |
[1-line] |
| C | [#] |
[name] |
[#] |
[1-line] |
| L | [#] |
[name] |
[#] |
[1-line] |
| KD | [#] |
[name] |
[#] |
[1-line] |
Government representative anföranden: [# speeches by statsråd]
Longest debate: [topic, date, total speeches]
Most contested debate: [topic, date, # interruptions / repliker]
| Source | MCP tool | Rows contributed | Freshness (last retrieval ts) | Status | Notes |
|---|---|---|---|---|---|
| Plenary calendar | get_calendar_events |
[#] |
[ts] |
[✅/⚠️/❌] |
— |
| Document register | search_dokument |
[#] |
[ts] |
[✅/⚠️/❌] |
— |
| Vote records | search_voteringar |
[#] |
[ts] |
[✅/⚠️/❌] |
— |
| Speech records | search_anforanden |
[#] |
[ts] |
[✅/⚠️/❌] |
— |
| Committee reports | get_betankanden |
[#] |
[ts] |
[✅/⚠️/❌] |
— |
| Propositions | get_propositioner |
[#] |
[ts] |
[✅/⚠️/❌] |
— |
| Motions | get_motioner |
[#] |
[ts] |
[✅/⚠️/❌] |
— |
| Written questions | get_fragor |
[#] |
[ts] |
[✅/⚠️/❌] |
— |
| Interpellations | get_interpellationer |
[#] |
[ts] |
[✅/⚠️/❌] |
— |
| Government docs | search_regering |
[#] |
[ts] |
[✅/⚠️/❌] |
— |
Any source returning zero rows when it should not → flag in mcp-reliability-audit.md §Failure analysis with the exact error and timestamp.
- Every
dok_idin §3 resolves viaget_dokumentwithout error. - Every MP reference carries a valid
intressent_id(verified viaget_ledamot). - Every vote row arithmetic is correct:
J + N + A + F = total present(spot-check ≥ 5 rows). - Every
regeringen.seURL returns HTTP 200 (spot-check ≥ 5 random rows from §6). - Period totals in §1 equal the sum across sitting blocks (no double-counting).
- No field contains an estimate: all numeric fields are exact counts from source data.
- Discipline percentages computed from actual vote data, not estimated.
- EU events in §7 cite CELEX or COM number (not just "EU regulation").
- Budget cycle position in §8 cites at least one Finansdepartementet or FPR source.
- Speaker statistics in §9 sourced from
search_anforandennot estimated.
- Methodology:
../methodologies/per-artifact-methodologies.md#session-baseline - Pair with:
cross-session-intelligence.md(narrative) +historical-parallels.md(trend) +coalition-mathematics.md(vote arithmetic) - Operational log:
mcp-reliability-audit.md(data quality issues flagged here appear there) - Source tools:
riksdag-regeringMCP (see../../.github/prompts/02-mcp-access.md) - Budget context:
analysis/imf/README.mdfor IMF fiscal vintage used in §8
Template version: v2.0 · Last updated: 2026-04-25
Purpose: AI-FIRST principle requires a Pass-2 read-back-and-improve. After producing this artifact in Pass 1, re-read it end-to-end and verify each item below. Document any remediation in
methodology-reflection.md§"Pass-2 audit log". Any unchecked ❌ box at the end of Pass 2 forces a Pass-3 rewrite of the affected section.
- Tradecraft anchors honoured — F3EAD stage matches the artifact's role; PIRs declared in the §Tradecraft Context block are actually addressed in the body; Admiralty grades attached to every external source; WEP band + ODNI confidence on every probabilistic judgement.
- Source diversity floor met — at least the minimum number of independent MCP sources required by the artifact's tradecraft block are cited; single-source claims are explicitly labelled
[SINGLE-SOURCE — corroboration pending]. - Evidence specificity — every quantified claim cites a
dok_id(Riksdag), an SCB / IMF dataflow code, or a named external source with date; no "according to data" / "studies show" hand-waves. - Named-actor discipline — every political claim names ≥ 1 person (party + role + dated act/quote) or labels the absence (
[diffuse — no named actor]). - Counter-narrative present — at least one explicit competing hypothesis, dissent quote, or framed objection appears in the body; "no opposition recorded" is itself a finding to label, not silence.
- Election 2026 lens applied — the §"Election 2026 Implications" subsection (or equivalent) addresses electoral salience, coalition pressure, and forward indicators; not boilerplate.
- No illustrative content shipped as fact — every
[REQUIRED]placeholder is filled OR removed; everyExample:block is clearly fenced or removed; no fabricateddok_id, vote count, or quote leaks into the final artifact. - Cross-references resolve — every
[link](file.md)in this artifact points to a file that exists in the run folder (analysis/daily/$ARTICLE_DATE/$SUBFOLDER/) or to a methodology / template underanalysis/. - Mermaid renders — every fenced
```mermaidblock parses (no missing class definitions, no orphan nodes, no >40-node graphs that overflow viewport on mobile). - Line-floor check — artifact length ≥ the per-artifact floor in
reference-quality-thresholds.json; shorter artifacts trigger Pass-2 rewrite, never a[truncated]note.