Skip to content

Commit 145fced

Browse files
Copilotpethers
andauthored
Fix bad analysis links: rewrite relative + tree/md hrefs; add banned-pattern guard for future articles
Agent-Logs-Url: https://github.com/Hack23/riksdagsmonitor/sessions/9980c606-7e5f-4d32-9e61-39e7ea6e1e38 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
1 parent 0f977a6 commit 145fced

33 files changed

Lines changed: 608 additions & 229 deletions

.github/aw/SHARED_PROMPT_PATTERNS.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3798,6 +3798,17 @@ fi
37983798
37993799
> **📁 Per-document analyses**: When `documents/` subdirectory exists, the script now renders **each per-document `.md` file as an individual `<li>`** (not just a folder link). Manually-authored sections MUST follow the same pattern — list every per-document file explicitly.
38003800
3801+
> 🚨 **CANONICAL URL FORMAT — NO RELATIVE PATHS**: Every `href` to an analysis `.md` file **MUST** use the absolute GitHub blob URL `https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/…`. **Relative paths** such as `href="../analysis/…"`, `href="../../analysis/…"`, or `href="analysis/…"` are **FORBIDDEN** in any article — they resolve to raw `.md` URLs under `riksdagsmonitor.com/` that do not render. This is enforced by:
3802+
>
3803+
> 1. `scripts/data-transformers/content-generators/ai-marker-helpers.ts` banned-pattern `relativeAnalysisHref` (validated by `scripts/check-banned-patterns.ts` in every content workflow).
3804+
> 2. `scripts/fix-analysis-references.ts --rewrite`, which detects and replaces any analysis-references section containing relative hrefs (regardless of whether the target file exists on disk).
3805+
>
3806+
> **Bad**: `<a href="../analysis/daily/2026-04-18/realtime-1705/README.md">` — served as `https://riksdagsmonitor.com/analysis/daily/2026-04-18/realtime-1705/README.md` → raw markdown / 404.
3807+
>
3808+
> **Good**: `<a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-18/realtime-1705/README.md">` — renders on GitHub.
3809+
>
3810+
> Canonical exemplar with correct URLs: `news/2026-04-18-weekly-review-en.html`.
3811+
38013812
```html
38023813
<section class="analysis-references" aria-label="Analysis sources and methodology">
38033814
<h2>📊 Analysis &amp; Sources</h2>

news/2026-04-07-evening-analysis-en.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ <h2>📊 Analysis &amp; Sources</h2>
160160
<p>This article is based on data from the Swedish Riksdag open data API and government documents via riksdag-regering-mcp. Analysis artifacts are available at:</p>
161161
<ul>
162162
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/daily/2026-04-07/evening-analysis/">analysis/daily/2026-04-07/evening-analysis/</a></li>
163-
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/methodologies/ai-driven-analysis-guide.md">analysis/methodologies/ai-driven-analysis-guide.md</a></li>
163+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/methodologies/ai-driven-analysis-guide.md">analysis/methodologies/ai-driven-analysis-guide.md</a></li>
164164
</ul>
165165
<p><em>9 documents analyzed. Data sourced from 2026-04-07. Coalition risk: 4/100 (LOW).</em></p>
166166
</section>

news/2026-04-07-evening-analysis-sv.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ <h2>📊 Analys och källor</h2>
160160
<p>Denna artikel baseras på data från riksdagens öppna data-API och regeringsdokument via riksdag-regering-mcp. Analysunderlag finns tillgängligt på:</p>
161161
<ul>
162162
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/daily/2026-04-07/evening-analysis/">analysis/daily/2026-04-07/evening-analysis/</a></li>
163-
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/methodologies/ai-driven-analysis-guide.md">analysis/methodologies/ai-driven-analysis-guide.md</a></li>
163+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/methodologies/ai-driven-analysis-guide.md">analysis/methodologies/ai-driven-analysis-guide.md</a></li>
164164
</ul>
165165
<p><em>9 dokument analyserade. Data hämtad från 2026-04-07. Koalitionsrisk: 4/100 (LÅG).</em></p>
166166
</section>

news/2026-04-08-government-propositions-sv.html

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -492,14 +492,14 @@ <h2>Vad man ska följa denna vecka</h2>
492492
<h2>📊 Analys och källor</h2>
493493
<p>Den här artikeln bygger på AI-driven analys av proposition Skr. 2025/26:114 och relaterade dokument. Fullständiga analysrapporter finns tillgängliga:</p>
494494
<ul>
495-
<li><a href="../analysis/daily/2026-04-08/propositions/synthesis-summary.md">Sammanfattning — övergripande mönster och underrättelserapport</a></li>
496-
<li><a href="../analysis/daily/2026-04-08/propositions/swot-analysis.md">SWOT-analys — styrkor, svagheter, möjligheter och hot</a></li>
497-
<li><a href="../analysis/daily/2026-04-08/propositions/risk-assessment.md">Riskbedömning — 5×5 riskmatris med sannolikhet och konsekvens</a></li>
498-
<li><a href="../analysis/daily/2026-04-08/propositions/threat-analysis.md">Hotanalys — sexkategorisk taxonomisk bedömning</a></li>
499-
<li><a href="../analysis/daily/2026-04-08/propositions/stakeholder-perspectives.md">Intressentperspektiv — sexlinsanalys av politiska aktörer</a></li>
500-
<li><a href="../analysis/daily/2026-04-08/propositions/significance-scoring.md">Betydelsepoäng — viktad poängsättning av lagstiftningseffekt</a></li>
501-
<li><a href="../analysis/daily/2026-04-08/propositions/classification-results.md">Klassificering — känslighetsklassificering och policydomän</a></li>
502-
<li><a href="../analysis/daily/2026-04-08/propositions/documents/hd03114-analysis.md">HD03114 Dokumentanalys — Strategisk exportkontroll 2025</a></li>
495+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-08/propositions/synthesis-summary.md">Sammanfattning — övergripande mönster och underrättelserapport</a></li>
496+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-08/propositions/swot-analysis.md">SWOT-analys — styrkor, svagheter, möjligheter och hot</a></li>
497+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-08/propositions/risk-assessment.md">Riskbedömning — 5×5 riskmatris med sannolikhet och konsekvens</a></li>
498+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-08/propositions/threat-analysis.md">Hotanalys — sexkategorisk taxonomisk bedömning</a></li>
499+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-08/propositions/stakeholder-perspectives.md">Intressentperspektiv — sexlinsanalys av politiska aktörer</a></li>
500+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-08/propositions/significance-scoring.md">Betydelsepoäng — viktad poängsättning av lagstiftningseffekt</a></li>
501+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-08/propositions/classification-results.md">Klassificering — känslighetsklassificering och policydomän</a></li>
502+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-08/propositions/documents/hd03114-analysis.md">HD03114 Dokumentanalys — Strategisk exportkontroll 2025</a></li>
503503
</ul>
504504
</section>
505505

news/2026-04-13-evening-analysis-en.html

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,13 @@ <h2>Looking Ahead</h2>
107107
<h2>&#x1F4CA; Analysis &amp; Sources</h2>
108108
<p>This article is based on AI-driven political intelligence analysis of Swedish parliamentary data.</p>
109109
<ul>
110-
<li><a href="../analysis/daily/2026-04-13/evening-analysis/">Evening Analysis — Full Analysis</a></li>
111-
<li><a href="../analysis/daily/2026-04-13/propositions/">Propositions Analysis</a></li>
112-
<li><a href="../analysis/daily/2026-04-13/committeeReports/">Committee Reports Analysis</a></li>
113-
<li><a href="../analysis/daily/2026-04-13/motions/">Motions Analysis</a></li>
114-
<li><a href="../analysis/daily/2026-04-13/interpellations/">Interpellations Analysis</a></li>
115-
<li><a href="../analysis/daily/2026-04-13/realtime-1433/">Realtime Monitor Analysis</a></li>
116-
<li><a href="../analysis/methodologies/ai-driven-analysis-guide.md">Analysis Methodology (v5.0)</a></li>
110+
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/daily/2026-04-13/evening-analysis/">Evening Analysis — Full Analysis</a></li>
111+
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/daily/2026-04-13/propositions/">Propositions Analysis</a></li>
112+
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/daily/2026-04-13/committeeReports/">Committee Reports Analysis</a></li>
113+
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/daily/2026-04-13/motions/">Motions Analysis</a></li>
114+
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/daily/2026-04-13/interpellations/">Interpellations Analysis</a></li>
115+
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/daily/2026-04-13/realtime-1433/">Realtime Monitor Analysis</a></li>
116+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/methodologies/ai-driven-analysis-guide.md">Analysis Methodology (v5.0)</a></li>
117117
</ul>
118118
<p><em>Data sources: riksdag-regering-mcp (Riksdag open data, government press releases), cross-referenced with 5 sibling analysis workflows. 61 documents analyzed.</em></p>
119119
</section>

news/2026-04-13-evening-analysis-sv.html

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,13 @@ <h2>Framåtblick</h2>
107107
<h2>&#x1F4CA; Analys och källor</h2>
108108
<p>Denna artikel bygger på AI-driven politisk underrättelseanalys av svenska riksdagsdata.</p>
109109
<ul>
110-
<li><a href="../analysis/daily/2026-04-13/evening-analysis/">Kvällsanalys — fullständig analys</a></li>
111-
<li><a href="../analysis/daily/2026-04-13/propositions/">Propositionsanalys</a></li>
112-
<li><a href="../analysis/daily/2026-04-13/committeeReports/">Utskottsbetänkandeanalys</a></li>
113-
<li><a href="../analysis/daily/2026-04-13/motions/">Motionsanalys</a></li>
114-
<li><a href="../analysis/daily/2026-04-13/interpellations/">Interpellationsanalys</a></li>
115-
<li><a href="../analysis/daily/2026-04-13/realtime-1433/">Realtidsbevakning</a></li>
116-
<li><a href="../analysis/methodologies/ai-driven-analysis-guide.md">Analysmetodik (v5.0)</a></li>
110+
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/daily/2026-04-13/evening-analysis/">Kvällsanalys — fullständig analys</a></li>
111+
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/daily/2026-04-13/propositions/">Propositionsanalys</a></li>
112+
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/daily/2026-04-13/committeeReports/">Utskottsbetänkandeanalys</a></li>
113+
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/daily/2026-04-13/motions/">Motionsanalys</a></li>
114+
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/daily/2026-04-13/interpellations/">Interpellationsanalys</a></li>
115+
<li><a href="https://github.com/Hack23/riksdagsmonitor/tree/main/analysis/daily/2026-04-13/realtime-1433/">Realtidsbevakning</a></li>
116+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/methodologies/ai-driven-analysis-guide.md">Analysmetodik (v5.0)</a></li>
117117
</ul>
118118
<p><em>Datakällor: riksdag-regering-mcp (riksdagens öppna data, regeringens pressmeddelanden), korsrefererat med 5 parallella analysflöden. 61 dokument analyserade.</em></p>
119119
</section>

news/2026-04-14-evening-analysis-ar.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -170,12 +170,12 @@ <h2>تداعيات على انتخابات 2026</h2>
170170
<h2>التحليل والمصادر</h2>
171171
<p>يُلخّص هذا التحليل المسائي نتائج سير عمل تحليلية متعددة تغطي الرابع عشر من أبريل 2026:</p>
172172
<ul>
173-
<li><a href="../analysis/daily/2026-04-14/evening-analysis/synthesis-summary.md">تحليل المساء — ملخص التوليف</a> (83 وثيقة مرجعية)</li>
174-
<li><a href="../analysis/daily/2026-04-14/committeeReports/synthesis-summary.md">تحليل تقارير اللجان</a> (3 وثائق: FiU48, UFöU3, KU44)</li>
175-
<li><a href="../analysis/daily/2026-04-14/propositions/synthesis-summary.md">تحليل المقترحات</a> (6 وثائق: حزمة ميزانية الربيع)</li>
176-
<li><a href="../analysis/daily/2026-04-14/interpellations/synthesis-summary.md">تحليل الاستجوابات</a> (10 وثائق: هجوم مساءلة S)</li>
177-
<li><a href="../analysis/daily/2026-04-14/motions/synthesis-summary.md">تحليل الاقتراحات</a> (30 وثيقة: ردود المعارضة)</li>
178-
<li><a href="../analysis/daily/2026-04-14/realtime-1526/synthesis-summary.md">تحليل المراقبة الفورية</a> (17 وثيقة: الإيداعات الجديدة اليوم)</li>
173+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/evening-analysis/synthesis-summary.md">تحليل المساء — ملخص التوليف</a> (83 وثيقة مرجعية)</li>
174+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/committeeReports/synthesis-summary.md">تحليل تقارير اللجان</a> (3 وثائق: FiU48, UFöU3, KU44)</li>
175+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/propositions/synthesis-summary.md">تحليل المقترحات</a> (6 وثائق: حزمة ميزانية الربيع)</li>
176+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/interpellations/synthesis-summary.md">تحليل الاستجوابات</a> (10 وثائق: هجوم مساءلة S)</li>
177+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/motions/synthesis-summary.md">تحليل الاقتراحات</a> (30 وثيقة: ردود المعارضة)</li>
178+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/realtime-1526/synthesis-summary.md">تحليل المراقبة الفورية</a> (17 وثيقة: الإيداعات الجديدة اليوم)</li>
179179
</ul>
180180
<p><strong>مصادر البيانات</strong>: واجهة برمجة تطبيقات البيانات المفتوحة للبرلمان السويدي (data.riksdagen.se)، مكاتب الحكومة السويدية (regeringen.se عبر g0v.se). تم إنشاء التحليل باستخدام أدوات riksdag-regering MCP.</p>
181181
</section>

news/2026-04-14-evening-analysis-da.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -170,12 +170,12 @@ <h2>Valg 2026-implikationer</h2>
170170
<h2>Analyse og kilder</h2>
171171
<p>Denne aftenanalyse sammenfatter resultater fra flere analytiske workflows for den 14. april 2026:</p>
172172
<ul>
173-
<li><a href="../analysis/daily/2026-04-14/evening-analysis/synthesis-summary.md">Aftenanalyse — Syntheseoversigt</a> (83 dokumenter krydshenvvist)</li>
174-
<li><a href="../analysis/daily/2026-04-14/committeeReports/synthesis-summary.md">Udvalgsrapportanalyse</a> (3 dokumenter: FiU48, UFöU3, KU44)</li>
175-
<li><a href="../analysis/daily/2026-04-14/propositions/synthesis-summary.md">Propositionsanalyse</a> (6 dokumenter: Forårbudgetpakke)</li>
176-
<li><a href="../analysis/daily/2026-04-14/interpellations/synthesis-summary.md">Interpellationsanalyse</a> (10 dokumenter: S-ansvarlighedsoffensiv)</li>
177-
<li><a href="../analysis/daily/2026-04-14/motions/synthesis-summary.md">Motionsanalyse</a> (30 dokumenter: Oppositionssvar)</li>
178-
<li><a href="../analysis/daily/2026-04-14/realtime-1526/synthesis-summary.md">Realtidsovervågningsanalyse</a> (17 dokumenter: Dagens nye indgivelser)</li>
173+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/evening-analysis/synthesis-summary.md">Aftenanalyse — Syntheseoversigt</a> (83 dokumenter krydshenvvist)</li>
174+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/committeeReports/synthesis-summary.md">Udvalgsrapportanalyse</a> (3 dokumenter: FiU48, UFöU3, KU44)</li>
175+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/propositions/synthesis-summary.md">Propositionsanalyse</a> (6 dokumenter: Forårbudgetpakke)</li>
176+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/interpellations/synthesis-summary.md">Interpellationsanalyse</a> (10 dokumenter: S-ansvarlighedsoffensiv)</li>
177+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/motions/synthesis-summary.md">Motionsanalyse</a> (30 dokumenter: Oppositionssvar)</li>
178+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/realtime-1526/synthesis-summary.md">Realtidsovervågningsanalyse</a> (17 dokumenter: Dagens nye indgivelser)</li>
179179
</ul>
180180
<p><strong>Datakilder</strong>: Sveriges Riksdags åbne data-API (data.riksdagen.se), Regeringskansliet (regeringen.se via g0v.se). Analyse genereret ved hjælp af riksdag-regering MCP-værktøjer.</p>
181181
</section>

news/2026-04-14-evening-analysis-de.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -170,12 +170,12 @@ <h2>Wahl-2026-Implikationen</h2>
170170
<h2>Analyse und Quellen</h2>
171171
<p>Diese Abendanalyse fasst Erkenntnisse aus mehreren analytischen Workflows für den 14. April 2026 zusammen:</p>
172172
<ul>
173-
<li><a href="../analysis/daily/2026-04-14/evening-analysis/synthesis-summary.md">Abendanalyse — Synthesezusammenfassung</a> (83 Dokumente kreuzreferenziert)</li>
174-
<li><a href="../analysis/daily/2026-04-14/committeeReports/synthesis-summary.md">Ausschussberichtsanalyse</a> (3 Dokumente: FiU48, UFöU3, KU44)</li>
175-
<li><a href="../analysis/daily/2026-04-14/propositions/synthesis-summary.md">Propositionsanalyse</a> (6 Dokumente: Frühjahrsbudgetpaket)</li>
176-
<li><a href="../analysis/daily/2026-04-14/interpellations/synthesis-summary.md">Interpellationsanalyse</a> (10 Dokumente: S-Rechenschaftsoffensive)</li>
177-
<li><a href="../analysis/daily/2026-04-14/motions/synthesis-summary.md">Antragsanalyse</a> (30 Dokumente: Oppositionsantworten)</li>
178-
<li><a href="../analysis/daily/2026-04-14/realtime-1526/synthesis-summary.md">Echtzeit-Überwachungsanalyse</a> (17 Dokumente: Heutige Neueinreichungen)</li>
173+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/evening-analysis/synthesis-summary.md">Abendanalyse — Synthesezusammenfassung</a> (83 Dokumente kreuzreferenziert)</li>
174+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/committeeReports/synthesis-summary.md">Ausschussberichtsanalyse</a> (3 Dokumente: FiU48, UFöU3, KU44)</li>
175+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/propositions/synthesis-summary.md">Propositionsanalyse</a> (6 Dokumente: Frühjahrsbudgetpaket)</li>
176+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/interpellations/synthesis-summary.md">Interpellationsanalyse</a> (10 Dokumente: S-Rechenschaftsoffensive)</li>
177+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/motions/synthesis-summary.md">Antragsanalyse</a> (30 Dokumente: Oppositionsantworten)</li>
178+
<li><a href="https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/2026-04-14/realtime-1526/synthesis-summary.md">Echtzeit-Überwachungsanalyse</a> (17 Dokumente: Heutige Neueinreichungen)</li>
179179
</ul>
180180
<p><strong>Datenquellen</strong>: Schwedische Riksdag Open Data API (data.riksdagen.se), Regierungskanzlei (regeringen.se via g0v.se). Analyse mit riksdag-regering MCP-Tools generiert.</p>
181181
</section>

0 commit comments

Comments
 (0)