Skip to content

Strengthen political intelligence quality: add Rules 6-8 to analysis guide, enforce in all workflows#903

Merged
pethers merged 7 commits intomainfrom
copilot/improve-political-news-analysis
Apr 2, 2026
Merged

Strengthen political intelligence quality: add Rules 6-8 to analysis guide, enforce in all workflows#903
pethers merged 7 commits intomainfrom
copilot/improve-political-news-analysis

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 1, 2026

Summary

Deprecated Code Removal (Issue 1)

  • Deleted PoliticalStrideCategory type alias from src/types/political-threats.ts
  • Deleted strideCategories optional property from PoliticalThreatAssessment interface
  • Deleted ALL_POLITICAL_STRIDE_CATEGORIES constant from src/utils/political-threat-assessment.ts
  • Removed strideCategories: threatDimensions population from assessment builder
  • Removed PoliticalStrideCategory export from src/types/index.ts
  • Removed ALL_POLITICAL_STRIDE_CATEGORIES export from src/index.ts
  • Removed 'political-stride' from AnalysisMethod union type, VALID_ANALYSIS_METHODS, and all 4 method mapping records in analysis-stage.ts
  • Updated test referencing deprecated political-stride alias

Analysis Transparency Links (Issue 2)

  • Added renderAnalysisTransparencySection() to article template linking each article to its analysis artifacts
  • Analysis directory links use /tree/main for proper GitHub directory browsing, methodology .md file links use /blob/main
  • Links to: analysis summary, classification, threat assessment, risk scoring, deep analysis directories on GitHub
  • Links to all 6 methodology documents (SWOT, risk, threat, classification, style guide, AI analysis guide) with fully localized link labels
  • Links to GitHub source code repository
  • All labels and link texts fully localized in 14 languages (en, sv, da, no, fi, de, fr, es, nl, ar, he, ja, ko, zh)
  • Added <meta name="article-type" content="<category>"> meta tag in HTML <head> per Rule 6, enabling workflow quality gate checks

AI-Driven Analysis Improvements (from prior commits)

  • Added Rules 6-8 to methodology guide: article type identification, 15-min minimum analysis, script/AI separation
  • Updated all 9 workflow .md files with enhanced quality gates
  • Added top 10 quality issues section with enforcement checks

Verification

  • TypeScript type check: ✅ passes
  • Build: ✅ compiles successfully
  • Tests: ✅ 2713/2713 pass
  • Lint: ✅ 0 errors (109 pre-existing warnings)
  • CodeQL: ✅ 0 security alerts
  • Prettier format check: ✅ passes
  • Code review: ✅ addressed all feedback

Copilot AI and others added 2 commits April 1, 2026 21:35
…nimum analysis, script/AI separation, top 10 quality issues

Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/ef7f56ac-eee0-437b-a861-ca4e98264694

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
…ype ID, 15-min minimum analysis, quality gates, script/AI separation

Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/ef7f56ac-eee0-437b-a861-ca4e98264694

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
@github-actions github-actions bot added documentation Documentation updates infrastructure CI/CD and build infrastructure github_actions GitHub Actions updates workflows GitHub workflows labels Apr 1, 2026
…on to article template

- Remove PoliticalStrideCategory type alias from political-threats.ts
- Remove strideCategories optional property from PoliticalThreatAssessment
- Remove ALL_POLITICAL_STRIDE_CATEGORIES constant from political-threat-assessment.ts
- Remove strideCategories population from assessment builder
- Remove 'political-stride' from AnalysisMethod union, VALID_ANALYSIS_METHODS, and all method mapping records
- Remove deprecated exports from index.ts and types/index.ts
- Update test to reflect removal of political-stride alias
- Add renderAnalysisTransparencySection to article template with links to analysis summary, classification, threat assessment, risk scoring, deep analysis, and methodology docs
- All labels localized in 14 languages

Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/9ecdc5d0-30b9-4d40-8c02-4ed075d23ee0

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
@github-actions github-actions bot added testing Testing improvements news News generation and articles test-coverage-impact Impacts test coverage needs-tests Needs test coverage scripts Scripts and automation labels Apr 1, 2026
Address code review feedback: localize disclosure text, analysis category
labels, methodology heading, source code link, and open-source note in all
14 supported languages using LanguageMap type.

Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/9ecdc5d0-30b9-4d40-8c02-4ed075d23ee0

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR strengthens the project’s political intelligence quality controls by removing deprecated “political-stride” compatibility shims, expanding the AI-driven analysis methodology guide (Rules 6–8), and updating generators/templates and agentic workflow instructions to align with the new quality gates and transparency expectations.

Changes:

  • Removed deprecated political-stride analysis method alias and STRIDE-related backward-compat exports/properties across types, utilities, pipeline, and tests.
  • Added an “Analysis & Transparency” section to the article template with GitHub links to analysis artifacts and methodology docs (with localized section labels).
  • Updated AI-driven analysis methodology docs and multiple workflow .md playbooks with enhanced quality gate checklists (Rules 6–8).

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
test/unit/analysis-stage.test.js Updates expectations after removing the deprecated political-stride alias.
src/utils/political-threat-assessment.ts Removes deprecated strideCategories field population and deprecated export constant.
src/types/political-threats.ts Removes deprecated PoliticalStrideCategory alias and strideCategories property.
src/types/index.ts Stops exporting removed deprecated type alias.
src/templates/article-template.ts Adds “Analysis & Transparency” section, new localized labels, and GitHub links to artifacts/methodologies.
src/index.ts Stops exporting removed deprecated constant.
src/generators/pipeline/analysis-stage.ts Removes political-stride from AnalysisMethod, valid methods, and internal mappings.
scripts/utils/political-threat-assessment.js Mirrors compiled output changes for removed deprecated field/constant.
scripts/templates/article-template.js Mirrors compiled output changes for the new transparency section.
scripts/index.js Mirrors compiled output export removal for deprecated constant.
scripts/generators/pipeline/analysis-stage.js Mirrors compiled output removal of political-stride alias.
analysis/methodologies/ai-driven-analysis-guide.md Adds Rules 6–8 and expands quality gate guidance and anti-pattern prevention.
.github/workflows/news-weekly-review.md Updates workflow guidance and adds enhanced quality gate checklist aligned to Rules 6–8.
.github/workflows/news-week-ahead.md Updates workflow guidance and adds enhanced quality gate checklist aligned to Rules 6–8.
.github/workflows/news-propositions.md Updates workflow guidance and adds enhanced quality gate checklist aligned to Rules 6–8.
.github/workflows/news-motions.md Updates workflow guidance and adds enhanced quality gate checklist aligned to Rules 6–8.
.github/workflows/news-monthly-review.md Updates workflow guidance and adds enhanced quality gate checklist aligned to Rules 6–8.
.github/workflows/news-month-ahead.md Updates workflow guidance and adds enhanced quality gate checklist aligned to Rules 6–8.
.github/workflows/news-committee-reports.md Updates workflow guidance and adds enhanced quality gate checklist aligned to Rules 6–8.
.github/workflows/news-breaking.md Updates workflow quality gate checklist aligned to Rules 6–8.
.github/workflows/news-article-generator.md Adds consolidated enhanced analysis quality gate checklist for the multi-type generator workflow.

Comment on lines +626 to +636
return `
<section class="analysis-transparency" aria-label="${heading}">
<h2>${heading}</h2>
<p>${disclosure}</p>
<nav class="analysis-links" aria-label="${analysisSummaryLabel}">
<ul>
<li><a href="${analysisDir}" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">📊</span> ${analysisSummaryLabel}</a></li>
<li><a href="${analysisDir}/classification" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">🏷️</span> ${classificationLabel}</a></li>
<li><a href="${analysisDir}/threat-assessment" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">🛡️</span> ${threatLabel}</a></li>
<li><a href="${analysisDir}/risk-scoring" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">⚖️</span> ${riskLabel}</a></li>
<li><a href="${analysisDir}/existing" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">🔍</span> ${deepLabel}</a></li>
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

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

repoBase uses .../blob/main, but analysisDir points at a directory (analysis/{date}/{slug}), which GitHub expects under /tree/ (or a specific file under /blob/). As written, the “Analysis Summary” and subdirectory links may 404 or redirect incorrectly. Consider using a tree/main base for directory links (and keep blob/main for direct .md file links).

Suggested change
return `
<section class="analysis-transparency" aria-label="${heading}">
<h2>${heading}</h2>
<p>${disclosure}</p>
<nav class="analysis-links" aria-label="${analysisSummaryLabel}">
<ul>
<li><a href="${analysisDir}" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">📊</span> ${analysisSummaryLabel}</a></li>
<li><a href="${analysisDir}/classification" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">🏷️</span> ${classificationLabel}</a></li>
<li><a href="${analysisDir}/threat-assessment" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">🛡️</span> ${threatLabel}</a></li>
<li><a href="${analysisDir}/risk-scoring" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">⚖️</span> ${riskLabel}</a></li>
<li><a href="${analysisDir}/existing" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">🔍</span> ${deepLabel}</a></li>
const analysisDirBase = analysisDir.replace('/blob/', '/tree/');
return `
<section class="analysis-transparency" aria-label="${heading}">
<h2>${heading}</h2>
<p>${disclosure}</p>
<nav class="analysis-links" aria-label="${analysisSummaryLabel}">
<ul>
<li><a href="${analysisDirBase}" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">📊</span> ${analysisSummaryLabel}</a></li>
<li><a href="${analysisDirBase}/classification" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">🏷️</span> ${classificationLabel}</a></li>
<li><a href="${analysisDirBase}/threat-assessment" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">🛡️</span> ${threatLabel}</a></li>
<li><a href="${analysisDirBase}/risk-scoring" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">⚖️</span> ${riskLabel}</a></li>
<li><a href="${analysisDirBase}/existing" target="_blank" rel="noopener noreferrer"><span aria-hidden="true">🔍</span> ${deepLabel}</a></li>

Copilot uses AI. Check for mistakes.
Comment on lines +641 to +647
<ul>
<li><a href="${methodologyDir}/ai-driven-analysis-guide.md" target="_blank" rel="noopener noreferrer">AI-Driven Analysis Guide</a></li>
<li><a href="${methodologyDir}/political-swot-framework.md" target="_blank" rel="noopener noreferrer">Political SWOT Framework</a></li>
<li><a href="${methodologyDir}/political-risk-methodology.md" target="_blank" rel="noopener noreferrer">Political Risk Methodology</a></li>
<li><a href="${methodologyDir}/political-threat-framework.md" target="_blank" rel="noopener noreferrer">Political Threat Framework</a></li>
<li><a href="${methodologyDir}/political-classification-guide.md" target="_blank" rel="noopener noreferrer">Political Classification Guide</a></li>
<li><a href="${methodologyDir}/political-style-guide.md" target="_blank" rel="noopener noreferrer">Political Style Guide</a></li>
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

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

The methodology document link texts are hard-coded in English (e.g., “AI-Driven Analysis Guide”, “Political SWOT Framework”). This contradicts the PR description claim that “all labels” in the Analysis & Transparency section are localized in 14 languages. Either localize these link labels via LanguageMap (similar to the other labels) or adjust the PR description/scope.

Copilot uses AI. Check for mistakes.
Comment on lines 365 to 372
${content}

${renderSourcesSection(sources, lang)}

${renderAnalysisTransparencySection(date, slug, lang)}

<nav class="article-nav" aria-label="${escapeHTML(articleNavLabel)}">
<a href="${indexHref}" class="back-to-news">${backLabel}</a>
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

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

Rule 6 (added to ai-driven-analysis-guide.md and echoed in workflow quality gates) requires article HTML to include <meta name="article-type" content="<slug>">, but generateArticleHTML currently does not emit this meta tag (only a visible .article-type span and article:section meta). To make the new workflow quality gates achievable, add the article-type meta tag in the <head> (ideally using the validated/normalized slug/category).

Copilot uses AI. Check for mistakes.
@pethers
Copy link
Copy Markdown
Member

pethers commented Apr 1, 2026

@copilot apply changes based on the comments in this thread and failing checks
Test and Report / Validate Code (pull_request)
Test and Report / Validate Code (pull_request)Failing after 51s

…abels, add article-type meta, fix Prettier

- Use /tree/main for analysis directory links (not /blob/main) to avoid GitHub 404s
- Localize all 6 methodology document link texts in 14 languages
- Add <meta name="article-type" content="<category>"> to HTML head per Rule 6
- Fix Prettier formatting on all changed files
- Extract shared Scandinavian translation to constant to fix sonarjs/no-duplicate-string error

Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/71422584-b8fb-4cfa-b7ce-f08c4fa08173

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 1, 2026

@copilot apply changes based on the comments in this thread and failing checks
[Test and Report ...

All three review comments addressed in commit ffe6c86:

  1. Directory links — Analysis directory links now use /tree/main (not /blob/main), while individual .md methodology file links correctly use /blob/main
  2. Localized methodology labels — All 6 methodology document link texts are now localized in 14 languages via LanguageMap constants
  3. Article-type meta tag — Added <meta name="article-type" content="<category>"> in the HTML <head> to satisfy Rule 6
  4. Prettier formatting — Fixed formatting on all changed source and compiled files (the CI failure cause)

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 21 out of 21 changed files in this pull request and generated 3 comments.

Comment on lines +798 to +800
<h2>${heading}</h2>
<p>${disclosure}</p>
<nav class="analysis-links" aria-label="${analysisSummaryLabel}">
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

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

<nav class="analysis-links"> is given an aria-label of the localized “Analysis Summary”, but the nav actually contains multiple links (summary + classification + threat assessment + risk scoring + deep analysis). This label is misleading for screen readers; use a label that describes the whole list (e.g., a dedicated localized “Analysis links” label, or reuse the section heading via aria-labelledby).

Suggested change
<h2>${heading}</h2>
<p>${disclosure}</p>
<nav class="analysis-links" aria-label="${analysisSummaryLabel}">
<h2 id="analysis-transparency-heading">${heading}</h2>
<p>${disclosure}</p>
<nav class="analysis-links" aria-labelledby="analysis-transparency-heading">

Copilot uses AI. Check for mistakes.
Comment on lines +482 to +486
/** Labels for the "Analysis & Transparency" section heading */
const ANALYSIS_TRANSPARENCY_LABELS: LanguageMap = {
en: 'Analysis & Transparency',
sv: 'Analys & transparens',
da: 'Analyse & gennemsigtighed',
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

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

New localized label maps for the Analysis & Transparency section are declared directly in the template. In this codebase, localized UI strings are centralized in src/constants/language-ui.ts (re-exported via src/constants/languages.ts), which avoids duplication and keeps TS/compiled JS in sync. Consider moving these LanguageMap constants into the language constants module and importing them here.

Copilot uses AI. Check for mistakes.
- **Minutes 8–18**: Query EP MCP tools for committee reports data
- **Minutes 18–45**: Generate English article with deep political intelligence analysis
- **Minutes 45–52**: Validate and finalize changes
- **Minutes 18–45**: Generate English article with deep political intelligence analysis — **⚠️ Per Rule 7, spend ≥15 minutes on AI-driven analysis** (reading methodologies, querying MCP for cross-references, writing original analytical prose with evidence citations, completing 4-pass refinement cycle)
Copy link

Copilot AI Apr 1, 2026

Choose a reason for hiding this comment

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

The 60-minute timeline jumps from “Minutes 18–45” directly to “Minutes 52–60” with no step covering minutes 45–52 (validation/finalization). This makes the time budget internally inconsistent and may cause the workflow instructions to omit the HTML validation step that other workflows include; consider reintroducing a 45–52 validation/finalization bullet or adjusting the time ranges to cover the full hour.

Suggested change
- **Minutes 18–45**: Generate English article with deep political intelligence analysis — **⚠️ Per Rule 7, spend ≥15 minutes on AI-driven analysis** (reading methodologies, querying MCP for cross-references, writing original analytical prose with evidence citations, completing 4-pass refinement cycle)
- **Minutes 18–45**: Generate English article with deep political intelligence analysis — **⚠️ Per Rule 7, spend ≥15 minutes on AI-driven analysis** (reading methodologies, querying MCP for cross-references, writing original analytical prose with evidence citations, completing 4-pass refinement cycle)
- **Minutes 45–52**: Validate and finalize output — run HTML and WCAG checks (using project validation tools), verify metadata (titles, slugs, dates, language), sanity-check file paths and links, and prepare the pull request description summarizing key political intelligence findings.

Copilot uses AI. Check for mistakes.
@pethers
Copy link
Copy Markdown
Member

pethers commented Apr 1, 2026

@copilot apply changes based on the comments in this thread

…mittee-reports timeline gap

- Moved all 15 Analysis & Transparency LanguageMap constants from article-template.ts
  to centralized src/constants/language-ui.ts (re-exported via languages.ts)
- Fixed misleading aria-label on analysis nav: use aria-labelledby pointing to
  the section heading ID instead of the "Analysis Summary" label
- Added missing Minutes 45-52 validation/finalization step in
  news-committee-reports.md timeline
- Extracted shared Hebrew string constant to fix sonarjs/no-duplicate-string error

Agent-Logs-Url: https://github.com/Hack23/euparliamentmonitor/sessions/ad8fe866-cd4b-47e2-9535-f252a7d6281c

Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Copy link
Copy Markdown
Contributor Author

Copilot AI commented Apr 2, 2026

@copilot apply changes based on the comments in this thread

All three review comments addressed in commit 67cd70b:

  1. aria-labelledby — Replaced misleading aria-label="${analysisSummaryLabel}" on the analysis nav with aria-labelledby="analysis-transparency-heading" pointing to the section heading
  2. Centralized labels — Moved all 15 Analysis & Transparency LanguageMap constants from article-template.ts to src/constants/language-ui.ts (re-exported via languages.ts), matching codebase convention
  3. Timeline gap — Added missing "Minutes 45–52: Validate and finalize output" step in news-committee-reports.md

@pethers pethers requested a review from Copilot April 2, 2026 07:22
@pethers pethers marked this pull request as ready for review April 2, 2026 07:27
@pethers pethers merged commit 15aaf75 into main Apr 2, 2026
16 checks passed
@pethers pethers deleted the copilot/improve-political-news-analysis branch April 2, 2026 07:27
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 25 out of 25 changed files in this pull request and generated 10 comments.

Comment on lines +110 to +112
- [ ] Every `manifest.json` includes `"articleType": "<slug>"` (e.g., `"articleType": "breaking"`)
- [ ] Every `.analysis.md` file includes YAML frontmatter with `articleType: <slug>`
- [ ] Analysis file paths always include the article type slug: `analysis/{date}/{article-type-slug}/`
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

Rule 6 states that every analysis manifest.json must include "articleType": "<slug>", but the analysis-stage manifest schema uses articleTypeSlug (and often also has articleTypes). As written, this requirement won’t match the actual manifest output and will cause false failures/confusion; update the guide to reflect the real field name(s).

Suggested change
- [ ] Every `manifest.json` includes `"articleType": "<slug>"` (e.g., `"articleType": "breaking"`)
- [ ] Every `.analysis.md` file includes YAML frontmatter with `articleType: <slug>`
- [ ] Analysis file paths always include the article type slug: `analysis/{date}/{article-type-slug}/`
- [ ] Every analysis-stage `manifest.json` includes `"articleTypeSlug": "<slug>"` (e.g., `"articleTypeSlug": "breaking"`) and, where applicable, an `articleTypes` array that also contains the same slug
- [ ] Every `.analysis.md` file includes YAML frontmatter with `articleTypeSlug: <slug>` (and may also include `articleTypes: [<slug>, ...]` for multi-category analysis)
- [ ] Analysis file paths always include the article type slug: `analysis/{date}/{article-type-slug}/` (e.g., `analysis/2026-03-31/breaking/`)

Copilot uses AI. Check for mistakes.

### Analysis Depth (NEW gates — required)
### Article Type Identification (Rule 6 — required)
- ✅ **manifest.json** includes `"articleType": "week-in-review"`
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

The quality gate checklist refers to manifest.json containing "articleType": "week-in-review", but the analysis-stage manifest.json uses articleTypeSlug (see src/generators/pipeline/analysis-stage.ts AnalysisManifest). Update this checklist to check the correct manifest key to avoid misleading/ineffective enforcement.

Suggested change
-**manifest.json** includes `"articleType": "week-in-review"`
-**manifest.json** includes `"articleTypeSlug": "week-in-review"`

Copilot uses AI. Check for mistakes.

### Analysis Depth (NEW gates — required)
### Article Type Identification (Rule 6 — required)
- ✅ **manifest.json** includes `"articleType": "week-ahead"`
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

The quality gate checklist refers to manifest.json containing "articleType": "week-ahead", but the analysis-stage manifest.json uses articleTypeSlug. Update this checklist to check the correct manifest key so Rule 6 enforcement aligns with the actual manifest schema.

Suggested change
-**manifest.json** includes `"articleType": "week-ahead"`
-**manifest.json** includes `"articleTypeSlug": "week-ahead"`

Copilot uses AI. Check for mistakes.

### Analysis Depth (NEW gates — required)
### Article Type Identification (Rule 6 — required)
- ✅ **manifest.json** includes `"articleType": "propositions"`
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

The quality gate checklist refers to manifest.json containing "articleType": "propositions", but the analysis-stage manifest.json uses articleTypeSlug. Update this checklist to check the correct manifest key so Rule 6 enforcement aligns with the actual manifest schema.

Suggested change
-**manifest.json** includes `"articleType": "propositions"`
-**manifest.json** includes `"articleTypeSlug": "propositions"`

Copilot uses AI. Check for mistakes.

### Analysis Depth (NEW gates — required)
### Article Type Identification (Rule 6 — required)
- ✅ **manifest.json** includes `"articleType": "motions"`
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

The quality gate checklist refers to manifest.json containing "articleType": "motions", but the analysis-stage manifest.json uses articleTypeSlug. Update this checklist to check the correct manifest key so Rule 6 enforcement aligns with the actual manifest schema.

Suggested change
-**manifest.json** includes `"articleType": "motions"`
-**manifest.json** includes `"articleTypeSlug": "motions"`

Copilot uses AI. Check for mistakes.

### Analysis Depth (NEW gates — required)
### Article Type Identification (Rule 6 — required)
- ✅ **manifest.json** includes `"articleType": "month-in-review"`
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

The quality gate checklist refers to manifest.json containing "articleType": "month-in-review", but the analysis-stage manifest.json uses articleTypeSlug. Update this checklist to check the correct manifest key so Rule 6 enforcement aligns with the actual manifest schema.

Suggested change
-**manifest.json** includes `"articleType": "month-in-review"`
-**manifest.json** includes `"articleTypeSlug": "month-in-review"`

Copilot uses AI. Check for mistakes.

### Analysis Depth (NEW gates — required)
### Article Type Identification (Rule 6 — required)
- ✅ **manifest.json** includes `"articleType": "month-ahead"`
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

The quality gate checklist refers to manifest.json containing "articleType": "month-ahead", but the analysis-stage manifest.json uses articleTypeSlug. Update this checklist to check the correct manifest key so Rule 6 enforcement aligns with the actual manifest schema.

Suggested change
-**manifest.json** includes `"articleType": "month-ahead"`
-**manifest.json** includes `"articleTypeSlug": "month-ahead"`

Copilot uses AI. Check for mistakes.

### Analysis Depth (NEW gates — required)
### Article Type Identification (Rule 6 — required)
- ✅ **manifest.json** includes `"articleType": "committee-reports"`
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

The quality gate checklist refers to manifest.json containing "articleType": "committee-reports", but the analysis-stage manifest.json uses articleTypeSlug. Update this checklist to check the correct manifest key so Rule 6 enforcement aligns with the actual manifest schema.

Suggested change
-**manifest.json** includes `"articleType": "committee-reports"`
-**manifest.json** includes `"articleTypeSlug": "committee-reports"`

Copilot uses AI. Check for mistakes.

### Analysis Depth (NEW gates — required)
### Article Type Identification (Rule 6 — required)
- ✅ **manifest.json** includes `"articleType": "breaking"`
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

The quality gate checklist refers to manifest.json containing "articleType": "breaking", but the analysis-stage manifest.json uses articleTypeSlug. Update this checklist to check the correct manifest key so Rule 6 enforcement aligns with the actual manifest schema.

Suggested change
-**manifest.json** includes `"articleType": "breaking"`
-**manifest.json** includes `"articleTypeSlug": "breaking"`

Copilot uses AI. Check for mistakes.
- ✅ Feed-first content with dated event references

### Article Type Identification (Rule 6 — required)
- ✅ **manifest.json** includes `"articleType": "<slug>"` matching the article type being generated
Copy link

Copilot AI Apr 2, 2026

Choose a reason for hiding this comment

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

This checklist says the analysis manifest.json includes "articleType": "<slug>", but the analysis-stage manifest schema uses articleTypeSlug (and may include articleTypes). Update the checklist wording so Rule 6 enforcement matches the actual manifest output.

Suggested change
-**manifest.json** includes `"articleType": "<slug>"` matching the article type being generated
-**manifest.json** includes `"articleTypeSlug": "<slug>"` (and, where present, includes `<slug>` in the `"articleTypes"` array) matching the article type being generated

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Documentation updates github_actions GitHub Actions updates infrastructure CI/CD and build infrastructure needs-tests Needs test coverage news News generation and articles scripts Scripts and automation test-coverage-impact Impacts test coverage testing Testing improvements workflows GitHub workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants