Skip to content

Latest commit

 

History

History
326 lines (299 loc) · 13 KB

File metadata and controls

326 lines (299 loc) · 13 KB
name News: Committee Reports
description Generates committee reports analysis articles and renders HTML in all 14 supported languages in a single agentic run via executive-brief cascade. Single article type per run; news-translate runs on a separate track to translate executive-brief.md into 13 languages.
strict false
imports
../prompts/00-base-contract.md
../prompts/01-bash-and-shell-safety.md
../prompts/02-mcp-access.md
../prompts/03-data-download.md
../prompts/04-analysis-pipeline.md
../prompts/05-analysis-gate.md
../prompts/06-article-generation.md
../prompts/07-commit-and-pr.md
true
schedule workflow_dispatch
daily around 4:00 on weekdays
inputs
article_date force_generation analysis_depth
description required
Article date (YYYY-MM-DD) for manual backfills. Defaults to today when omitted or scheduled.
false
description type required default
Force generation even if recent articles exist
boolean
false
false
description required default
Analysis depth for AI iterations (standard=1-2 iterations, deep=2-3 iterations, comprehensive=3+ iterations). Controls SWOT complexity, stakeholder count, and dashboard charts.
false
deep
permissions
contents issues pull-requests actions discussions security-events
read
read
read
read
read
read
timeout-minutes 60
concurrency
group cancel-in-progress
gh-aw-news-committee-reports-${{ inputs.article_date || 'today' }}
false
features
mcp-gateway
true
runtimes
node
version
26
network
allowed
node
playwright
github
defaults
docker.io
registry-1.docker.io
auth.docker.io
production.cloudflare.docker.com
riksdag-regering-ai.onrender.com
data.riksdagen.se
riksdagen.se
regeringen.se
g0v.se
api.scb.se
scb-mcp.onrender.com
api.imf.org
data.imf.org
dataservices.imf.org
datamarketplace.imf.org
api.worldbank.org
data.worldbank.org
datahelpdesk.worldbank.org
governance.worldbank.org
europarl.europa.eu
ec.europa.eu
eur-lex.europa.eu
data.europa.eu
digital-strategy.ec.europa.eu
economy-finance.ec.europa.eu
statskontoret.se
lagradet.se
bra.se
hack23.com
hack23.github.io
riksdagsmonitor.com
riksdagsmonitor.hack23.com
riksdagsmonitor.pages.dev
euparliamentmonitor.com
ciacompliancemanager.com
blacktrigram.com
raw.githubusercontent.com
mcp-servers
riksdag-regering scb world-bank
container entrypoint entrypointArgs allowed
node:26-alpine
npx
-y
@jarib/pxweb-mcp@2.0.0
--url
*
container entrypoint entrypointArgs allowed
node:26-alpine
npx
-y
worldbank-mcp@1.0.1
*
tools
startup-timeout timeout github agentic-workflows bash edit web-fetch cache-memory
180
120
toolsets
all
true
true
key retention-days
news-${{ github.workflow }}-${{ inputs.article_date || 'today' }}
14
safe-outputs
threat-detection allowed-domains max-patch-size max-patch-files create-pull-request add-comment
continue-on-error
true
riksdag-regering-ai.onrender.com
data.riksdagen.se
riksdagen.se
regeringen.se
g0v.se
api.scb.se
scb-mcp.onrender.com
api.imf.org
data.imf.org
dataservices.imf.org
datamarketplace.imf.org
api.worldbank.org
data.worldbank.org
datahelpdesk.worldbank.org
governance.worldbank.org
europarl.europa.eu
ec.europa.eu
eur-lex.europa.eu
data.europa.eu
digital-strategy.ec.europa.eu
economy-finance.ec.europa.eu
statskontoret.se
lagradet.se
bra.se
hack23.com
hack23.github.io
riksdagsmonitor.com
riksdagsmonitor.hack23.com
riksdagsmonitor.pages.dev
euparliamentmonitor.com
ciacompliancemanager.com
blacktrigram.com
raw.githubusercontent.com
10240
100
labels draft expires max if-no-changes fallback-as-issue protected-files
agentic-news
analysis-data
false
14d
1
warn
true
policy
allowed
steps
name uses with
News pre-warm & pre-flight (composite)
./.github/actions/news-prewarm
imf-sdmx-subscription-key
${{ secrets.IMF_SDMX_SUBSCRIPTION_KEY }}
engine
id model
copilot
claude-sonnet-4.6

📋 Committee Reports

Generates deep political intelligence analysis and renders the HTML article in all 14 supported languages for parliamentary committee reports in one single agentic run. The dedicated news-translate workflow runs on a separate track and translates executive-brief.md markdown into 13 language siblings (executive-brief_<lang>.md)

What this workflow does

  • Article type: committee-reports
  • Analysis subfolder: analysis/daily/$ARTICLE_DATE/committee-reports/
  • Aggregated markdown: analysis/daily/$ARTICLE_DATE/committee-reports/article.md (produced by scripts/aggregate-analysis.ts)
  • Rendered HTML: news/$ARTICLE_DATE-committee-reports-{en,sv,da,no,fi,de,fr,es,nl,ar,he,ja,ko,zh}.htmlalways all 14 languages (produced by scripts/render-articles.ts)
  • Single-run model: one run does download → analysis Pass 1 + 2 → gate → aggregate → render (14 languages) → ONE PR. There is no separate "article run" and no inter-workflow dispatch. The news-translate workflow runs on a separate track and handles only executive-brief markdown translations (executive-brief_<lang>.md); it does not back-fill article.<lang>.md.

Time budget

🟡 Plan to call safeoutputs___create_pull_request by agent minute 42 (hard deadline 45) to reserve job-level headroom for setup variance and the safe-outputs runner. See 00-base-contract.md §Session timing and 07-commit-and-pr.md §Deadline enforcement.

AI-FIRST within the 60-minute budget: Pass 2 is still mandatory. Scheduled runs should honor the configured analysis_depth=deep default instead of pre-emptively downgrading scope. Prefer scope compression over iteration skipping only if runtime risk emerges — reduce the download/manifest scope if needed, but maintain 1:1 per-document coverage and always perform a full read-back-and-improve Pass 2 on whatever artifacts exist. Reserve comprehensive for manual workflow_dispatch backfills.

Single run (produces all 23 analysis artifacts + aggregated article.md + 14 HTML files, target ~42 agent minutes in a 60-min job):

Minutes Phase Module
0–3 MCP pre-warm + pre-flight check 02 / 03
3–6 Download data + catalogue 03
6–18 Analysis Pass 1 (methodology read + per-doc analyses + all 23 artifacts: Family A 9 + B 2 + C 5 + D 7) 04
18–36 Analysis Pass 2 (read-back + improvements on all 22 text files; extended slot reclaims the 8 min freed by removing per-language Markdown translation — see TRANSLATION_GUIDE.md §News articles are translated out-of-band) 04
36–38 Analysis Gate (checks 1–11 + post-aggregate Check 12 below) 05
38–40 scripts/aggregate-analysis.tsarticle.md, then scripts/validate-article.ts (post-aggregate Check 12: banned phrases, citation density, economicProvenance ≤ 6 mo) 06
40–42 scripts/render-articles.ts --lang allall 14 HTML files 06
42–43 Stage analysis + article.md + news/*.html, commit, ONE safeoutputs___create_pull_requestHARD DEADLINE agent minute 45 07

Use the full budget for AI-FIRST iteration; do not finish early with shallow output (see .github/copilot-instructions.md §AI FIRST Quality Principle). Never open a second PR within a run — there is no second PR. If you reach agent minute 42 without staging, stop all remaining work, run the aggregator + renderer on whatever artifacts exist, commit, and call safeoutputs___create_pull_request immediately — a partial-but-delivered PR is infinitely better than losing the run to Timer A. Translation under-coverage is acceptable as a partial state: non-English HTML is rendered via the localized executive-brief cascade, and the renderer composes English article.md body with executive-brief_.md overlay.

Inputs

  • article_date — override date (defaults to today)
  • force_generation — regenerate even if today's content exists; also forces analysis re-run
  • analysis_depthstandard | deep (default) | comprehensive

Note: there is no languages input. Every run produces all 14 language HTML files. Translation depth-of-quality scales with the time budget (see the table above).

Run-mode selection

At the start of every run, the pre-flight check in 03-data-download.md detects whether analysis/daily/$ARTICLE_DATE/committee-reports/ already contains all 23 required artifacts:

  • No analysis found → run the full pipeline (download → Pass 1 → Pass 2 → gate → aggregate → render → PR).
  • Analysis found → skip download / Pass 1 / Pass 2 / gate, re-load the analysis into context, run aggregate + render, and open the PR.

Repeated runs for the same $ARTICLE_DATE always use the same analysis folder when force_generation=false.

All other rules (bash format, AWF shell safety, MCP access, download pipeline, analysis methodology & gate, aggregate + render, commit & PR policy) live in the imported modules.