media-framing-analysis v2.0 → v2.1: psyops depth + no-neutral-media doctrine#2149
Conversation
…resilience Agent-Logs-Url: https://github.com/Hack23/riksdagsmonitor/sessions/14d1a29b-21ed-46a2-804a-aebe3ce25eaf Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
…neutral algorithm Agent-Logs-Url: https://github.com/Hack23/riksdagsmonitor/sessions/3e343f61-dc44-4fed-a2c3-49ee43933677 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
🏷️ Automatic Labeling SummaryThis PR has been automatically labeled based on the files changed and PR metadata. Applied Labels: documentation,refactor,size-l 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
Updates the platform’s media-framing-analysis contract to v2.1 by expanding it into a combined media framing + influence-operations lens and enforcing the new no-neutral-media/no-neutral-algorithm doctrine across templates, methodologies, prompts, and UI metadata.
Changes:
- Expands
media-framing-analysis.mdtemplate into an influence-operations–aware structure (Entman functions, DISARM, CIB/ABCDE, laundering chain, lifecycle, RRPA, counter-resilience ladder, outlet bias audit). - Aligns methodology and pipeline documentation/prompts to the v2.1 contract and new frame labels (C/D relabeling, neutrality doctrine).
- Raises/extends line-floor thresholds for
media-framing-analysis.mdacross multiple article types.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/render-lib/aggregator/reader-guide.ts | Updates Reader Intelligence Guide label/reader-value copy to reflect v2.1 scope. |
| scripts/political-intelligence/i18n/template-i18n.ts | Updates template metadata description for the new v2.1 framing/influence-ops scope. |
| analysis/templates/media-framing-analysis.md | Major v2.1 template expansion: doctrine + influence-ops depth + new required sections/tables. |
| analysis/methodologies/reference-quality-thresholds.json | Raises base floor for media-framing-analysis.md and adds per-article-type floors. |
| analysis/methodologies/per-artifact-methodologies.md | Updates the per-artifact methodology for the new v2.1 media-framing contract. |
| analysis/methodologies/electoral-domain-methodology.md | Updates Part 5 methodology to match the v2.1 framing + influence-ops contract and Mermaid class defs. |
| analysis/methodologies/artifact-catalog.md | Updates artifact catalog entry (floor, section link, and description) for v2.1 template. |
| analysis/methodologies/ai-driven-analysis-guide.md | Updates Family D description row for media-framing-analysis.md to v2.1 requirements. |
| .github/prompts/06-article-generation.md | Updates aggregator ordering description to reflect new v2.1 content. |
| .github/prompts/04-analysis-pipeline.md | Updates pipeline step definition for media-framing-analysis.md to the v2.1 contract. |
| STORY["📰 Lead story (e.g., HD03262)"] --> F1["🟢 Frame A<br/>government-aligned"] | ||
| STORY --> F2["🔴 Frame B<br/>opposition-aligned"] | ||
| STORY --> F3["🟡 Frame C<br/>establishment / centrist-consensus<br/>(NOT 'neutral' — Bonnier/Schibsted owner ideology,<br/>expert-establishment recruitment, centrist-urban audience)"] | ||
| STORY --> F4["🟣 Frame D<br/>coalition-inside / proceduralist<br/>(public-broadcaster framing — politically-appointed boards,<br/>institutional editorial culture)"] |
There was a problem hiding this comment.
Within the template, Frame D is described as “public-broadcaster proceduralist” in the labelling-discipline note, but the Mermaid overview labels it “coalition-inside / proceduralist”. This mixed naming makes it harder to enforce the new taxonomy in downstream artifacts and checklists. Consider standardising on a single label for Frame D throughout (and, if you want to keep a coalition-inside subframe, document it explicitly as a separate frame or sub-variant).
| STORY --> F4["🟣 Frame D<br/>coalition-inside / proceduralist<br/>(public-broadcaster framing — politically-appointed boards,<br/>institutional editorial culture)"] | |
| STORY --> F4["🟣 Frame D<br/>public-broadcaster proceduralist<br/>(public-broadcaster framing — politically-appointed boards,<br/>institutional editorial culture)"] |
| | 🟣 D | Availability heuristic + recency + **proceduralist-illusion bias** | Coalition rumour amplified by recent procedural event; public-broadcaster procedural framing read as "what really happened" when it is itself an editorial choice | Base-rate data on coalition stability; remind readers that public-broadcaster framing reflects an institutional editorial culture, not absence of one | | ||
| | ⚫ E | Repetition / illusory truth + reactance | Identical phrasing across coordinated nodes | Prebunking of frame-template; show coordination evidence | | ||
|
|
||
| > **Source:** Cialdini (2001) *Influence*; Kahneman (2011) *Thinking, Fast and Slow*; Roozenbeek & van der Linden (2019) "Fake news game confers psychological resistance against online misinformation." *Palgrave Communications.* Every row must cite a documented bias with primary literature, not folk-psychology claims. |
There was a problem hiding this comment.
The Cognitive Vulnerability Map includes the term “proceduralist-illusion bias”, but the surrounding guidance requires each bias to be a documented, citable concept from primary literature. As written this looks like a novel/undefined label, which will be hard to evidence and may cause Pass-2 failures or inconsistent citations. Consider replacing it with an established bias term (or mark it clearly as a placeholder/coinage + define it and require a specific citation).
| | 🟣 D | Availability heuristic + recency + **proceduralist-illusion bias** | Coalition rumour amplified by recent procedural event; public-broadcaster procedural framing read as "what really happened" when it is itself an editorial choice | Base-rate data on coalition stability; remind readers that public-broadcaster framing reflects an institutional editorial culture, not absence of one | | |
| | ⚫ E | Repetition / illusory truth + reactance | Identical phrasing across coordinated nodes | Prebunking of frame-template; show coordination evidence | | |
| > **Source:** Cialdini (2001) *Influence*; Kahneman (2011) *Thinking, Fast and Slow*; Roozenbeek & van der Linden (2019) "Fake news game confers psychological resistance against online misinformation." *Palgrave Communications.* Every row must cite a documented bias with primary literature, not folk-psychology claims. | |
| | 🟣 D | Availability heuristic + recency + authority bias | Coalition rumour amplified by recent procedural event; public-broadcaster procedural framing read as "what really happened" when it is itself an editorial choice | Base-rate data on coalition stability; remind readers that public-broadcaster framing reflects an institutional editorial culture, not absence of one | | |
| | ⚫ E | Repetition / illusory truth + reactance | Identical phrasing across coordinated nodes | Prebunking of frame-template; show coordination evidence | | |
| > **Source:** Cialdini (2001) *Influence*; Kahneman (2011) *Thinking, Fast and Slow*; Roozenbeek & van der Linden (2019) "Fake news game confers psychological resistance against online misinformation." *Palgrave Communications.* Every row must cite a documented bias with primary literature, not folk-psychology claims; do not introduce coined or undefined labels when an established term (for example, authority bias) fits the mechanism. |
| - Public CIB / disinformation dossiers: EUvsDisinfo, EU DisinfoLab, Meta CIB removal reports, NATO StratCom COE, GLOBSEC Vulnerability Index, Reuters Institute Digital News Report, Freedom House Nations in Transit, SÄPO/MUST/FRA/EU-EEAS public statements. | ||
| - Ownership / funding data: Nordicom Media Ownership Database (gu.se), Allmänhetens Pressombudsman public registry. | ||
|
|
||
| ### Output — required structure (v2.0) |
There was a problem hiding this comment.
Section header says “Output — required structure (v2.0)”, but the surrounding Part 5 text and quality gate explicitly describe v2.1 requirements. Update this label to v2.1 (or remove the version suffix) to avoid implying the wrong contract version.
| ### Output — required structure (v2.0) | |
| ### Output — required structure (v2.1) |
| - **Sibling artifacts** — `synthesis-summary.md` (today's lead story), `voter-segmentation.md` (audiences), `intelligence-assessment.md` (Key Judgments to align frames against), `comparative-international.md` (jurisdictional cognates), `forward-indicators.md` (frame-shift triggers). | ||
|
|
||
| **Analytic moves (in order)** | ||
| 1. **Frame package inventory** — name ≥ 3 frame packages (A government / B opposition / C analytical / D coalition-inside; add **Frame E** ONLY if a foreign-amplification signal is observed in window — otherwise document its absence explicitly). |
There was a problem hiding this comment.
In the v2.1 section intro you state Frame C = “establishment / centrist-consensus” and Frame D = “public-broadcaster proceduralist”, but Analytic move #1 still describes C as “analytical” and D as “coalition-inside”. This contradicts the new naming discipline and could lead agents to use the old labels. Update the step to match the v2.1 frame taxonomy (or remove the parenthetical labels entirely).
| 1. **Frame package inventory** — name ≥ 3 frame packages (A government / B opposition / C analytical / D coalition-inside; add **Frame E** ONLY if a foreign-amplification signal is observed in window — otherwise document its absence explicitly). | |
| 1. **Frame package inventory** — name ≥ 3 frame packages (A government / B opposition / C establishment / centrist-consensus / D public-broadcaster proceduralist; add **Frame E** ONLY if a foreign-amplification signal is observed in window — otherwise document its absence explicitly). |
|
|
||
| ### Output — required structure (v2.0) | ||
|
|
||
| 1. **Frame package inventory** — ≥ 3 frames (A government / B opposition / C analytical / D coalition-inside; **Frame E foreign-overlay** ONLY when a state-affiliated or coordinated foreign-amplification signal is observed in window). Per frame: name · carrier (actor / outlet) · keyword markers · first-use date · approximate share of coverage. |
There was a problem hiding this comment.
The Output structure still describes frames as “C analytical / D coalition-inside”, but v2.1 doctrine above requires Frame C = “establishment / centrist-consensus” and Frame D = “public-broadcaster proceduralist”. Align this list item with the new frame labels to avoid reintroducing the old taxonomy.
| 1. **Frame package inventory** — ≥ 3 frames (A government / B opposition / C analytical / D coalition-inside; **Frame E foreign-overlay** ONLY when a state-affiliated or coordinated foreign-amplification signal is observed in window). Per frame: name · carrier (actor / outlet) · keyword markers · first-use date · approximate share of coverage. | |
| 1. **Frame package inventory** — ≥ 3 frames (A government / B opposition / C establishment / centrist-consensus / D public-broadcaster proceduralist; **Frame E foreign-overlay** ONLY when a state-affiliated or coordinated foreign-amplification signal is observed in window). Per frame: name · carrier (actor / outlet) · keyword markers · first-use date · approximate share of coverage. |
|
@copilot apply changes based on the comments in this thread |
Agent-Logs-Url: https://github.com/Hack23/riksdagsmonitor/sessions/73bf09d8-8cc9-4568-b97f-d07822552047 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
All 5 review suggestions applied in d1e57b7:
Also fixed a residual |
🔍 Lighthouse Performance Audit
📥 Download full Lighthouse report Budget Compliance: Performance budgets enforced via |
🔍 Lighthouse Performance Audit
📥 Download full Lighthouse report Budget Compliance: Performance budgets enforced via |
v2.0 → v2.1 (review-feedback round)
Addressed all 5 reviewer suggestions on PR #2149:
coalition-inside / proceduralist→public-broadcaster proceduralist(single canonical name throughout template, methodologies, prompts and Pass-2 audit)authority bias(Cialdini-citable) per primary-literature requirementelectoral-domain-methodology.md§Output header bumped(v2.0)→(v2.1)electoral-domain-methodology.md§Output Setup riksdagsmonitor: 14-language Swedish Parliament intelligence platform with ISMS compliance #1 Frame inventory listC analytical / D coalition-inside→C establishment / centrist-consensus / D public-broadcaster proceduralistper-artifact-methodologies.mdAnalytic move Setup riksdagsmonitor: 14-language Swedish Parliament intelligence platform with ISMS compliance #1 Frame inventory listC analytical / D coalition-inside→C establishment / centrist-consensus / D public-broadcaster proceduralistcoalition-insideas a Frame D labelVerification
grep -i "C analytical\|D coalition-inside\|coalition-inside / proceduralist\|proceduralist-illusion\|required structure (v2.0)"returns zero hits in any frame-taxonomy context