{"filename": "quality_2026_W20.md", "content_md": "# Quality retrospective — week 2026-W20\n\n**Generated:** 2026-05-11T09:00:32.458729+00:00\n**Corpus size:** 6 briefs\n**Failure-log entries (7-day window):** 0\n\n## Cluster summary\n\n### Blockers (must be 0 in production)\n- (none — corpus is publishable)\n\n### Warnings (informational; cluster top suggests next prompt edit)\n- **anchor_number_footnote_url**: 6 occurrences\n  - example: `[SD_20260423_2019_Spain.html] 6 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>Scenario A: Managed De-escalation (35%)</strong> | no fn-`\n  - example: `[SD_20260424_0635_COSCO_Ports.html] 6 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>Scenario A: Managed Concession Equilibrium (55%)</strong>`\n- **def02_primary_contribution_present**: 2 occurrences\n  - example: `[SD_20260423_2019_Spain.html] DEF02 defensibility gap: no primary-contribution marker — neither Shadow Dynamics Intelligence Monitor reference nor Pattern Recognition / R`\n  - example: `[SD_20260424_0635_COSCO_Ports.html] DEF02 defensibility gap: no primary-contribution marker — neither Shadow Dynamics Intelligence Monitor reference nor Pattern Recognition / R`\n- **numerical_citation_contract**: 2 occurrences\n  - example: `[SD_20260424_0635_COSCO_Ports.html] 8+ numerical claims without nearby citation; sample: \"…port labor) overrode security cabinet objections; 24.9% threshold avoids mandatory na`\n  - example: `[SD_20260508_1217_Critical_Minerals.html] 12+ numerical claims without nearby citation; sample: \"…ly when defence spending is accelerating toward 3.5% GDP, with the critical 2026-11-`\n- **def03_canonical_url_floor**: 1 occurrences\n  - example: `[SD_20260424_0635_COSCO_Ports.html] DEF03 defensibility gap: only 3 canonical primary-source URL(s) in <section class=\"sources\"> (target ≥5; aggregator/self URLs excluded). Str`\n- **sources_density_minimum**: 1 occurrences\n  - example: `[SD_20260427_0656_Spain_Blackout.html] editorial source density below floor: 9 distinct URL(s) in footnotes+sources block (target ≥10, baseline 12-13 per EL-04 D5.5) — strengthen `\n\n## Per-brief breakdown\n\n- warn `SD_20260423_2019_Spain.html` blockers=0 warnings=2\n   - warn `anchor_number_footnote_url`: 6 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>Scenario A: Managed De-escalation (35%)</strong> | no fn-ref: <strong>Scenario B: Structural Deterioration (45%)</str\n   - warn `def02_primary_contribution_present`: DEF02 defensibility gap: no primary-contribution marker — neither Shadow Dynamics Intelligence Monitor reference nor Pattern Recognition / Reconocimiento de Patrón section detected. Add internal-corpu\n- warn `SD_20260424_0635_COSCO_Ports.html` blockers=0 warnings=4\n   - warn `numerical_citation_contract`: 8+ numerical claims without nearby citation; sample: \"…port labor) overrode security cabinet objections; 24.9% threshold avoids mandatory national security revi…\" | \"…s Act (AWG) §55 10 7 Rhetoric of \n   - warn `anchor_number_footnote_url`: 6 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>Scenario A: Managed Concession Equilibrium (55%)</strong> | no fn-ref: <strong>Scenario B: Forced Partial Divestment \n   - warn `def02_primary_contribution_present`: DEF02 defensibility gap: no primary-contribution marker — neither Shadow Dynamics Intelligence Monitor reference nor Pattern Recognition / Reconocimiento de Patrón section detected. Add internal-corpu\n   - warn `def03_canonical_url_floor`: DEF03 defensibility gap: only 3 canonical primary-source URL(s) in <section class=\"sources\"> (target ≥5; aggregator/self URLs excluded). Strengthen with primary-source links (BOE, ENTSO-E, SEC, IMF, E\n- warn `SD_20260425_1431_AI_Economy.html` blockers=0 warnings=1\n   - warn `anchor_number_footnote_url`: 6 anchor-number(s) without URL-bearing footnote (D01); samples: fn-17 lacks URL/source-org token: <strong>Scenario A: Managed Dysfunction (45%)</strong> | fn-17 lacks URL/source-org token: <strong>Sce\n- warn `SD_20260427_0656_Spain_Blackout.html` blockers=0 warnings=2\n   - warn `sources_density_minimum`: editorial source density below floor: 9 distinct URL(s) in footnotes+sources block (target ≥10, baseline 12-13 per EL-04 D5.5) — strengthen sourcing in next revision\n   - warn `anchor_number_footnote_url`: 6 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>Scenario A — Partial Reform Consolidates (50%)</strong> | no fn-ref: <strong>Scenario B — Reform Stalls in Coalition \n- warn `SD_20260501_1416_European_Defense.html` blockers=0 warnings=1\n   - warn `anchor_number_footnote_url`: 27 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>559.000 millones de dólares en 2025</strong> | no fn-ref: <strong>un incremento del +14%</strong> | no fn-ref: <stro\n- warn `SD_20260508_1217_Critical_Minerals.html` blockers=0 warnings=2\n   - warn `numerical_citation_contract`: 12+ numerical claims without nearby citation; sample: \"…ly when defence spending is accelerating toward 3.5% GDP, with the critical 2026-11-10 Notice 61 expir…\" | \"…ly when defence spending is acceler\n   - warn `anchor_number_footnote_url`: 44 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>€400–500 billion in additional annual procurement</strong> | no fn-ref: <strong>We assess 45% probability that MOFCO\n\n## Recommendation\n- No blockers — corpus is publishable. Most frequent warning is **anchor_number_footnote_url** (6× this week). If this represents an editorial-standard gap (e.g. `numerical_citation_contract`), the next prompt iteration should add a rule pushing the writer to emit hyperlinked citations adjacent to figures.\n\n## 🚨 Persistent near-miss (C1 — multi-week)\n\n- (none — no warning has fired with margin ≤1 for ≥2 consecutive weeks)\n\n## Near-miss thresholds (C1 — candidate for tuning)\n\nIntermittent = warning fires in 2 to <50% of corpus briefs. Smallest-margin observation reported per warning (closest to threshold).\n\n- **L1 numerical citation contract**: fires 2× (intermittent window 2–2); smallest observed = 8 uncited claims, threshold = 8 uncited claims (above); margin = 0 uncited claims (brief `SD_20260424_0635_COSCO_Ports.html`)\n\n_Operator: if smallest margin is ≤1 unit AND warning has fired this close for 2+ consecutive weeks, consider tuning the threshold. Don't tune from a single week's data._\n\n## WCV drift checklist (C2 — manual scoring)\n\nEight criteria distilled from `docs/WORLD_CLASS_VISION.md` §1+§3+§4. Operator scores each as PASS / PARTIAL / FAIL after reviewing the week's published brief(s). Runner pass ≠ world-class — this is the qualitative layer.\n\n1. **Cero fabricaciones llegando a publicación**\n   - _§4.1 — runner Layer 5 + chat-Claude pre-publish audit deben sumar 0 hallazgos materiales_\n   - [ ] PASS  [x] PARTIAL  [ ] FAIL  ·  Notes: L5=0 hits (canonical fabrication gate clean); chat-Claude pre-publish audit not run discretely for Brief 6 (QA-INCONTESTABLE cluster was post-publish); L4 v1.9-final has 10 residual FAILs pending review. Process design enumerates two checks summing to zero — L5 met, second leg not exercised.\n\n2. **Cada claim trazable a fuente con URL**\n   - _§1 — `numerical_citation_contract` + `sources_density_minimum` aproximan; revisar cualitativamente_\n   - [ ] PASS  [ ] PARTIAL  [x] FAIL  ·  Notes: 44 anchor-numbers without URL footnote + 12+ numerical claims without nearby citation in Brief 6 alone (~7× W19 baseline of 6/brief); post-promote citation pass (`b9e4f8c`) did not close gap; runner WARNING-not-blocker so didn't gate publish. WCV qualitative layer FAIL on runner-WARNING-but-not-blocker is structurally correct. Tracker candidate `WCV-DRIFT-CLAIM-TRACEABILITY` if repeats W21.\n\n3. **Pattern Recognition §12 cross-refs reales**\n   - _§4.2 — `pattern_citations` valida pattern_id válido + brief filename; aquí confirmamos que el cross-ref es semánticamente correcto_\n   - [x] PASS  [ ] PARTIAL  [ ] FAIL  ·  Notes: §VI references `SD_20260424_0635_COSCO_Ports` + `SD_20260427_0656_Spain_Blackout`; chokepoint pattern semantically coherent across infrastructure/grid/REE instances; runner `pattern_citations` mechanical layer validated.\n\n4. **Cadencia 1 brief/semana mantenida** (auto-hint: last brief = 2026-05-08, 3d ago — within 7d cadence)\n   - _§3 Fase 0 — verificar fecha del último publish ≤7d; si no, marcar FAIL y abrir tracker_\n   - [x] PASS  [ ] PARTIAL  [ ] FAIL  ·  Notes: Last brief 2026-05-08, today 2026-05-11, gap 3d within 7d cadence rule.\n\n5. **Predicciones formales con confidence + falsifiable_by_date**\n   - _§3 Fase 2 — `data/predictions.yaml` debe tener entrada/s nuevas si el brief de la semana hizo predicciones_\n   - [x] PASS  [ ] PARTIAL  [ ] FAIL  ·  Notes: 3 predictions added (PRED-20260508-001 45%/2026-11-10, -002 30%/2026-10-31, -003 70%/2026-10-31), all schema-compliant with confidence + falsifiable_by_date.\n\n6. **Articulación de consecuencias para ICP institucional**\n   - _§3 Fase 1 — el brief debe ser forwardable por un Family Office CIO/PM (memoria STRATEGY ICP)_\n   - [ ] PASS  [x] PARTIAL  [ ] FAIL  ·  Notes: Strong analytical content (named companies MBDA/Naval Group/Airbus/Rheinmetall/Leonardo + Tier-1/2/3 substitution framework + Notice 61 prediction) but consequence-articulation for FO CIO/PM is partial — brief surfaces structural dependencies without translating to portfolio-actionable consequence language (timing, position-sizing, equity impact framing). Tracker candidate `WCV-DRIFT-ICP-CONSEQUENCES` if repeats W21.\n\n7. **Voz acumulativa, no traducción conceptual**\n   - _§4.3 — el brief debe construir sobre briefs previos sin re-explicar primitivas; check qualitativo_\n   - [ ] PASS  [x] PARTIAL  [ ] FAIL  ·  Notes: Cumulative voice operates broadly (primitives carried not re-defined; cross-refs to Briefs 2+4 concrete; §VI chokepoint framework advanced not just named — \"4th instance\" + forum-vs-elite-framing observation + non-kinetic-activation thesis). BUT §VI Pattern Recognition instance #2 (\"API/data dependencies — Digital chokepoint — COSCO supply-chain analysis\") lacks anchor in actual COSCO brief content (verified: COSCO chokepoint is physical+political — \"capturing supply chains\" via container/port leverage — NOT digital/API). Forward-only fix for Brief 7+: §Pattern Recognition tables must anchor each instance to a brief that actually documents that mechanism.\n\n8. **Citas externas predominan sobre SD-estimate**\n   - _§S01 baseline 22%, target <25% — `inference_citation_ratio` valida; aquí confirmamos calidad de las externas_\n   - [ ] PASS  [x] PARTIAL  [ ] FAIL  ·  Notes: Externas predominate quantitatively (63.5% vs 36.5% inference by bracket-label count: 40 vs 23 of 63); runner `inference_citation_ratio` (footnote-anchored, narrower denominator) passed at promote. BUT qualitative: IEA single-source concentration 28.6% (18/63 labels) + zero USGS bracket labels despite USGS being canonical primary source for minerals + thin European institutional anchoring (no EU Commission, no NATO direct, EPRS only 4). Forward-only candidate for Brief 7+: commodity-specific briefs anchor in commodity-primary sources; cap single-source share ~20%.\n\n_Operator: failing PASS on any criterion for 2+ consecutive weeks → open a tracker (e.g. `WCV-DRIFT-<criterion>`). PARTIAL one week is noise; PARTIAL repeated is signal._\n\n## How to apply\n\n1. Review the recommendation above.\n2. If a prompt edit is justified, choose ONE rule (don't stack).\n3. Apply via `python3 scripts/quality-relaunch-loop.py --topic <real-topic> --budget-usd 5 --execute --auto-apply` (burns ~$1.50–3 per Forecaster run; verifies regression).\n4. Or, hand-edit the prompt in n8n UI and re-run the test battery: `python3 scripts/test-system.py`.\n5. Score the WCV drift checklist (C2) above and commit the filled report — operator review of qualitative dimensions the runner cannot measure.\n\n\n## facts.yaml currency check (D-FACTS-RECURRING-MAINTENANCE-01)\n\n9 entries with year tokens in their ID — likely annual-refresh (ECB rate, GDP, capex, debt ceiling, treasury holdings). Operator: scan ~5 min, refresh `fact:` text + `sources` for any stale figures since last review.\n\nEntries to review:\n- `ai_capex_hyperscaler_2025`\n- `almaraz_extension_petition_2030`\n- `china_us_treasury_holdings_2024`\n- `ecb_deposit_facility_rate_2026`\n- `eu_27_combined_gdp_2024`\n- `eu_russia_gas_dependency_2021_vs_2024`\n- `iberian_blackout_anniversary_data_2026`\n- `us_china_trade_volume_2024`\n- `us_debt_ceiling_2025_2026`\n", "size_bytes": 12535}