Conversation
…Security - 2026-03-30"
🏷️ Automatic Labeling SummaryThis PR has been automatically labeled based on the files changed and PR metadata. Applied Labels: documentation,size-xl Label Categories
For more information, see |
🔍 Lighthouse Performance Audit
📥 Download full Lighthouse report Budget Compliance: Performance budgets enforced via |
There was a problem hiding this comment.
Pull request overview
Reverts a previously generated “enhanced analysis” snapshot for 2026-03-30 by rewriting the daily analysis artifacts and pruning a set of document JSON/analysis files for that date.
Changes:
- Updates the 2026-03-30 daily analysis markdown files (classification/risk/SWOT/threat/synthesis/stakeholders/significance) with new structure/content and earlier timestamps.
- Reduces the “Documents Analyzed” count in batch manifests (14 → 10) and updates generation timestamps.
- Removes multiple per-document JSON/analysis files (notably
*-1duplicates and several low-significance documents).
Reviewed changes
Copilot reviewed 38 out of 38 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| news/metadata/batch-status.json | Updates batch completion timestamp. |
| analysis/daily/2026-03-30/threat-analysis.md | Rewrites daily threat analysis structure/content. |
| analysis/daily/2026-03-30/synthesis-summary.md | Rewrites synthesis summary into a dashboard/sections format. |
| analysis/daily/2026-03-30/swot-analysis.md | Rewrites SWOT layout and content; removes opposition section. |
| analysis/daily/2026-03-30/stakeholder-perspectives.md | Replaces lens-based narrative with stakeholder impact map + register. |
| analysis/daily/2026-03-30/significance-scoring.md | Replaces legacy scoring list with weighted scoring table + decision. |
| analysis/daily/2026-03-30/risk-assessment.md | Rewrites risk assessment into risk inventory/register + trend table. |
| analysis/daily/2026-03-30/data-download-manifest.md | Updates generated time and analyzed document count (14 → 10). |
| analysis/daily/2026-03-30/cross-reference-map.md | Updates generated time and analyzed document count (14 → 10). |
| analysis/daily/2026-03-30/classification-results.md | Rewrites classification results into dashboard + detailed table. |
| analysis/daily/2026-03-30/documents/hd11669.json | Removes document metadata JSON. |
| analysis/daily/2026-03-30/documents/hd11669-analysis.md | Removes per-document analysis markdown. |
| analysis/daily/2026-03-30/documents/hd11668.json | Removes document metadata JSON. |
| analysis/daily/2026-03-30/documents/hd11668-analysis.md | Removes per-document analysis markdown. |
| analysis/daily/2026-03-30/documents/hd11667.json | Removes document metadata JSON. |
| analysis/daily/2026-03-30/documents/hd11667-analysis.md | Removes per-document analysis markdown. |
| analysis/daily/2026-03-30/documents/hd11666-1.json | Removes duplicate -1 metadata JSON. |
| analysis/daily/2026-03-30/documents/hd11666-1-analysis.md | Removes duplicate -1 per-document analysis markdown. |
| analysis/daily/2026-03-30/documents/hd11665-1.json | Removes duplicate -1 metadata JSON. |
| analysis/daily/2026-03-30/documents/hd11665-1-analysis.md | Removes duplicate -1 per-document analysis markdown. |
| analysis/daily/2026-03-30/documents/hd11664-1.json | Removes duplicate -1 metadata JSON. |
| analysis/daily/2026-03-30/documents/hd11664-1-analysis.md | Removes duplicate -1 per-document analysis markdown. |
| analysis/daily/2026-03-30/documents/hd11663-1.json | Removes duplicate -1 metadata JSON. |
| analysis/daily/2026-03-30/documents/hd11663-1-analysis.md | Removes duplicate -1 per-document analysis markdown. |
| analysis/daily/2026-03-30/documents/hd11662-1.json | Removes duplicate -1 metadata JSON. |
| analysis/daily/2026-03-30/documents/hd11662-1-analysis.md | Removes duplicate -1 per-document analysis markdown. |
| analysis/daily/2026-03-30/documents/hd11661-1.json | Removes duplicate -1 metadata JSON. |
| analysis/daily/2026-03-30/documents/hd11661-1-analysis.md | Removes duplicate -1 per-document analysis markdown. |
| analysis/daily/2026-03-30/documents/hd11660-1.json | Removes duplicate -1 metadata JSON. |
| analysis/daily/2026-03-30/documents/hd11660-1-analysis.md | Removes duplicate -1 per-document analysis markdown. |
| analysis/daily/2026-03-30/documents/hd11659-1.json | Removes duplicate -1 metadata JSON. |
| analysis/daily/2026-03-30/documents/hd11659-1-analysis.md | Removes duplicate -1 per-document analysis markdown. |
| analysis/daily/2026-03-30/documents/hd10423.json | Removes document metadata JSON. |
| analysis/daily/2026-03-30/documents/hd10423-analysis.md | Removes per-document analysis markdown. |
| analysis/daily/2026-03-30/documents/hd01mju30-1.json | Removes duplicate -1 metadata JSON. |
| analysis/daily/2026-03-30/documents/hd01mju30-1-analysis.md | Removes duplicate -1 per-document analysis markdown. |
| analysis/daily/2026-03-30/documents/hd01ku38-1.json | Removes duplicate -1 metadata JSON. |
| analysis/daily/2026-03-30/documents/hd01ku38-1-analysis.md | Removes duplicate -1 per-document analysis markdown. |
| ## �� Event Context | ||
|
|
There was a problem hiding this comment.
The section header at line 8 contains mojibake ("## �� Event Context"), which will render incorrectly and looks like a broken emoji/encoding. Replace it with the intended heading text (e.g., "## 📋 Event Context") using valid UTF-8 characters.
| ## 🏛️ Section 1: Government Coalition SWOT | ||
|
|
||
| ### 💪 Strengths | ||
| ### ✅ Strengths — Government Coalition | ||
|
|
||
| | # | Statement | Evidence (dok_id) | Confidence | Impact | Entry Date | | ||
| |---|-----------|-------------------|------------|--------|------------| | ||
| | S1 | Active legislative agenda: 239 propositions filed this riksmöte | `get_propositioner` rm=2025/26, count=239 | **HIGH** | Medium | 2026-03-30 | | ||
| | S2 | Coalition holding: government seats 176/349, stability score 83/100 | CIA CSV context data | **HIGH** | High | 2026-03-30 | | ||
| | S3 | Cross-domain policy delivery: justice (Prop 227), housing (Prop 188, 212), food supply (Prop 205, 206) | `HD03227`, `HD03188`, `HD03212`, `HD03205`, `HD03206` | **MEDIUM** | Medium | 2026-03-30 | | ||
| | # | Strength Statement | Evidence (dok_id) | Confidence | Impact | Entry Date | | ||
| |---|-------------------|-------------------|:----------:|:------:|:----------:| | ||
| | S1 | Coalition maintains Riksdag majority through SD supply-and-confidence agreement; voting discipline remains strong (cross-party alignment >87% between M-KD-L per voteringar data) | search_voteringar AU10 | `H` | `H` | 2026-03-30 | | ||
| | S2 | Active legislative agenda — 20+ government propositions delivered in March 2026 (criminal justice, housing, food security, welfare reform) | HD03227, HD03221, HD03210, HD03213 | `H` | `H` | 2026-03-30 | | ||
| | S3 | Strong performance on security and justice agenda — props on youth crime investigation (HD03227), honour-based violence (HD03213), security protection (HD01JuU29) | HD03227, HD03213, HD01JuU29 | `H` | `M` | 2026-03-30 | | ||
|
|
||
| ### ⚠️ Weaknesses | ||
| ### ❌ Weaknesses — Government Coalition | ||
|
|
||
| | # | Statement | Evidence (dok_id) | Confidence | Impact | Entry Date | | ||
| |---|-----------|-------------------|------------|--------|------------| | ||
| | W1 | Party defection: Marléne Lund Kopparklint leaves M party group, reducing coalition bench | `HD0I100` (f-lista 2025/26:100) | **HIGH** | Medium | 2026-03-30 | | ||
| | W2 | Under KU constitutional scrutiny: Minister Carlson on Lantmäteriet security failures | `HDC220260330ou1`, `HDA7KU38` | **HIGH** | High | 2026-03-30 | | ||
| | W3 | State enterprise accountability: Skatteverket DG departure amid criminal investigation | `HD11666` (SD question) | **MEDIUM** | Medium | 2026-03-30 | | ||
| | W4 | State mining company LKAB failing to report serious workplace accidents | `HD11661` (S question) | **MEDIUM** | Medium | 2026-03-30 | | ||
| | # | Weakness Statement | Evidence (dok_id) | Confidence | Impact | Entry Date | | ||
| |---|-------------------|-------------------|:----------:|:------:|:----------:| |
There was a problem hiding this comment.
The SWOT content was reorganized into level-3 headings (e.g., ### ✅ Strengths — Government Coalition) and tables. scripts/analysis-reader.ts currently only extracts SWOT quadrants from level-2 sections named exactly ## Strengths/## Weaknesses/## Opportunities/## Threats, so this file will parse as empty SWOT results and enrichment will degrade. Please keep the existing ## ... quadrant headings (or update the reader to understand the new structure).
| | # | Strength Statement | Evidence (dok_id) | Confidence | Impact | Entry Date | | ||
| |---|-------------------|-------------------|:----------:|:------:|:----------:| | ||
| | S1 | Coalition maintains Riksdag majority through SD supply-and-confidence agreement; voting discipline remains strong (cross-party alignment >87% between M-KD-L per voteringar data) | search_voteringar AU10 | `H` | `H` | 2026-03-30 | | ||
| | S2 | Active legislative agenda — 20+ government propositions delivered in March 2026 (criminal justice, housing, food security, welfare reform) | HD03227, HD03221, HD03210, HD03213 | `H` | `H` | 2026-03-30 | | ||
| | S3 | Strong performance on security and justice agenda — props on youth crime investigation (HD03227), honour-based violence (HD03213), security protection (HD01JuU29) | HD03227, HD03213, HD01JuU29 | `H` | `M` | 2026-03-30 | |
There was a problem hiding this comment.
The Confidence/Impact columns use single-letter values (H/M) instead of the [HIGH]/[MEDIUM]/[LOW] confidence labels used elsewhere in the daily analysis outputs and required by the AI-driven analysis guide. This makes the confidence semantics ambiguous and can’t be picked up by simple regex-based tooling that expects bracketed labels. Please use the standard [HIGH]/[MEDIUM]/[LOW] labels consistently.
| # 📈 Political Significance Scoring — 2026-03-30 | ||
|
|
||
| **Generated**: 2026-03-30 14:31 UTC | ||
| **Data Sources**: get_propositioner, get_motioner, get_betankanden, search_voteringar, search_anforanden, get_fragor, get_interpellationer | ||
| **Documents Analyzed**: 14 | ||
| **Confidence**: HIGH | ||
| **📋 Document Owner:** CEO | **📄 Version:** 1.0 | **📅 Last Updated:** 2026-03-30 (UTC) | ||
| **🏢 Owner:** Hack23 AB (Org.nr 5595347807) | **🏷️ Classification:** Public | ||
|
|
||
| ## Summary | ||
| --- | ||
|
|
||
| Scored **14** documents for political significance (0–10 scale). | ||
| ## �� Event Context | ||
|
|
||
| ## Detailed Analysis | ||
| | Field | Value | | ||
| |-------|-------| | ||
| | **Score ID** | `SIG-2026-03-30-001` | | ||
| | **Scoring Date** | `2026-03-30 10:33 UTC` | | ||
| | **Events Scored** | 12 | | ||
| | **Scored By** | `news-realtime-monitor` | | ||
| | **Scoring Method** | 6-dimension weighted model (manual rubric) | |
There was a problem hiding this comment.
This significance scoring file no longer follows the canonical serializer output (frontmatter + ## Summary/## Detailed Analysis/## Key Findings sections), and it also lacks an **Overall Score**: / **Score**: key-value line that parseSignificanceScoring() looks for. With the current format, scripts/analysis-reader.ts will return the default score and urgency, reducing enrichment quality. Please restore the serializer’s expected headings/keys or extend the parser to handle the batch scoring table format.
| # 🏷️ Political Classification Results — 2026-03-30 | ||
|
|
||
| **📋 Document Owner:** CEO | **📄 Version:** 1.0 | **📅 Last Updated:** 2026-03-30 (UTC) | ||
| **🏢 Owner:** Hack23 AB (Org.nr 5595347807) | **🏷️ Classification:** Public | ||
|
|
||
| --- | ||
|
|
||
| ## 📋 Classification Context | ||
|
|
||
| | Field | Value | |
There was a problem hiding this comment.
This file no longer follows the standard analysis frontmatter and section structure produced by scripts/pre-article-analysis/markdown-serializer.ts (e.g., **Generated**, **Data Sources**, **Documents Analyzed**, **Confidence**, and ## Summary/## Detailed Analysis headings). That breaks downstream parsing in scripts/analysis-reader.ts which only extracts level-2 ## ... sections and key/value pairs, causing enrichment to degrade to defaults. Please revert to the serializer’s expected format (or update the reader/parsers accordingly).
| # 🧩 Political Intelligence Synthesis — 2026-03-30 | ||
|
|
||
| **📋 Document Owner:** CEO | **📄 Version:** 1.0 | **📅 Last Updated:** 2026-03-30 (UTC) | ||
| **🏢 Owner:** Hack23 AB (Org.nr 5595347807) | **🏷️ Classification:** Public | ||
|
|
||
| --- | ||
|
|
||
| ## 📋 Synthesis Context | ||
|
|
||
| | Field | Value | | ||
| |-------|-------| | ||
| | **Synthesis ID** | `SYN-2026-03-30-001` | | ||
| | **Analysis Date** | `2026-03-30 14:31 UTC` | | ||
| | **Documents Analyzed** | 14 (pipeline) + 2 KU hearings (direct MCP) | | ||
| | **Analysis Period** | 2026-03-29 00:00 – 2026-03-30 14:30 UTC | | ||
| | **Produced By** | `news-realtime-monitor` workflow (AI-enhanced) | | ||
| | **Overall Confidence** | **MEDIUM** (metadata-only for most documents; KU hearing summaries available) | | ||
| | **Primary MCP Sources** | `search_dokument`, `get_betankanden`, `get_propositioner`, `search_voteringar`, `search_anforanden`, `search_regering` | | ||
| | **Analysis Date** | `2026-03-30 10:33 UTC` | | ||
| | **Documents Analyzed** | 10 parliamentary documents + 2 KU hearing agendas | | ||
| | **Analysis Period** | 2026-03-29 00:00 – 2026-03-30 12:00 UTC | | ||
| | **Produced By** | `news-realtime-monitor` agentic workflow | | ||
| | **Overall Confidence** | **MEDIUM** | | ||
|
|
There was a problem hiding this comment.
This file’s structure was changed away from the serializer/reader contract (missing the standard **Generated**/**Data Sources**/**Documents Analyzed**/**Confidence** lines and ## Summary section headings). scripts/analysis-reader.ts only extracts level-2 ## <Section> blocks, so the current ## 🏛️ Section 1:/### ... layout won’t be parsed and article enrichment will fall back to defaults. Please restore the canonical headings/format used by serializeSynthesisSummary (or adjust the reader to match the new layout).
| # 👥 Stakeholder Impact Assessment — 2026-03-30 | ||
|
|
||
| **📋 Document Owner:** CEO | **📄 Version:** 1.0 | **📅 Last Updated:** 2026-03-30 (UTC) | ||
| **🏢 Owner:** Hack23 AB (Org.nr 5595347807) | **🏷️ Classification:** Public | ||
|
|
||
| --- | ||
|
|
||
| ## 📋 Assessment Context | ||
|
|
||
| | Field | Value | | ||
| |-------|-------| | ||
| | **Assessment ID** | `STA-2026-03-30-001` | | ||
| | **Assessment Date** | `2026-03-30 10:33 UTC` | | ||
| | **Policy/Event Subject** | KU scrutiny hearings (Northvolt + Lantmäteriet), MP defection, climate targets | | ||
| | **Primary dok_id** | HDC220260330ou1, HDC220260330ou2, HD01MJU30, HD0I100 | | ||
| | **Stage of Process** | Committee hearings (ongoing), committee reports (published) | | ||
| | **Produced By** | `news-realtime-monitor` | | ||
| | **Overall Impact Level** | **MEDIUM** | |
There was a problem hiding this comment.
stakeholder-perspectives.md no longer uses the canonical serializer format (## Summary / ## Detailed Analysis with lens subsections). The scripts/analysis-reader.ts parser for stakeholder perspectives extracts level-2 ## 🏛️ Government / ## ⚖️ Opposition / etc sections, so the current diagram + register layout will be parsed as empty strings and enrichment will silently degrade. Consider restoring the serializer’s expected headings or extending the reader to parse the new register/table format.
| # 🎭 Political Threat Analysis — 2026-03-30 | ||
|
|
||
| ## 📋 Threat Context | ||
| **📋 Document Owner:** CEO | **📄 Version:** 1.0 | **📅 Last Updated:** 2026-03-30 (UTC) | ||
| **🏢 Owner:** Hack23 AB (Org.nr 5595347807) | **🏷️ Classification:** Public | ||
|
|
||
| --- | ||
|
|
||
| ## 📋 Threat Analysis Context | ||
|
|
||
| | Field | Value | | ||
| |-------|-------| | ||
| | **Assessment ID** | `THR-2026-03-30-001` | | ||
| | **Analysis Date** | `2026-03-30 14:35 UTC` | | ||
| | **Model** | STRIDE (adapted for political threat analysis) | | ||
| | **Documents Analyzed** | 14 + KU hearing events | | ||
| | **Produced By** | `news-realtime-monitor` (AI-enhanced) | | ||
| | **Confidence** | **MEDIUM** | | ||
| | **Threat Analysis ID** | `THR-2026-03-30-001` | | ||
| | **Analysis Date** | `2026-03-30 10:33 UTC` | | ||
| | **Analysis Period** | 2026-03-30 (daily snapshot) | | ||
| | **Produced By** | `news-realtime-monitor` | | ||
| | **Political Context** | KU scrutiny hearings on ministerial conduct; one M MP defection; 8 opposition written questions; climate committee report published. | | ||
| | **Overall Threat Level** | **MODERATE** | | ||
|
|
There was a problem hiding this comment.
Like other daily analysis artifacts, this file is expected to follow the standard serializer format (frontmatter + ## Summary/## Detailed Analysis/etc). The current structure (context table + custom sections) won’t be parsed by scripts/analysis-reader.ts (it only extracts level-2 sections and key/value pairs), so threat enrichment will degrade to defaults. Please restore the canonical headings/format used by serializeThreatAnalysis (or update the reader accordingly).
| # ⚠️ Political Risk Assessment — 2026-03-30 | ||
|
|
||
| **📋 Document Owner:** CEO | **📄 Version:** 1.0 | **📅 Last Updated:** 2026-03-30 (UTC) | ||
| **🏢 Owner:** Hack23 AB (Org.nr 5595347807) | **🏷️ Classification:** Public | ||
|
|
||
| --- | ||
|
|
||
| ## 📋 Risk Context | ||
|
|
||
| | Field | Value | | ||
| |-------|-------| | ||
| | **Assessment ID** | `RSK-2026-03-30-001` | | ||
| | **Analysis Date** | `2026-03-30 14:35 UTC` | | ||
| | **Model** | 5×5 Risk Matrix | | ||
| | **Documents Analyzed** | 14 + KU hearing events | | ||
| | **Produced By** | `news-realtime-monitor` (AI-enhanced) | | ||
| | **Overall Risk Level** | **MEDIUM** (elevated from LOW due to KU hearings) | | ||
| | **Confidence** | **MEDIUM** | | ||
| | **Risk Assessment ID** | `RSK-2026-03-30-001` | | ||
| | **Assessment Date** | `2026-03-30 10:33 UTC` | | ||
| | **Assessment Period** | 2026-03-30 to 2026-04-06 | | ||
| | **Produced By** | `news-realtime-monitor` | | ||
| | **Political Context** | Tidöblocket (M+KD+L with SD supply) governs with working majority. KU scrutiny hearings today on Northvolt/AP and Lantmäteriet security. One M MP has left the party group. | | ||
| | **Riksmöte** | 2025/26 | | ||
| | **Overall Risk Level** | **MEDIUM** | | ||
|
|
There was a problem hiding this comment.
This risk assessment output no longer includes the standard serializer frontmatter keys (e.g., **Generated**, **Documents Analyzed**, **Confidence**) and the canonical ## Summary/## Detailed Analysis sections. As a result, scripts/analysis-reader.ts cannot extract risk level, factors, or indicators (it relies on key/value lines and level-2 ## sections) and article enrichment will fall back to defaults. Please revert to the serializeRiskAssessment output structure (or update the reader/parser to match this new format).
Reverts #1463