Conversation
…udit findings Agent-Logs-Url: https://github.com/Hack23/riksdagsmonitor/sessions/52fab853-6c61-4c88-9f45-297eb94f834e Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
…y improvements - Add 2026-04-03 systemic quality audit (444+ generic filler, 456+ excuse-as-analysis, 210+ boilerplate instances) - Add AI Article Content Generation Protocol with 5 mandatory sections and detailed prompts - Add Visualization Integration Protocol (Chart.js/D3.js) with 7 chart types - Add Policy Domain Inference Protocol with Riksdag committee-to-domain mapping table - Add Pre-Article Analysis Integration requirement (read analysis BEFORE generating articles) - Add AI Self-Evaluation Quality Gate (replaces disabled stub in helpers.ts) - Add Empty Analysis Fallback Protocol (MCP direct retrieval when scripts report 0 documents) - Add cumulative quality tracking across audits Agent-Logs-Url: https://github.com/Hack23/riksdagsmonitor/sessions/2280838a-2191-4afd-b933-716c9e518e38 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
…tocol - Replace quality issues section with 2026-04-03 systemic audit (10 issues with scope data) - Add BANNED content patterns list (8 specific text patterns that trigger article rejection) - Add Article Quality Self-Check protocol (13 checks across 3 dimensions) - Add AI Article Content Generation section with 5 mandatory steps and prompts - Add Visualization Data Generation protocol (Chart.js/D3.js JSON data templates) - Update methodology reference from v3.0 to v4.0 Agent-Logs-Url: https://github.com/Hack23/riksdagsmonitor/sessions/2280838a-2191-4afd-b933-716c9e518e38 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Each workflow now has a mandatory Step 3c that: - Reads pre-computed analysis before generating article content - Scans for and replaces BANNED content patterns (generic filler, boilerplate, excuses) - Enforces per-document unique "Why It Matters" analysis - Requires minimum analytical depth (lede, winners/losers, takeaways, references) - Includes self-quality check against 5-dimension rubric - Adds article-type-specific intelligence requirements Agent-Logs-Url: https://github.com/Hack23/riksdagsmonitor/sessions/2280838a-2191-4afd-b933-716c9e518e38 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Hack23/riksdagsmonitor/sessions/2280838a-2191-4afd-b933-716c9e518e38 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,workflow,ci-cd,size-l,news,agentic-workflow 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
Upgrades the AI analysis methodology to v4.0 and strengthens all news-generation workflow prompts to prevent template-driven boilerplate from being published as “analysis,” based on the 2026-04-03 quality audit.
Changes:
- Updates the AI-driven analysis guide to v4.0 with mandatory AI-only article sections, visualization data protocols, policy-domain inference rules, and an AI self-evaluation quality gate.
- Expands shared prompt patterns with 2026-04-03 systemic audit findings, banned content patterns, and a mandatory self-check protocol.
- Adds “AI Content Quality Enforcement (v4.0)” steps across news workflows (committee reports, propositions, motions, interpellations, realtime monitor, week-ahead, and multi-type generator).
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| analysis/methodologies/ai-driven-analysis-guide.md | Bumps methodology to v4.0 and adds detailed protocols (AI-only prose, visualizations, classification, quality gate, empty-analysis fallback). |
| .github/workflows/SHARED_PROMPT_PATTERNS.md | Centralizes 2026-04-03 audit findings, banned patterns, self-check rubric, and copy-paste content-generation/visualization protocols. |
| .github/workflows/news-week-ahead.md | Adds v4.0 content-quality enforcement tailored for forward-looking week-ahead intelligence. |
| .github/workflows/news-realtime-monitor.md | Adds v4.0 enforcement requirements for breaking-news quality and visualization expectations. |
| .github/workflows/news-propositions.md | Adds v4.0 enforcement steps to ensure proposition articles replace all script stubs with evidence-based analysis. |
| .github/workflows/news-motions.md | Adds v4.0 enforcement steps emphasizing per-motion uniqueness, counts consistency, and committee-based domains. |
| .github/workflows/news-interpellations.md | Adds v4.0 enforcement steps emphasizing minister-response integration and replacing stub content. |
| .github/workflows/news-committee-reports.md | Adds v4.0 enforcement steps to require analysis-file reading and replacement of boilerplate across committee reports. |
| .github/workflows/news-article-generator.md | Adds v4.0 enforcement for the multi-type generator, including banned-pattern scanning and minimum depth requirements. |
| ## 📊 TOP 10 QUALITY ISSUES IN CURRENT ARTICLES (2026-04-02 + 2026-04-03) | ||
|
|
||
| > **Quality audit findings** — these issues MUST be addressed by improving all agentic workflow prompts. Updated from 2026-04-01 audit with additional 2026-04-02 findings. | ||
| > **Quality audit findings** — these issues MUST be addressed by improving all agentic workflow prompts. Updated with 2026-04-03 systemic audit results. | ||
|
|
||
| ````markdown | ||
| ### Quality Issues Detected in 2026-04-02 Articles | ||
|
|
||
| These issues were identified across all articles generated on 2026-04-02. ALL workflow `.md` files must be updated to prevent these issues. | ||
|
|
||
| | # | Issue | Severity | Affected Workflows | Root Cause | | ||
| |---|-------|----------|-------------------|------------| | ||
| | 1 | **3 of 5 articles have placeholder meta descriptions** ("Analysis of N documents covering Field:, Field:") | CRITICAL | committee-reports, propositions, interpellations | Script generates meta description from template, AI doesn't overwrite | | ||
| | 2 | **Generic title suffix "Defense in Focus" repeated** across 3 unrelated article types | CRITICAL | committee-reports, propositions, interpellations | Script generates title from category label, AI doesn't generate newsworthy title | | ||
| | 3 | **ZERO links to analysis files** in any news article | HIGH | ALL | No prompt instruction to include GitHub analysis references | | ||
| | 4 | **Truncated Swedish text in English articles** — proposition excerpts cut off mid-sentence | HIGH | propositions | Script truncates text; AI should translate/summarize instead | | ||
| | 5 | **Cross-reference map reports "0 relationships"** despite clear document clusters | HIGH | ALL analysis | AI cross-reference detection prompt too weak | | ||
| | 6 | **SWOT tables use prose** instead of structured evidence tables with dok_id columns | HIGH | committee-reports, interpellations, motions | Prompt doesn't require evidence table format | | ||
| | 7 | **Only 3 of 8 stakeholder groups** analyzed in some articles | HIGH | committee-reports, propositions | Prompt only asks for 3 perspectives | | ||
| | 8 | **Risk assessment contradictions** — RSK-04 says "LOW RISK" but cites evidence proving strength | MEDIUM | analysis risk-assessment.md | AI doesn't validate label-evidence consistency | | ||
| | 9 | **No "Forward Indicators" section** with specific trigger dates | MEDIUM | committee-reports, interpellations, motions | Prompt doesn't require dated triggers | | ||
| | 10 | **Generic boilerplate** repeated across articles ("Requires committee review...") | MEDIUM | committee-reports, propositions | Template-driven generation without per-document customization | | ||
|
|
||
| #### Workflow Fix Requirements (Updated 2026-04-02) | ||
|
|
||
| Every `news-*.md` workflow MUST be updated to: | ||
|
|
||
| 1. **AI-generate titles**: Add explicit prompt instruction — AI MUST generate a unique, newsworthy title from actual document content; NEVER use template patterns like "Category: Topic This Week: Defense in Focus" | ||
| 2. **AI-generate meta descriptions**: Add explicit prompt instruction — AI MUST write a 150-160 character description highlighting key political intelligence; NEVER use "Analysis of N documents covering Field:, Field:" | ||
| 3. **Include analysis references**: Add "📊 Analysis & Sources" section linking to `https://github.com/Hack23/riksdagsmonitor/blob/main/analysis/daily/${DATE}/${ARTICLE_TYPE}/` files | ||
| 4. **AI-translate, don't truncate**: AI MUST translate/summarize Swedish text for English articles; NEVER paste truncated Swedish text | ||
| 5. **Require cross-reference detection**: AI MUST identify ≥3 document relationships per date (policy clusters, legislative chains, opposition patterns) | ||
| 6. **Require structured SWOT tables**: Add HTML table template with `#`, `Statement`, `Evidence (dok_id)`, `Confidence`, `Impact` columns | ||
| 7. **Require 8 stakeholder groups**: Update prompt to list all 8 groups with instructions for evidence per group | ||
| 8. **Validate label-evidence consistency**: AI MUST verify risk labels match their cited evidence direction | ||
| 9. **Require dated forward indicators**: Add "What to Watch" with specific committee dates and vote schedules | ||
| 10. **Ban boilerplate**: Add anti-pattern list of rejected phrases: "Requires committee review and chamber debate", "Defense in Focus", "Analysis of N documents" | ||
| ### Systemic Quality Issues (2026-04-03 Audit) | ||
|
|
||
| > 🔴 **CRITICAL**: The 2026-04-03 audit revealed that deprecated template functions are the PRIMARY source of low-quality content in 85%+ of articles. AI agents MUST overwrite ALL template-generated content. |
There was a problem hiding this comment.
The section title says the “TOP 10 QUALITY ISSUES” cover “2026-04-02 + 2026-04-03”, but the content that follows only documents the 2026-04-03 audit. Either re-add a 2026-04-02 subsection (or summarize it) or rename this header to avoid implying both dates are covered.
| ### Step 3d: AI Content Quality Enforcement (v4.0 — MANDATORY) | ||
|
|
||
| > 🚨 **v4.0 CRITICAL**: The AI MUST read pre-computed analysis and rewrite ALL script-generated stub content. See `SHARED_PROMPT_PATTERNS.md` §"AI ARTICLE CONTENT GENERATION" and `ai-driven-analysis-guide.md` v4.0. |
There was a problem hiding this comment.
PR description calls out “Step 3c” enforcement across workflows, but this workflow introduces the enforcement section as “Step 3d”. If the numbering difference is intentional (because Step 3c is already used for title/meta here), consider aligning the label with the PR description (or adjust the PR description) to avoid confusion when following the instructions.
| **2. Scan for BANNED content patterns** — Search each generated article for these strings and REPLACE them: | ||
| - `"The political landscape remains fluid"` → Replace with specific winners/losers | ||
| - `"No chamber debate data is available"` → Replace with analysis from document text or MCP debate data | ||
| - `"Touches on {X} policy."` followed by generic domain text → Replace with unique per-document analysis | ||
| - `"Analysis of N documents covering"` → Replace with analytical lede |
There was a problem hiding this comment.
The “Scan for BANNED content patterns” list mixes literal strings with placeholder patterns (e.g., “Touches on {X} policy.”). Because generated articles won’t contain “{X}”, this can be misread as an exact-string search and miss the actual boilerplate. Consider rephrasing these bullets as pattern/prefix matches (e.g., any “Touches on … policy” boilerplate) so the enforcement step is unambiguous.
| **2. Scan for BANNED content patterns** — Search each generated article for these strings and REPLACE them: | |
| - `"The political landscape remains fluid"` → Replace with specific winners/losers | |
| - `"No chamber debate data is available"` → Replace with analysis from document text or MCP debate data | |
| - `"Touches on {X} policy."` followed by generic domain text → Replace with unique per-document analysis | |
| - `"Analysis of N documents covering"` → Replace with analytical lede | |
| **2. Scan for BANNED content patterns** — Search each generated article for these exact strings or equivalent boilerplate patterns and REPLACE them: | |
| - Exact string: `"The political landscape remains fluid"` → Replace with specific winners/losers | |
| - Exact string: `"No chamber debate data is available"` → Replace with analysis from document text or MCP debate data | |
| - Pattern/prefix match: any `"Touches on ... policy."` boilerplate followed by generic domain text → Replace with unique per-document analysis | |
| - Pattern/prefix match: any boilerplate starting with `"Analysis of "`, followed by a document count and `" documents covering"` → Replace with analytical lede |
|
@copilot apply changes based on the comments in this thread |
…p numbering, rephrase BANNED patterns as prefix matches
- SHARED_PROMPT_PATTERNS.md: Rename header from "2026-04-02 + 2026-04-03" to "2026-04-03 Systemic Audit" with note that it supersedes earlier spot-check findings
- news-interpellations.md: Add note explaining why Step 3d (not 3c) is used — Step 3b/3c already taken by Cross-Reference and Title/Meta steps
- news-article-generator.md: Rephrase BANNED patterns as exact-string vs pattern/prefix matches to avoid confusion with {X} placeholders
Agent-Logs-Url: https://github.com/Hack23/riksdagsmonitor/sessions/6416b0bb-fb0e-4104-b5e4-8a08b90c3b15
Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
All three review comments addressed in
|
🔍 Lighthouse Performance Audit
📥 Download full Lighthouse report Budget Compliance: Performance budgets enforced via |
| if [ -z "${ANALYSIS_SUBFOLDER:-}" ]; then | ||
| case "${ARTICLE_TYPE}" in | ||
| committee-reports) ANALYSIS_SUBFOLDER="committeeReports" ;; | ||
| opposition-motions) ANALYSIS_SUBFOLDER="motions" ;; | ||
| interpellation-debates) ANALYSIS_SUBFOLDER="interpellations" ;; | ||
| breaking) | ||
| : "${HHMM:?HHMM must be set for breaking articles to resolve realtime-\${HHMM} analysis folder}" | ||
| ANALYSIS_SUBFOLDER="realtime-${HHMM}" | ||
| ;; | ||
| *) ANALYSIS_SUBFOLDER="${ARTICLE_TYPE}" ;; | ||
| esac |
There was a problem hiding this comment.
The article slug → analysis subfolder mapping block is missing a case for government-propositions. In this repo the propositions workflow uses ARTICLE_TYPE="government-propositions" but reads analysis from analysis/daily/${ARTICLE_DATE}/propositions/ (see .github/workflows/news-propositions.md). As written, the default branch would set ANALYSIS_SUBFOLDER="government-propositions" and point to a non-existent analysis folder. Add an explicit mapping to propositions (and ensure any other non-identity slugs are covered).
| 1. `analysis/daily/${ARTICLE_DATE}/${ARTICLE_TYPE}/synthesis-summary.md` → Extract key findings, risk levels, confidence scores | ||
| 2. `analysis/daily/${ARTICLE_DATE}/${ARTICLE_TYPE}/swot-analysis.md` → Extract top S/W/O/T entries for Winners & Losers | ||
| 3. `analysis/daily/${ARTICLE_DATE}/${ARTICLE_TYPE}/risk-assessment.md` → Extract risk scores for Strategic Context | ||
| 4. `analysis/daily/${ARTICLE_DATE}/${ARTICLE_TYPE}/stakeholder-perspectives.md` → Extract stakeholder impacts | ||
| 5. `analysis/daily/${ARTICLE_DATE}/${ARTICLE_TYPE}/significance-scoring.md` → Extract significance scores for prioritization | ||
| 6. Per-document analysis files in `documents/` subfolder → Extract per-document "Why It Matters" | ||
|
|
There was a problem hiding this comment.
This new Step 3a snippet uses analysis/daily/${ARTICLE_DATE}/${ARTICLE_TYPE}/..., but several workflows use hyphenated ARTICLE_TYPE values that do not match the analysis folder names (e.g. committee-reports → committeeReports, government-propositions → propositions, opposition-motions → motions). As a result, following these instructions would read from the wrong/non-existent directory. Update the snippet to use ${ANALYSIS_SUBFOLDER} (or clearly define that ${ARTICLE_TYPE} here must be the analysis subfolder name) and reference the slug→folder mapping used in the workflows.
| 1. `analysis/daily/${ARTICLE_DATE}/${ARTICLE_TYPE}/synthesis-summary.md` → Extract key findings, risk levels, confidence scores | |
| 2. `analysis/daily/${ARTICLE_DATE}/${ARTICLE_TYPE}/swot-analysis.md` → Extract top S/W/O/T entries for Winners & Losers | |
| 3. `analysis/daily/${ARTICLE_DATE}/${ARTICLE_TYPE}/risk-assessment.md` → Extract risk scores for Strategic Context | |
| 4. `analysis/daily/${ARTICLE_DATE}/${ARTICLE_TYPE}/stakeholder-perspectives.md` → Extract stakeholder impacts | |
| 5. `analysis/daily/${ARTICLE_DATE}/${ARTICLE_TYPE}/significance-scoring.md` → Extract significance scores for prioritization | |
| 6. Per-document analysis files in `documents/` subfolder → Extract per-document "Why It Matters" | |
| Use `${ANALYSIS_SUBFOLDER}` for analysis paths, not the public `${ARTICLE_TYPE}` slug. The workflows map article slugs to analysis folders, for example: | |
| - `committee-reports` → `committeeReports` | |
| - `government-propositions` → `propositions` | |
| - `opposition-motions` → `motions` | |
| 1. `analysis/daily/${ARTICLE_DATE}/${ANALYSIS_SUBFOLDER}/synthesis-summary.md` → Extract key findings, risk levels, confidence scores | |
| 2. `analysis/daily/${ARTICLE_DATE}/${ANALYSIS_SUBFOLDER}/swot-analysis.md` → Extract top S/W/O/T entries for Winners & Losers | |
| 3. `analysis/daily/${ARTICLE_DATE}/${ANALYSIS_SUBFOLDER}/risk-assessment.md` → Extract risk scores for Strategic Context | |
| 4. `analysis/daily/${ARTICLE_DATE}/${ANALYSIS_SUBFOLDER}/stakeholder-perspectives.md` → Extract stakeholder impacts | |
| 5. `analysis/daily/${ARTICLE_DATE}/${ANALYSIS_SUBFOLDER}/significance-scoring.md` → Extract significance scores for prioritization | |
| 6. Per-document analysis files in `analysis/daily/${ARTICLE_DATE}/${ANALYSIS_SUBFOLDER}/documents/` subfolder → Extract per-document "Why It Matters" |
|
@copilot apply changes based on the comments in this thread |
…ing, fix Step 3a to use ANALYSIS_SUBFOLDER
1. SHARED_PROMPT_PATTERNS.md case block — Added government-propositions→propositions
mapping so the propositions workflow resolves to the correct analysis folder.
2. ai-driven-analysis-guide.md Step 3a — Replaced ${ARTICLE_TYPE} with
${ANALYSIS_SUBFOLDER} in all 6 analysis path references, added slug→folder
mapping table (committee-reports→committeeReports, government-propositions→propositions,
opposition-motions→motions, interpellation-debates→interpellations).
Agent-Logs-Url: https://github.com/Hack23/riksdagsmonitor/sessions/21218a71-4ac7-4873-9c6c-17eb9a12ba38
Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Both review comments addressed in
All changes applied in
|
🔍 Lighthouse Performance Audit
📥 Download full Lighthouse report Budget Compliance: Performance budgets enforced via |
| Embed each visualization on the target `<canvas>` element using the existing | ||
| `data-chart-config` attribute convention used by the site renderer | ||
| (see `scripts/data-transformers/content-generators/dashboard-section.ts`). | ||
| Serialize a **complete, valid Chart.js configuration object** (with `type`, `data`, `options`) | ||
| into `data-chart-config`. Do **not** use `<script type="application/json" class="chart-data">`; | ||
| the rendering implementation reads configs from `canvas[data-chart-config]`. |
There was a problem hiding this comment.
The guide claims that “the rendering implementation reads configs from canvas[data-chart-config]”, but there is no client-side initializer in the repo that scans data-chart-config (no matches for canvas[data-chart-config], getAttribute('data-chart-config'), or dataset.chartConfig). As written, this can mislead workflow authors into thinking charts will render automatically in news articles; either reference the actual initializer module/script (and ensure it’s loaded on article pages) or rephrase to make the required initialization step explicit.
| Embed each visualization on the target `<canvas>` element using the existing | |
| `data-chart-config` attribute convention used by the site renderer | |
| (see `scripts/data-transformers/content-generators/dashboard-section.ts`). | |
| Serialize a **complete, valid Chart.js configuration object** (with `type`, `data`, `options`) | |
| into `data-chart-config`. Do **not** use `<script type="application/json" class="chart-data">`; | |
| the rendering implementation reads configs from `canvas[data-chart-config]`. | |
| Embed each visualization on the target `<canvas>` element using a | |
| `data-chart-config` attribute as the serialized handoff format | |
| (for generation examples, see `scripts/data-transformers/content-generators/dashboard-section.ts`). | |
| Serialize a **complete, valid Chart.js configuration object** (with `type`, `data`, `options`) | |
| into `data-chart-config`. Do **not** use `<script type="application/json" class="chart-data">`. | |
| **Important:** charts will render only if the target page loads a client-side initializer | |
| that reads `canvas[data-chart-config]` and instantiates Chart.js from that JSON; do not | |
| assume article pages perform this step automatically unless that initializer is explicitly present. |
| } | ||
| ``` | ||
|
|
||
| Embed each chart on the target `<canvas>` element using a `data-chart-config` attribute containing the full Chart.js configuration object. Do **not** emit `<script class="chart-data">` blocks; the site renderer reads configs from `canvas[data-chart-config]`. |
There was a problem hiding this comment.
This says “the site renderer reads configs from canvas[data-chart-config]”, but there’s no implementation in the repository that scans data-chart-config attributes to instantiate Chart.js charts. Without an initializer being referenced/loaded, copying this block into workflows will produce articles with non-rendering charts; please either link to the actual initializer (and ensure it’s included on news pages) or clarify that an explicit init step is required.
| Embed each chart on the target `<canvas>` element using a `data-chart-config` attribute containing the full Chart.js configuration object. Do **not** emit `<script class="chart-data">` blocks; the site renderer reads configs from `canvas[data-chart-config]`. | |
| Embed each chart on the target `<canvas>` element using a `data-chart-config` attribute containing the full Chart.js configuration object. Do **not** emit `<script class="chart-data">` blocks. Treat `data-chart-config` as the canonical hand-off format for chart data, but only use this pattern when the target page explicitly includes a chart initializer that scans `canvas[data-chart-config]` and instantiates the corresponding Chart.js chart; otherwise the chart will not render. |
|
@copilot apply changes based on the comments in this thread |
…lient-side initializer Agent-Logs-Url: https://github.com/Hack23/riksdagsmonitor/sessions/daa349dd-05a9-4766-a9a3-03877827573b Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Both review comments addressed in
|
🔍 Lighthouse Performance Audit
📥 Download full Lighthouse report Budget Compliance: Performance budgets enforced via |
.github/workflows/news-week-ahead.md
Outdated
|
|
||
| **4. Generate government agenda preview** — List upcoming government actions (propositions expected, ministerial meetings, EU engagements) with political significance context. | ||
|
|
||
| **5. Replace generic filler** — Remove `"The political landscape remains fluid..."` and replace with specific forward indicators: "Watch: FöU committee scheduling GUTE II follow-up by April 15" with named triggers and dates. |
There was a problem hiding this comment.
Step 3c item 5 includes a hard-coded example date ("by April 15") and a specific case ("GUTE II"), which risks the agent reusing stale/incorrect dates or events in future runs. Recommend rephrasing this bullet to require forward indicators with dates extracted from get_calendar_events (or other MCP data) and to avoid fixed calendar dates in examples (use placeholders like "by " instead).
| **5. Replace generic filler** — Remove `"The political landscape remains fluid..."` and replace with specific forward indicators: "Watch: FöU committee scheduling GUTE II follow-up by April 15" with named triggers and dates. | |
| **5. Replace generic filler** — Remove `"The political landscape remains fluid..."` and replace it with specific forward indicators grounded in current MCP data. Use named triggers and dates extracted from `get_calendar_events` (or other MCP sources), and do not invent or reuse fixed example dates or case names. Preferred pattern: `"Watch: <committee/event> by <YYYY-MM-DD from calendar>"`. |
|
@copilot apply changes based on the comments in this thread |
… MCP data reference Agent-Logs-Url: https://github.com/Hack23/riksdagsmonitor/sessions/9b2f6f1f-0ba8-4d2e-9e13-70d932092210 Co-authored-by: pethers <1726836+pethers@users.noreply.github.com>
Both review comments addressed in
Review comment addressed in |
🔍 Lighthouse Performance Audit
📥 Download full Lighthouse report Budget Compliance: Performance budgets enforced via |
Uh oh!
There was an error while loading. Please reload this page.