Skip to content

media-framing-analysis v2.0 → v2.1: psyops depth + no-neutral-media doctrine#2149

Merged
pethers merged 4 commits into
mainfrom
copilot/improve-media-framing-analysis
May 1, 2026
Merged

media-framing-analysis v2.0 → v2.1: psyops depth + no-neutral-media doctrine#2149
pethers merged 4 commits into
mainfrom
copilot/improve-media-framing-analysis

Conversation

Copilot AI commented May 1, 2026

Copy link
Copy Markdown
Contributor

v2.0 → v2.1 (review-feedback round)

Addressed all 5 reviewer suggestions on PR #2149:

  • Frame D Mermaid label harmonised — coalition-inside / proceduralistpublic-broadcaster proceduralist (single canonical name throughout template, methodologies, prompts and Pass-2 audit)
  • "proceduralist-illusion bias" removed — replaced with established authority bias (Cialdini-citable) per primary-literature requirement
  • electoral-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 list C analytical / D coalition-insideC establishment / centrist-consensus / D public-broadcaster proceduralist
  • per-artifact-methodologies.md Analytic move Setup riksdagsmonitor: 14-language Swedish Parliament intelligence platform with ISMS compliance #1 Frame inventory list C analytical / D coalition-insideC establishment / centrist-consensus / D public-broadcaster proceduralist
  • Pass-2 self-audit Frame C/D discipline updated to forbid coalition-inside as a Frame D label

Verification

  • grep -i "C analytical\|D coalition-inside\|coalition-inside / proceduralist\|proceduralist-illusion\|required structure (v2.0)" returns zero hits in any frame-taxonomy context
  • ✅ Full vitest suite: 79 files, 3035 tests passing

@pethers
pethers marked this pull request as ready for review May 1, 2026 10:48
Copilot AI review requested due to automatic review settings May 1, 2026 10:48
@github-actions github-actions Bot added documentation Documentation updates refactor Code refactoring size-l Large change (250-1000 lines) labels May 1, 2026
@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

🏷️ Automatic Labeling Summary

This PR has been automatically labeled based on the files changed and PR metadata.

Applied Labels: documentation,refactor,size-l

Label Categories

  • 🗳️ Content: news, dashboard, visualization, intelligence
  • 💻 Technology: html-css, javascript, workflow, security
  • 📊 Data: cia-data, riksdag-data, data-pipeline, schema
  • 🌍 I18n: i18n, translation, rtl
  • 🔒 ISMS: isms, iso-27001, nist-csf, cis-controls
  • 🏗️ Infrastructure: ci-cd, deployment, performance, monitoring
  • 🔄 Quality: testing, accessibility, documentation, refactor
  • 🤖 AI: agent, skill, agentic-workflow

For more information, see .github/labeler.yml.

@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

🔍 Lighthouse Performance Audit

Category Score Status
Performance 85/100 🟡
Accessibility 95/100 🟢
Best Practices 90/100 🟢
SEO 95/100 🟢

📥 Download full Lighthouse report

Budget Compliance: Performance budgets enforced via budget.json

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.md template 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.md across 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)"]

Copilot AI May 1, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Suggested change
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)"]

Copilot uses AI. Check for mistakes.
Comment on lines +112 to +115
| 🟣 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.

Copilot AI May 1, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Suggested change
| 🟣 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.

Copilot uses AI. Check for mistakes.
- 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)

Copilot AI May 1, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
### Output — required structure (v2.0)
### Output — required structure (v2.1)

Copilot uses AI. Check for mistakes.
- **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).

Copilot AI May 1, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Suggested change
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).

Copilot uses AI. Check for mistakes.

### 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.

Copilot AI May 1, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Suggested change
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 uses AI. Check for mistakes.
@pethers

pethers commented May 1, 2026

Copy link
Copy Markdown
Member

@copilot apply changes based on the comments in this thread

Copilot AI commented May 1, 2026

Copy link
Copy Markdown
Contributor Author

@copilot apply changes based on the comments in this thread

All 5 review suggestions applied in d1e57b7:

  1. Frame D Mermaid label harmonised → public-broadcaster proceduralist (single canonical name across template, methodologies, prompts, Pass-2 audit)
  2. proceduralist-illusion bias → established authority bias (Cialdini-citable)
  3. electoral-domain-methodology.md §Output header (v2.0)(v2.1)
  4. electoral-domain-methodology.md §Output Setup riksdagsmonitor: 14-language Swedish Parliament intelligence platform with ISMS compliance #1 frame list C analytical / D coalition-insideC establishment / centrist-consensus / D public-broadcaster proceduralist
  5. per-artifact-methodologies.md Analytic move Setup riksdagsmonitor: 14-language Swedish Parliament intelligence platform with ISMS compliance #1 frame list aligned to v2.1 taxonomy

Also fixed a residual coalition-inside / proceduralist in the Pass-2 self-audit Frame C/D discipline check. All 3035 tests pass.

Copilot finished work on behalf of pethers May 1, 2026 11:07
Copilot AI requested a review from pethers May 1, 2026 11:07
@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

🔍 Lighthouse Performance Audit

Category Score Status
Performance 85/100 🟡
Accessibility 95/100 🟢
Best Practices 90/100 🟢
SEO 95/100 🟢

📥 Download full Lighthouse report

Budget Compliance: Performance budgets enforced via budget.json

@pethers
pethers requested a review from Copilot May 1, 2026 11:25

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@pethers
pethers merged commit c14198a into main May 1, 2026
12 checks passed
@pethers
pethers deleted the copilot/improve-media-framing-analysis branch May 1, 2026 11:26
@github-actions

github-actions Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

🔍 Lighthouse Performance Audit

Category Score Status
Performance 85/100 🟡
Accessibility 95/100 🟢
Best Practices 90/100 🟢
SEO 95/100 🟢

📥 Download full Lighthouse report

Budget Compliance: Performance budgets enforced via budget.json

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Documentation updates refactor Code refactoring size-l Large change (250-1000 lines)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants