{"filename": "quality_2026_W23.md", "content_md": "# Quality retrospective — week 2026-W23\n\n**Generated:** 2026-06-01T09:00:32.012972+00:00\n**Corpus size:** 20 briefs\n**Failure-log entries (7-day window):** 8\n\n## Cluster summary\n\n### Blockers (must be 0 in production)\n- **inference_citation_ratio**: 1 occurrences\n\n### Warnings (informational; cluster top suggests next prompt edit)\n- **canonical_brief_structure**: 28 occurrences\n  - example: `[SD_20260423_2019_Spain.html] canonical-structure diff vs Brief 7 spec: 16 MUST-FIX (sample: MISSING brief-tab section: 'DOUBLE TRACK' | MISSING brief-tab section: 'FORMA`\n  - example: `[SD_20260424_0635_COSCO_Ports.html] canonical-structure diff vs Brief 7 spec: 16 MUST-FIX (sample: MISSING brief-tab section: 'DOUBLE TRACK' | MISSING brief-tab section: 'FORMA`\n- **canonical_brief_must_fix**: 25 occurrences\n  - example: `[SD_20260423_2019_Spain.html] 16 canonical MUST-FIX item(s) (sample: MISSING brief-tab section: 'DOUBLE TRACK' | MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VER`\n  - example: `[SD_20260424_0635_COSCO_Ports.html] 16 canonical MUST-FIX item(s) (sample: MISSING brief-tab section: 'DOUBLE TRACK' | MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VER`\n- **anchor_number_footnote_url**: 20 occurrences\n  - example: `[SD_20260530_1544_Payments_Infra.html] 19 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>$240B</strong> | no fn-ref: <strong>$94B</strong> | no f`\n  - example: `[SD_20260530_1614_Payments_Infra.html] 29 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>$160B+</strong> | no fn-ref: <strong>160.000 millones de`\n- **def01_formal_predictions_present**: 20 occurrences\n  - example: `[SD_20260530_1544_Payments_Infra.html] DEF01 ledger gap: HTML contains formal-prediction triad (probability+verification+falsifiable date) but predictions.yaml has 0 entries with `\n  - example: `[SD_20260530_1614_Payments_Infra.html] DEF01 ledger gap: HTML contains formal-prediction triad (probability+verification+falsifiable date) but predictions.yaml has 0 entries with `\n- **prediction_calibration**: 18 occurrences\n  - example: `[SD_20260530_1907_Stablecoins.html] prediction calibration (EDITORIAL-PREDICTION-CALIBRATION-SELFDECL-01): PRED 1: OVER-CONFIDENT (stated 68 vs data-derived q~=45); PRED 3: OVE`\n  - example: `[SD_20260530_1918_Stablecoins.html] prediction calibration (EDITORIAL-PREDICTION-CALIBRATION-SELFDECL-01): PRED1: OVER-CONFIDENT (stated 72 vs data-derived q~=16); PRED2: OVER-`\n- **toc_anchor_integrity**: 17 occurrences\n  - example: `[SD_20260530_1907_Stablecoins.html] TOC ↔ body section-anchor mismatch: 10 orphan section(s) — body id=\"X\" with no TOC entry: ['en-sec-acronyms', 'en-sec-divergence', 'en-sec-p`\n  - example: `[SD_20260530_1918_Stablecoins.html] TOC ↔ body section-anchor mismatch: 4 dangling TOC link(s) — `<a href=\"#X\">` with no matching body id=\"X\": ['en-sec-3bis', 'en-sec-othertrac`\n- **acronym_first_use_expansion**: 16 occurrences\n  - example: `[SD_20260516_2151_DORA.html] ACRONYM first-use expansion gap: 9 acronym(s) appear in body before ACRONYMS table without long-form expansion in ±200 chars. Samples: DORA `\n  - example: `[SD_20260530_1544_Payments_Infra.html] ACRONYM first-use expansion gap: 19 acronym(s) appear in body before ACRONYMS table without long-form expansion in ±200 chars. Samples: CBDC`\n- **html_structural_integrity**: 16 occurrences\n  - example: `[SD_20260530_1918_Stablecoins.html] 1 structural integrity issue(s): toc-sync-broken: missing id= for ['en-sec-3bis', 'en-sec-othertrack', 'es-sec-3bis'] (+1 more)`\n  - example: `[SD_20260530_2255_Stablecoins.html] 1 structural integrity issue(s): toc-sync-broken: missing id= for ['en-sec-predictions', 'es-sec-predictions']`\n- **def03_canonical_url_floor**: 12 occurrences\n  - example: `[SD_20260530_1614_Payments_Infra.html] DEF03 defensibility gap: only 0 canonical primary-source URL(s) in <section class=\"sources\"> (target ≥5; aggregator/self URLs excluded). Str`\n  - example: `[SD_20260530_2255_Stablecoins.html] DEF03 defensibility gap: only 0 canonical primary-source URL(s) in <section class=\"sources\"> (target ≥5; aggregator/self URLs excluded). Str`\n- **es_predcal_claim_parity**: 12 occurrences\n  - example: `[SD_20260530_2255_Stablecoins.html] ES prediction-claim parity (RUNNER-ES-PREDCAL-PARITY-01): PRED 1: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 2: brief-`\n  - example: `[SD_20260531_0724_Stablecoins.html] ES prediction-claim parity (RUNNER-ES-PREDCAL-PARITY-01): PRED 1: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 2: brief-`\n- **critical_facts**: 9 occurrences\n  - example: `[SD_20260423_2019_Spain.html] 1 fact(s) flagged: [NATO_defense_gdp_target] obsolete pre-2025 NATO 2% target; Hague 2025 raised it to 5%`\n  - example: `[SD_20260530_1614_Payments_Infra.html] 1 fact(s) flagged: [stablecoin_total_market_cap_2026_stale_floor] Reverse phrasing: a $100-289B figure labelled as the total/aggregate stabl`\n- **banned_es_calcos**: 9 occurrences\n  - example: `[SD_20260508_1217_Critical_Minerals.html] banned ES calco (RUNNER-ES-CALCO-GATE-01): 'trinquete' (use: dinámica unidireccional / dependencia irreversible) — translator glossary slipp`\n  - example: `[SD_20260530_1544_Payments_Infra.html] banned ES calco (RUNNER-ES-CALCO-GATE-01): 'trinquete' (use: dinámica unidireccional / dependencia irreversible) — translator glossary slipp`\n- **market_differentiation**: 9 occurrences\n  - example: `[SD_20260530_1918_Stablecoins.html] market differentiation (EDITORIAL-PREDICTION-DIFFERENTIATION-01): PRED3: NEAR-CERTAIN (data-derived q~=0, stated 10 agrees — trivially reada`\n  - example: `[SD_20260530_2255_Stablecoins.html] market differentiation (EDITORIAL-PREDICTION-DIFFERENTIATION-01): PRED 2: NEAR-CERTAIN (data-derived q~=100, stated 82 agrees — trivially re`\n- **single_glance_coverage**: 8 occurrences\n  - example: `[SD_20260530_1544_Payments_Infra.html] duplicate cover digest blocks: 3 SD-GLANCE blocks (expected 1); 3 SD-COVERAGE blocks (expected 1) — emit exactly one SD-GLANCE and one SD-CO`\n  - example: `[SD_20260530_1907_Stablecoins.html] duplicate cover digest blocks: 2 SD-GLANCE blocks (expected 1); 2 SD-COVERAGE blocks (expected 1); 2 SD-SLUG blocks (expected 1); 2 SD-PRED-`\n- **brief_type_zero_catalog**: 6 occurrences\n  - example: `[SD_20260423_2019_Spain.html] G Type 0 silence catalog: brief lacks \"Predictions considered but not shipped\" footer/appendix section. Per spec §4 Extension G: editorial d`\n  - example: `[SD_20260424_0635_COSCO_Ports.html] G Type 0 silence catalog: brief lacks \"Predictions considered but not shipped\" footer/appendix section. Per spec §4 Extension G: editorial d`\n- **prediction_e2_named_verification_doc**: 4 occurrences\n  - example: `[SD_20260516_2151_DORA.html] E2 named-verification-doc: prediction(s) at position [3, 7] (1-indexed) lack a specific verification document reference (URL / CIK / 10-X fo`\n  - example: `[SD_20260530_1614_Payments_Infra.html] E2 named-verification-doc: prediction(s) at position [8] (1-indexed) lack a specific verification document reference (URL / CIK / 10-X form `\n- **prediction_deadline_distribution**: 4 occurrences\n  - example: `[SD_20260516_2151_DORA.html] prediction-deadline-distribution: cluster: 6/8 predictions share resolution date 2026-09-30 (75% > 40% cap); horizon-concentration: 8/8 pred`\n  - example: `[SD_20260530_1614_Payments_Infra.html] prediction-deadline-distribution: cluster: 4/8 predictions share resolution date 2027-12-31 (50% > 40% cap). Per brier-retro-W20 §3: mechani`\n- **prediction_adversarial_premortem**: 4 occurrences\n  - example: `[SD_20260516_2151_DORA.html] B adversarial pre-mortem: prediction(s) at position [1, 2, 3, 4, 5, 6, 7, 8] (1-indexed) lack \"Failure mode:\" / \"Pre-mortem:\" sentence with `\n  - example: `[SD_20260530_1614_Payments_Infra.html] B adversarial pre-mortem: prediction(s) at position [3, 4, 5, 6, 7, 8] (1-indexed) lack \"Failure mode:\" / \"Pre-mortem:\" sentence with detect`\n- **prediction_multi_path_elicitation**: 4 occurrences\n  - example: `[SD_20260516_2151_DORA.html] D multi-path elicitation: prediction(s) at position [1, 2, 3, 4, 5, 6, 7, 8] (1-indexed) lack multi-path reasoning markers (Path 1/2/3 or ou`\n  - example: `[SD_20260530_1614_Payments_Infra.html] D multi-path elicitation: prediction(s) at position [4, 5, 6, 7, 8] (1-indexed) lack multi-path reasoning markers (Path 1/2/3 or outside-vie`\n- **empty_styled_elements**: 3 occurrences\n  - example: `[SD_20260508_1217_Critical_Minerals.html] empty CSS-classed element(s) — 2 orphan(s): ['<div class=\"lang-en\">', '<div class=\"lang-es\">']. These render invisibly + bloat DOM. Either r`\n  - example: `[SD_20260516_2151_DORA.html] empty CSS-classed element(s) — 1 orphan(s): ['<div class=\"lang-en\">']. These render invisibly + bloat DOM. Either remove the empty element O`\n- **cross_lingual_false_friend**: 3 occurrences\n  - example: `[SD_20260530_2255_Stablecoins.html] 1 false-friend hit(s) in ES scope — EN \"billion\"=10^9 vs ES \"billón\"=10^12 (use \"mil millones\" for 10^9): 'billón' ('g> y por encima de <str`\n  - example: `[SD_20260531_0724_Stablecoins.html] 1 false-friend hit(s) in ES scope — EN \"billion\"=10^9 vs ES \"billón\"=10^12 (use \"mil millones\" for 10^9): 'billón' ('ns alcanza el <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- **prediction_class_distribution**: 2 occurrences\n  - example: `[SD_20260516_2151_DORA.html] prediction-class-distribution: no POS-THRESHOLD nor TERNARY-SCENARIO in 8-prediction brief — analytical surface dominated by null-event clas`\n  - example: `[SD_20260530_1614_Payments_Infra.html] prediction-class-distribution: no POS-THRESHOLD nor TERNARY-SCENARIO in 8-prediction brief — analytical surface dominated by null-event clas`\n- **investment_recommendation_patterns**: 2 occurrences\n  - example: `[SD_20260530_1544_Payments_Infra.html] 1 investment-recommendation pattern hit(s) — L01 regulatory-hygiene flag (D5-LICENSING pending); samples: implicit:tailwind for stablecoin`\n  - example: `[SD_20260530_2255_Stablecoins.html] 1 investment-recommendation pattern hit(s) — L01 regulatory-hygiene flag (D5-LICENSING pending); samples: implicit:tailwind for USD`\n- **slug_topic_consistency**: 2 occurrences\n  - example: `[SD_20260530_1544_Payments_Infra.html] SLUG/topic inconsistency (EDITORIAL-SELF-SLUG-01): cover topic vs H1 mismatch: self-declared 'payments infrastructure 2026' shares no conten`\n  - example: `[SD_20260530_1614_Payments_Infra.html] SLUG/topic inconsistency (EDITORIAL-SELF-SLUG-01): cover topic vs H1 mismatch: self-declared 'payments infrastructure 2026' shares no conten`\n- **numerical_citation_contract**: 2 occurrences\n  - example: `[SD_20260531_0724_Stablecoins.html] 12+ numerical claims without nearby citation; sample: \"…p crosses $500B by 2027-06-30, USD share remains ≥95% . 65% stated confidence, by 20`\n- **glance_digest**: 2 occurrences\n  - example: `[SD_20260531_1547_Stablecoins.html] SD-GLANCE block does not parse as JSON (BRIEF-GLANCE-DIGEST-01)`\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- **predictions_floor2_width**: 1 occurrences\n  - example: `[SD_20260530_1544_Payments_Infra.html] D-QA-22 floor#2 width (HTML pre-promote): brief has 1 formal prediction(s) but only 0 sub-deadline (falsifiable_by_date ≤ 2026-10-31). Post-`\n- **prediction_e1_base_rate_sentence**: 1 occurrences\n  - example: `[SD_20260530_1614_Payments_Infra.html] E1 base-rate-sentence: prediction(s) at position [4, 8] (1-indexed) lack a \"Base rate anchoring:\" / \"Reference class:\" sentence (English or `\n- **prediction_e4_class_label**: 1 occurrences\n  - example: `[SD_20260530_1614_Payments_Infra.html] E4 class-label: prediction(s) at position [4, 8] (1-indexed) lack explicit class label. Per Tier A E4 rule, predictions must carry one of: T`\n- **prediction_claim_state_consistency**: 1 occurrences\n  - example: `[SD_20260530_1918_Stablecoins.html] prediction already-resolved signal (claim-state vs current_value): PRED1: claim asserts a completed event ('enacted') but current_value 0 < `\n\n## Per-brief breakdown\n\n- warn `SD_20260423_2019_Spain.html` blockers=0 warnings=5\n   - warn `critical_facts`: 1 fact(s) flagged: [NATO_defense_gdp_target] obsolete pre-2025 NATO 2% target; Hague 2025 raised it to 5%\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 `brief_type_zero_catalog`: G Type 0 silence catalog: brief lacks \"Predictions considered but not shipped\" footer/appendix section. Per spec §4 Extension G: editorial discipline includes documenting omitted candidates with categ\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 16 MUST-FIX (sample: MISSING brief-tab section: 'DOUBLE TRACK' | MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING brief-t\n   - warn `canonical_brief_must_fix`: 16 canonical MUST-FIX item(s) (sample: MISSING brief-tab section: 'DOUBLE TRACK' | MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING brief-tab section: 'CONCLUSION'\n- warn `SD_20260424_0635_COSCO_Ports.html` blockers=0 warnings=4\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 `brief_type_zero_catalog`: G Type 0 silence catalog: brief lacks \"Predictions considered but not shipped\" footer/appendix section. Per spec §4 Extension G: editorial discipline includes documenting omitted candidates with categ\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 16 MUST-FIX (sample: MISSING brief-tab section: 'DOUBLE TRACK' | MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING brief-t\n   - warn `canonical_brief_must_fix`: 16 canonical MUST-FIX item(s) (sample: MISSING brief-tab section: 'DOUBLE TRACK' | MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING brief-tab section: 'CONCLUSION'\n- warn `SD_20260425_1431_AI_Economy.html` blockers=0 warnings=3\n   - warn `brief_type_zero_catalog`: G Type 0 silence catalog: brief lacks \"Predictions considered but not shipped\" footer/appendix section. Per spec §4 Extension G: editorial discipline includes documenting omitted candidates with categ\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 10 MUST-FIX (sample: MISSING brief-tab section: 'DOUBLE TRACK' | MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING brief-t\n   - warn `canonical_brief_must_fix`: 10 canonical MUST-FIX item(s) (sample: MISSING brief-tab section: 'DOUBLE TRACK' | MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING brief-tab section: 'CONCLUSION'\n- warn `SD_20260427_0656_Spain_Blackout.html` blockers=0 warnings=3\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 `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 10 MUST-FIX (sample: MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING brief-tab section: 'CONCLUSION' | MISSING ES brief-\n   - warn `canonical_brief_must_fix`: 10 canonical MUST-FIX item(s) (sample: MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING brief-tab section: 'CONCLUSION' | MISSING ES brief-tab section: 'DOBLE LECT\n- warn `SD_20260501_1416_European_Defense.html` blockers=0 warnings=3\n   - warn `brief_type_zero_catalog`: G Type 0 silence catalog: brief lacks \"Predictions considered but not shipped\" footer/appendix section. Per spec §4 Extension G: editorial discipline includes documenting omitted candidates with categ\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 7 MUST-FIX (sample: MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING ES brief-tab section: 'PREDICCIONES FORMALES — HORIZ\n   - warn `canonical_brief_must_fix`: 7 canonical MUST-FIX item(s) (sample: MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING ES brief-tab section: 'PREDICCIONES FORMALES — HORIZONTE DE VERIFICACIÓN 202\n- warn `SD_20260508_1217_Critical_Minerals.html` blockers=0 warnings=5\n   - warn `empty_styled_elements`: empty CSS-classed element(s) — 2 orphan(s): ['<div class=\"lang-en\">', '<div class=\"lang-es\">']. These render invisibly + bloat DOM. Either remove the empty element OR add <!-- intentionally-empty --> \n   - warn `brief_type_zero_catalog`: G Type 0 silence catalog: brief lacks \"Predictions considered but not shipped\" footer/appendix section. Per spec §4 Extension G: editorial discipline includes documenting omitted candidates with categ\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 7 MUST-FIX (sample: MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING ES brief-tab section: 'PREDICCIONES FORMALES — HORIZ\n   - warn `canonical_brief_must_fix`: 7 canonical MUST-FIX item(s) (sample: MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING ES brief-tab section: 'PREDICCIONES FORMALES — HORIZONTE DE VERIFICACIÓN 202\n   - warn `banned_es_calcos`: banned ES calco (RUNNER-ES-CALCO-GATE-01): 'trinquete' (use: dinámica unidireccional / dependencia irreversible) — translator glossary slipped under load; replace the calco\n- warn `SD_20260516_2151_DORA.html` blockers=0 warnings=10\n   - warn `empty_styled_elements`: empty CSS-classed element(s) — 1 orphan(s): ['<div class=\"lang-en\">']. These render invisibly + bloat DOM. Either remove the empty element OR add <!-- intentionally-empty --> marker on the preceding l\n   - warn `prediction_e2_named_verification_doc`: E2 named-verification-doc: prediction(s) at position [3, 7] (1-indexed) lack a specific verification document reference (URL / CIK / 10-X form / Regulation (EU) X/Y / DORA Article N / quoted document \n   - warn `prediction_class_distribution`: prediction-class-distribution: no POS-THRESHOLD nor TERNARY-SCENARIO in 8-prediction brief — analytical surface dominated by null-event classes. Per brier-retro-W20 §6.2: N≥3 briefs require ≥1 POS-THR\n   - warn `prediction_deadline_distribution`: prediction-deadline-distribution: cluster: 6/8 predictions share resolution date 2026-09-30 (75% > 40% cap); horizon-concentration: 8/8 predictions in short-horizon band (100% > 80% soft floor; bands \n   - warn `prediction_adversarial_premortem`: B adversarial pre-mortem: prediction(s) at position [1, 2, 3, 4, 5, 6, 7, 8] (1-indexed) lack \"Failure mode:\" / \"Pre-mortem:\" sentence with detection signal + probability adjustment. Per spec §4 Exten\n   - warn `prediction_multi_path_elicitation`: D multi-path elicitation: prediction(s) at position [1, 2, 3, 4, 5, 6, 7, 8] (1-indexed) lack multi-path reasoning markers (Path 1/2/3 or outside-view/structural/analogical framing). Per spec §4 Exten\n   - warn `brief_type_zero_catalog`: G Type 0 silence catalog: brief lacks \"Predictions considered but not shipped\" footer/appendix section. Per spec §4 Extension G: editorial discipline includes documenting omitted candidates with categ\n   - warn `acronym_first_use_expansion`: ACRONYM first-use expansion gap: 9 acronym(s) appear in body before ACRONYMS table without long-form expansion in ±200 chars. Samples: DORA (Digital Operational Resilience Act (Regu…), CTPP (Critical \n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 1 MUST-FIX (sample: MISSING Audit Trail section (<section class='audit-trail'>)). Run `python3 scripts/canonical-brief-diff.py <brief>` for full report.\n   - warn `canonical_brief_must_fix`: 1 canonical MUST-FIX item(s) (sample: MISSING Audit Trail section (<section class='audit-trail'>)). Run `python3 scripts/canonical-brief-diff.py <brief>` for the full report.\n- warn `SD_20260522_1354_Payments.html` blockers=0 warnings=1\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 2 SHOULD-FIX (sample: TRAILING ORDER violated: ACRONYMS appears BEFORE SOURCES in document order (ACRONYMS @ byte 158032, SOURCES @ byte 212684). Canonical Br\n- warn `SD_20260530_1544_Payments_Infra.html` blockers=0 warnings=10\n   - warn `investment_recommendation_patterns`: 1 investment-recommendation pattern hit(s) — L01 regulatory-hygiene flag (D5-LICENSING pending); samples: implicit:tailwind for stablecoin\n   - warn `anchor_number_footnote_url`: 19 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>$240B</strong> | no fn-ref: <strong>$94B</strong> | no fn-ref: <strong>EUR-Stablecoin Adoption Failure Below 10% Mar\n   - warn `def01_formal_predictions_present`: DEF01 ledger gap: HTML contains formal-prediction triad (probability+verification+falsifiable date) but predictions.yaml has 0 entries with brief_source=SD_20260530_1544_Payments_Infra.html. Run: pyth\n   - warn `predictions_floor2_width`: D-QA-22 floor#2 width (HTML pre-promote): brief has 1 formal prediction(s) but only 0 sub-deadline (falsifiable_by_date ≤ 2026-10-31). Post-2026-05-04 briefs require ≥2 sub-deadline per D-QA-22; add s\n   - warn `acronym_first_use_expansion`: ACRONYM first-use expansion gap: 19 acronym(s) appear in body before ACRONYMS table without long-form expansion in ±200 chars. Samples: CBDC (Central Bank Digital Currency), CSDR (Central Securities D\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 8 MUST-FIX (sample: MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING ES brief-tab section: 'DOBLE LECTURA' | MISSING ES b\n   - warn `canonical_brief_must_fix`: 8 canonical MUST-FIX item(s) (sample: MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING ES brief-tab section: 'DOBLE LECTURA' | MISSING ES brief-tab section: 'PREDI\n   - warn `single_glance_coverage`: duplicate cover digest blocks: 3 SD-GLANCE blocks (expected 1); 3 SD-COVERAGE blocks (expected 1) — emit exactly one SD-GLANCE and one SD-COVERAGE on the cover\n   - warn `slug_topic_consistency`: SLUG/topic inconsistency (EDITORIAL-SELF-SLUG-01): cover topic vs H1 mismatch: self-declared 'payments infrastructure 2026' shares no content word with brief H1 'stablecoins dollarisation' (mis-slug c\n   - warn `banned_es_calcos`: banned ES calco (RUNNER-ES-CALCO-GATE-01): 'trinquete' (use: dinámica unidireccional / dependencia irreversible) — translator glossary slipped under load; replace the calco\n- warn `SD_20260530_1614_Payments_Infra.html` blockers=0 warnings=15\n   - warn `critical_facts`: 1 fact(s) flagged: [stablecoin_total_market_cap_2026_stale_floor] Reverse phrasing: a $100-289B figure labelled as the total/aggregate stablecoin market cap is stale; correct ~$322B (May 2026).\n   - warn `anchor_number_footnote_url`: 29 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>$160B+</strong> | no fn-ref: <strong>160.000 millones de dólares</strong> | no fn-ref: <strong>20 % y un 25 %</stron\n   - warn `def01_formal_predictions_present`: DEF01 ledger gap: HTML contains formal-prediction triad (probability+verification+falsifiable date) but predictions.yaml has 0 entries with brief_source=SD_20260530_1614_Payments_Infra.html. Run: pyth\n   - warn `def03_canonical_url_floor`: DEF03 defensibility gap: only 0 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 `prediction_e1_base_rate_sentence`: E1 base-rate-sentence: prediction(s) at position [4, 8] (1-indexed) lack a \"Base rate anchoring:\" / \"Reference class:\" sentence (English or Spanish). Per Tier A E1 rule, every prediction must name the\n   - warn `prediction_e2_named_verification_doc`: E2 named-verification-doc: prediction(s) at position [8] (1-indexed) lack a specific verification document reference (URL / CIK / 10-X form / Regulation (EU) X/Y / DORA Article N / quoted document tit\n   - warn `prediction_e4_class_label`: E4 class-label: prediction(s) at position [4, 8] (1-indexed) lack explicit class label. Per Tier A E4 rule, predictions must carry one of: TERNARY-SCENARIO / POS-THRESHOLD / NEG-REG-DATE / NEG-EVENT-D\n   - warn `prediction_class_distribution`: prediction-class-distribution: no POS-THRESHOLD nor TERNARY-SCENARIO in 8-prediction brief — analytical surface dominated by null-event classes. Per brier-retro-W20 §6.2: N≥3 briefs require ≥1 POS-THR\n   - warn `prediction_deadline_distribution`: prediction-deadline-distribution: cluster: 4/8 predictions share resolution date 2027-12-31 (50% > 40% cap). Per brier-retro-W20 §3: mechanical date clustering reduces effective independent calibratio\n   - warn `prediction_adversarial_premortem`: B adversarial pre-mortem: prediction(s) at position [3, 4, 5, 6, 7, 8] (1-indexed) lack \"Failure mode:\" / \"Pre-mortem:\" sentence with detection signal + probability adjustment. Per spec §4 Extension B\n   - warn `prediction_multi_path_elicitation`: D multi-path elicitation: prediction(s) at position [4, 5, 6, 7, 8] (1-indexed) lack multi-path reasoning markers (Path 1/2/3 or outside-view/structural/analogical framing). Per spec §4 Extension D: 2\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 8 MUST-FIX (sample: MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING ES brief-tab section: 'PREDICCIONES FORMALES — HORIZ\n   - warn `canonical_brief_must_fix`: 8 canonical MUST-FIX item(s) (sample: MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING ES brief-tab section: 'PREDICCIONES FORMALES — HORIZONTE DE VERIFICACIÓN 202\n   - warn `slug_topic_consistency`: SLUG/topic inconsistency (EDITORIAL-SELF-SLUG-01): cover topic vs H1 mismatch: self-declared 'payments infrastructure 2026' shares no content word with brief H1 'stablecoins dollarisation' (mis-slug c\n   - warn `banned_es_calcos`: banned ES calco (RUNNER-ES-CALCO-GATE-01): 'trinquete' (use: dinámica unidireccional / dependencia irreversible) — translator glossary slipped under load; replace the calco\n- warn `SD_20260530_1907_Stablecoins.html` blockers=0 warnings=9\n   - warn `critical_facts`: 1 fact(s) flagged: [swift_2024_fin_messages_volume] SWIFT 2024 FIN message count is 13.4B (not 11.5B which is stale ~2022/2023 figure). Phase D activation factor-1.16x error class.\n   - warn `toc_anchor_integrity`: TOC ↔ body section-anchor mismatch: 10 orphan section(s) — body id=\"X\" with no TOC entry: ['en-sec-acronyms', 'en-sec-divergence', 'en-sec-patternrecognition', 'en-sec-patternrecognition-full', 'en-se\n   - warn `anchor_number_footnote_url`: 47 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>$322B</strong> | no fn-ref: <strong>$141B</strong> | no fn-ref: <strong>1%</strong> — every magnitude in <strong>/<b\n   - warn `def01_formal_predictions_present`: DEF01 ledger gap: HTML contains formal-prediction triad (probability+verification+falsifiable date) but predictions.yaml has 0 entries with brief_source=SD_20260530_1907_Stablecoins.html. Run: python3\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 17 MUST-FIX (sample: MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING brief-tab section: 'CONCLUSION' | MISSING ES brief-\n   - warn `canonical_brief_must_fix`: 17 canonical MUST-FIX item(s) (sample: MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING brief-tab section: 'CONCLUSION' | MISSING ES brief-tab section: 'DOBLE LECT\n   - warn `single_glance_coverage`: duplicate cover digest blocks: 2 SD-GLANCE blocks (expected 1); 2 SD-COVERAGE blocks (expected 1); 2 SD-SLUG blocks (expected 1); 2 SD-PRED-CAL blocks (expected 1) — emit exactly one SD-GLANCE and one\n   - warn `prediction_calibration`: prediction calibration (EDITORIAL-PREDICTION-CALIBRATION-SELFDECL-01): PRED 1: OVER-CONFIDENT (stated 68 vs data-derived q~=45); PRED 3: OVER-CONFIDENT (stated 28 vs data-derived q~=0)\n   - warn `banned_es_calcos`: banned ES calco (RUNNER-ES-CALCO-GATE-01): 'trinquete' (use: dinámica unidireccional / dependencia irreversible) — translator glossary slipped under load; replace the calco\n- warn `SD_20260530_1918_Stablecoins.html` blockers=0 warnings=11\n   - warn `toc_anchor_integrity`: TOC ↔ body section-anchor mismatch: 4 dangling TOC link(s) — `<a href=\"#X\">` with no matching body id=\"X\": ['en-sec-3bis', 'en-sec-othertrack', 'es-sec-3bis', 'es-sec-othertrack'] — every TOC link mus\n   - warn `anchor_number_footnote_url`: 22 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>$322 billion</strong> | no fn-ref: <strong>€200 million</strong> | no fn-ref: <strong>€200 million</strong> — every \n   - warn `def01_formal_predictions_present`: DEF01 ledger gap: HTML contains formal-prediction triad (probability+verification+falsifiable date) but predictions.yaml has 0 entries with brief_source=SD_20260530_1918_Stablecoins.html. Run: python3\n   - warn `html_structural_integrity`: 1 structural integrity issue(s): toc-sync-broken: missing id= for ['en-sec-3bis', 'en-sec-othertrack', 'es-sec-3bis'] (+1 more)\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 6 MUST-FIX (sample: MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING ES brief-tab section: 'PREDICCIONES FORMALES — HORIZ\n   - warn `canonical_brief_must_fix`: 6 canonical MUST-FIX item(s) (sample: MISSING brief-tab section: 'FORMAL PREDICTIONS — 2026 VERIFICATION HORIZON' | MISSING ES brief-tab section: 'PREDICCIONES FORMALES — HORIZONTE DE VERIFICACIÓN 202\n   - warn `single_glance_coverage`: duplicate cover digest blocks: 2 SD-GLANCE blocks (expected 1); 2 SD-COVERAGE blocks (expected 1); 2 SD-SLUG blocks (expected 1); 2 SD-PRED-CAL blocks (expected 1) — emit exactly one SD-GLANCE and one\n   - warn `prediction_calibration`: prediction calibration (EDITORIAL-PREDICTION-CALIBRATION-SELFDECL-01): PRED1: OVER-CONFIDENT (stated 72 vs data-derived q~=16); PRED2: OVER-CONFIDENT (stated 58 vs data-derived q~=0)\n   - warn `market_differentiation`: market differentiation (EDITORIAL-PREDICTION-DIFFERENTIATION-01): PRED3: NEAR-CERTAIN (data-derived q~=0, stated 10 agrees — trivially readable off the public trajectory) — replace with a differentiat\n   - warn `banned_es_calcos`: banned ES calco (RUNNER-ES-CALCO-GATE-01): 'trinquete' (use: dinámica unidireccional / dependencia irreversible) — translator glossary slipped under load; replace the calco\n   - warn `prediction_claim_state_consistency`: prediction already-resolved signal (claim-state vs current_value): PRED1: claim asserts a completed event ('enacted') but current_value 0 < threshold 1 treats it as not-yet — an already-resolved event\n- warn `SD_20260530_2255_Stablecoins.html` blockers=0 warnings=15\n   - warn `toc_anchor_integrity`: TOC ↔ body section-anchor mismatch: 2 dangling TOC link(s) — `<a href=\"#X\">` with no matching body id=\"X\": ['en-sec-predictions', 'es-sec-predictions'] — every TOC link must resolve to a body section,\n   - warn `investment_recommendation_patterns`: 1 investment-recommendation pattern hit(s) — L01 regulatory-hygiene flag (D5-LICENSING pending); samples: implicit:tailwind for USD\n   - warn `anchor_number_footnote_url`: 56 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>$164 billion+</strong> | no fn-ref: <strong>$300+ billion</strong> | no fn-ref: <strong>$164 billion+</strong> — eve\n   - warn `cross_lingual_false_friend`: 1 false-friend hit(s) in ES scope — EN \"billion\"=10^9 vs ES \"billón\"=10^12 (use \"mil millones\" for 10^9): 'billón' ('g> y por encima de <strong>un billón de dólares</strong> en un esc')\n   - warn `def01_formal_predictions_present`: DEF01 ledger gap: HTML contains formal-prediction triad (probability+verification+falsifiable date) but predictions.yaml has 0 entries with brief_source=SD_20260530_2255_Stablecoins.html. Run: python3\n   - warn `def03_canonical_url_floor`: DEF03 defensibility gap: only 0 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 `html_structural_integrity`: 1 structural integrity issue(s): toc-sync-broken: missing id= for ['en-sec-predictions', 'es-sec-predictions']\n   - warn `acronym_first_use_expansion`: ACRONYM first-use expansion gap: 22 acronym(s) appear in body before ACRONYMS table without long-form expansion in ±200 chars. Samples: CBDC (Central Bank Digital Currency), CNH (Offshore Chinese Renm\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 3 MUST-FIX (sample: Section 'EXECUTIVE SUMMARY' has 1 paragraphs; canonical expects 3 (¶1 HOOK (key facts) · ¶2 MECHANISM (structural dynamic + cross-arc to §\n   - warn `canonical_brief_must_fix`: 3 canonical MUST-FIX item(s) (sample: Section 'EXECUTIVE SUMMARY' has 1 paragraphs; canonical expects 3 (¶1 HOOK (key facts) · ¶2 MECHANISM (structural dynamic + cross-arc to §3-bis/§3-) | Section 'RE\n   - warn `single_glance_coverage`: duplicate cover digest blocks: 3 SD-GLANCE blocks (expected 1); 3 SD-COVERAGE blocks (expected 1); 3 SD-SLUG blocks (expected 1); 3 SD-PRED-CAL blocks (expected 1) — emit exactly one SD-GLANCE and one\n   - warn `prediction_calibration`: prediction calibration (EDITORIAL-PREDICTION-CALIBRATION-SELFDECL-01): PRED 1: OVER-CONFIDENT (stated 62 vs data-derived q~=0); PRED 3: OVER-CONFIDENT (stated 18 vs data-derived q~=0)\n   - warn `market_differentiation`: market differentiation (EDITORIAL-PREDICTION-DIFFERENTIATION-01): PRED 2: NEAR-CERTAIN (data-derived q~=100, stated 82 agrees — trivially readable off the public trajectory); PRED 3: NEAR-CERTAIN (dat\n   - warn `banned_es_calcos`: banned ES calco (RUNNER-ES-CALCO-GATE-01): 'trinquete' (use: dinámica unidireccional / dependencia irreversible) — translator glossary slipped under load; replace the calco\n   - warn `es_predcal_claim_parity`: ES prediction-claim parity (RUNNER-ES-PREDCAL-PARITY-01): PRED 1: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 2: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 3\n- warn `SD_20260531_0724_Stablecoins.html` blockers=0 warnings=14\n   - warn `numerical_citation_contract`: 12+ numerical claims without nearby citation; sample: \"…p crosses $500B by 2027-06-30, USD share remains ≥95% . 65% stated confidence, by 2027-06-30. PRED 2 —…\" | \"…ses $500B by 2027-06-30, USD share \n   - warn `toc_anchor_integrity`: TOC ↔ body section-anchor mismatch: 2 dangling TOC link(s) — `<a href=\"#X\">` with no matching body id=\"X\": ['en-sec-predictions', 'es-sec-predictions'] — every TOC link must resolve to a body section,\n   - warn `anchor_number_footnote_url`: 57 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>$120–140B in US government paper</strong> | no fn-ref: <strong>120.000 y 140.000 millones de dólares en deuda púb</s\n   - warn `cross_lingual_false_friend`: 1 false-friend hit(s) in ES scope — EN \"billion\"=10^9 vs ES \"billón\"=10^12 (use \"mil millones\" for 10^9): 'billón' ('ns alcanza el <strong><strong>billón de dólares</strong></strong>')\n   - warn `def01_formal_predictions_present`: DEF01 ledger gap: HTML contains formal-prediction triad (probability+verification+falsifiable date) but predictions.yaml has 0 entries with brief_source=SD_20260531_0724_Stablecoins.html. Run: python3\n   - warn `def03_canonical_url_floor`: DEF03 defensibility gap: only 0 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 `html_structural_integrity`: 1 structural integrity issue(s): toc-sync-broken: missing id= for ['en-sec-predictions', 'es-sec-predictions']\n   - warn `acronym_first_use_expansion`: ACRONYM first-use expansion gap: 15 acronym(s) appear in body before ACRONYMS table without long-form expansion in ±200 chars. Samples: DB (Defined Benefit (pension scheme structur…), DC (Defined Cont\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 3 MUST-FIX (sample: MISSING ES brief-tab section: 'DOBLE LECTURA' | MISSING Audit Trail section (<section class='audit-trail'>) | Table 'DOUBLE TRACK' in brie\n   - warn `canonical_brief_must_fix`: 3 canonical MUST-FIX item(s) (sample: MISSING ES brief-tab section: 'DOBLE LECTURA' | MISSING Audit Trail section (<section class='audit-trail'>) | Table 'DOUBLE TRACK' in brief_tab has 6 cols; canoni\n   - warn `prediction_calibration`: prediction calibration (EDITORIAL-PREDICTION-CALIBRATION-SELFDECL-01): PRED 1: OVER-CONFIDENT (stated 65 vs data-derived q~=4); PRED 3: OVER-CONFIDENT (stated 35 vs data-derived q~=0)\n   - warn `market_differentiation`: market differentiation (EDITORIAL-PREDICTION-DIFFERENTIATION-01): PRED 2: NEAR-CERTAIN (data-derived q~=100, stated 85 agrees — trivially readable off the public trajectory) — replace with a different\n   - warn `banned_es_calcos`: banned ES calco (RUNNER-ES-CALCO-GATE-01): 'trinquete' (use: dinámica unidireccional / dependencia irreversible) — translator glossary slipped under load; replace the calco\n   - warn `es_predcal_claim_parity`: ES prediction-claim parity (RUNNER-ES-PREDCAL-PARITY-01): PRED 1: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 2: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 3\n- warn `SD_20260531_0757_Stablecoins.html` blockers=0 warnings=11\n   - warn `toc_anchor_integrity`: TOC ↔ body section-anchor mismatch: 2 dangling TOC link(s) — `<a href=\"#X\">` with no matching body id=\"X\": ['en-sec-predictions', 'es-sec-predictions'] — every TOC link must resolve to a body section,\n   - warn `anchor_number_footnote_url`: 38 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>$120 billion</strong> | no fn-ref: <strong>$140–$175 billion</strong> | no fn-ref: <strong>30%</strong> — every magn\n   - warn `def01_formal_predictions_present`: DEF01 ledger gap: HTML contains formal-prediction triad (probability+verification+falsifiable date) but predictions.yaml has 0 entries with brief_source=SD_20260531_0757_Stablecoins.html. Run: python3\n   - warn `def03_canonical_url_floor`: DEF03 defensibility gap: only 0 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 `html_structural_integrity`: 1 structural integrity issue(s): toc-sync-broken: missing id= for ['en-sec-predictions', 'es-sec-predictions']\n   - warn `acronym_first_use_expansion`: ACRONYM first-use expansion gap: 19 acronym(s) appear in body before ACRONYMS table without long-form expansion in ±200 chars. Samples: BIS (Bank for International Settlements), CBDC (Central Bank Dig\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 5 MUST-FIX (sample: MISSING ES brief-tab section: 'DOBLE LECTURA' | Section 'EXECUTIVE SUMMARY' has 1 paragraphs; canonical expects 3 (¶1 HOOK (key facts) · ¶\n   - warn `canonical_brief_must_fix`: 5 canonical MUST-FIX item(s) (sample: MISSING ES brief-tab section: 'DOBLE LECTURA' | Section 'EXECUTIVE SUMMARY' has 1 paragraphs; canonical expects 3 (¶1 HOOK (key facts) · ¶2 MECHANISM (structural \n   - warn `prediction_calibration`: prediction calibration (EDITORIAL-PREDICTION-CALIBRATION-SELFDECL-01): PRED1: OVER-CONFIDENT (stated 62 vs data-derived q~=13); PRED2: ALREADY TRUE at issue (current 120 already exceeds 100) — not a f\n   - warn `banned_es_calcos`: banned ES calco (RUNNER-ES-CALCO-GATE-01): 'trinquete' (use: dinámica unidireccional / dependencia irreversible) — translator glossary slipped under load; replace the calco\n   - warn `es_predcal_claim_parity`: ES prediction-claim parity (RUNNER-ES-PREDCAL-PARITY-01): PRED 1: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 2: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 3\n- warn `SD_20260531_1416_Stablecoins.html` blockers=0 warnings=12\n   - warn `toc_anchor_integrity`: TOC ↔ body section-anchor mismatch: 2 dangling TOC link(s) — `<a href=\"#X\">` with no matching body id=\"X\": ['en-sec-predictions', 'es-sec-predictions'] — every TOC link must resolve to a body section,\n   - warn `anchor_number_footnote_url`: 7 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>70%</strong> | no fn-ref: <strong>80%</strong> | no fn-ref: <strong>35%</strong> — every magnitude in <strong>/<b> sh\n   - warn `def01_formal_predictions_present`: DEF01 ledger gap: HTML contains formal-prediction triad (probability+verification+falsifiable date) but predictions.yaml has 0 entries with brief_source=SD_20260531_1416_Stablecoins.html. Run: python3\n   - warn `def03_canonical_url_floor`: DEF03 defensibility gap: only 0 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 `html_structural_integrity`: 1 structural integrity issue(s): toc-sync-broken: missing id= for ['en-sec-predictions', 'es-sec-predictions']\n   - warn `acronym_first_use_expansion`: ACRONYM first-use expansion gap: 22 acronym(s) appear in body before ACRONYMS table without long-form expansion in ±200 chars. Samples: CASP (Crypto-Asset Service Provider (MiCA lice…), CBDC (Central \n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 4 MUST-FIX (sample: MISSING ES brief-tab section: 'DOBLE LECTURA' | Section 'EXECUTIVE SUMMARY' has 1 paragraphs; canonical expects 3 (¶1 HOOK (key facts) · ¶\n   - warn `canonical_brief_must_fix`: 4 canonical MUST-FIX item(s) (sample: MISSING ES brief-tab section: 'DOBLE LECTURA' | Section 'EXECUTIVE SUMMARY' has 1 paragraphs; canonical expects 3 (¶1 HOOK (key facts) · ¶2 MECHANISM (structural \n   - warn `prediction_calibration`: prediction calibration (EDITORIAL-PREDICTION-CALIBRATION-SELFDECL-01): PRED1: OVER-CONFIDENT (stated 70 vs data-derived q~=0); PRED3: OVER-CONFIDENT (stated 35 vs data-derived q~=16)\n   - warn `market_differentiation`: market differentiation (EDITORIAL-PREDICTION-DIFFERENTIATION-01): PRED2: NEAR-CERTAIN (data-derived q~=100, stated 80 agrees — trivially readable off the public trajectory) — replace with a differenti\n   - warn `banned_es_calcos`: banned ES calco (RUNNER-ES-CALCO-GATE-01): 'trinquete' (use: dinámica unidireccional / dependencia irreversible) — translator glossary slipped under load; replace the calco\n   - warn `es_predcal_claim_parity`: ES prediction-claim parity (RUNNER-ES-PREDCAL-PARITY-01): PRED 1: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 2: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 3\n- warn `SD_20260531_1547_Stablecoins.html` blockers=0 warnings=17\n   - warn `critical_facts`: 1 fact(s) flagged: [stablecoin_ust_holdings_combined] Tether attestations are by BDO Italia (not Big 4 or Grant Thornton). Material misattribution; Circle is Deloitte-attested (previously Grant Thornt\n   - warn `toc_anchor_integrity`: TOC ↔ body section-anchor mismatch: 2 dangling TOC link(s) — `<a href=\"#X\">` with no matching body id=\"X\": ['en-sec-predictions', 'es-sec-predictions'] — every TOC link must resolve to a body section,\n   - warn `anchor_number_footnote_url`: 13 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>30%</strong> | no fn-ref: <strong>5%</strong> | no fn-ref: <strong>$300 billion</strong> — every magnitude in <stron\n   - warn `def01_formal_predictions_present`: DEF01 ledger gap: HTML contains formal-prediction triad (probability+verification+falsifiable date) but predictions.yaml has 0 entries with brief_source=SD_20260531_1547_Stablecoins.html. Run: python3\n   - warn `def03_canonical_url_floor`: DEF03 defensibility gap: only 0 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 `html_structural_integrity`: 1 structural integrity issue(s): toc-sync-broken: missing id= for ['en-sec-predictions', 'es-sec-predictions']\n   - warn `prediction_e2_named_verification_doc`: E2 named-verification-doc: prediction(s) at position [6] (1-indexed) lack a specific verification document reference (URL / CIK / 10-X form / Regulation (EU) X/Y / DORA Article N / quoted document tit\n   - warn `prediction_deadline_distribution`: prediction-deadline-distribution: cluster: 4/6 predictions share resolution date 2027-12-31 (67% > 40% cap). Per brier-retro-W20 §3: mechanical date clustering reduces effective independent calibratio\n   - warn `prediction_adversarial_premortem`: B adversarial pre-mortem: prediction(s) at position [4, 5, 6] (1-indexed) lack \"Failure mode:\" / \"Pre-mortem:\" sentence with detection signal + probability adjustment. Per spec §4 Extension B: each pr\n   - warn `prediction_multi_path_elicitation`: D multi-path elicitation: prediction(s) at position [4, 5, 6] (1-indexed) lack multi-path reasoning markers (Path 1/2/3 or outside-view/structural/analogical framing). Per spec §4 Extension D: 2-3 ind\n   - warn `acronym_first_use_expansion`: ACRONYM first-use expansion gap: 15 acronym(s) appear in body before ACRONYMS table without long-form expansion in ±200 chars. Samples: CBDC (Central Bank Digital Currency), CNH (Offshore Chinese Renm\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 2 MUST-FIX (sample: Section 'EXECUTIVE SUMMARY' has 1 paragraphs; canonical expects 3 (¶1 HOOK (key facts) · ¶2 MECHANISM (structural dynamic + cross-arc to §\n   - warn `canonical_brief_must_fix`: 2 canonical MUST-FIX item(s) (sample: Section 'EXECUTIVE SUMMARY' has 1 paragraphs; canonical expects 3 (¶1 HOOK (key facts) · ¶2 MECHANISM (structural dynamic + cross-arc to §3-bis/§3-) | Section 'RE\n   - warn `single_glance_coverage`: duplicate cover digest blocks: 3 SD-GLANCE blocks (expected 1); 3 SD-COVERAGE blocks (expected 1); 3 SD-SLUG blocks (expected 1); 3 SD-PRED-CAL blocks (expected 1) — emit exactly one SD-GLANCE and one\n   - warn `prediction_calibration`: prediction calibration (EDITORIAL-PREDICTION-CALIBRATION-SELFDECL-01): PRED 2: OVER-CONFIDENT (stated 63 vs data-derived q~=0); PRED 3: OVER-CONFIDENT (stated 25 vs data-derived q~=0)\n   - warn `es_predcal_claim_parity`: ES prediction-claim parity (RUNNER-ES-PREDCAL-PARITY-01): PRED 1: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 2: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 3\n   - warn `glance_digest`: SD-GLANCE block does not parse as JSON (BRIEF-GLANCE-DIGEST-01)\n- warn `SD_20260531_1740_Stablecoins.html` blockers=0 warnings=12\n   - warn `critical_facts`: 1 fact(s) flagged: [stablecoin_ust_holdings_combined] Tether attestations are by BDO Italia (not Big 4 or Grant Thornton). Material misattribution; Circle is Deloitte-attested (previously Grant Thornt\n   - warn `toc_anchor_integrity`: TOC ↔ body section-anchor mismatch: 2 dangling TOC link(s) — `<a href=\"#X\">` with no matching body id=\"X\": ['en-sec-predictions', 'es-sec-predictions'] — every TOC link must resolve to a body section,\n   - warn `anchor_number_footnote_url`: 15 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>$228B</strong> | no fn-ref: <strong>$149.3B</strong> | no fn-ref: <strong>$44.7B</strong> — every magnitude in <stro\n   - warn `def01_formal_predictions_present`: DEF01 ledger gap: HTML contains formal-prediction triad (probability+verification+falsifiable date) but predictions.yaml has 0 entries with brief_source=SD_20260531_1740_Stablecoins.html. Run: python3\n   - warn `def03_canonical_url_floor`: DEF03 defensibility gap: only 0 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 `html_structural_integrity`: 1 structural integrity issue(s): toc-sync-broken: missing id= for ['en-sec-predictions', 'es-sec-predictions']\n   - warn `acronym_first_use_expansion`: ACRONYM first-use expansion gap: 16 acronym(s) appear in body before ACRONYMS table without long-form expansion in ±200 chars. Samples: CIPS (Cross-Border Interbank Payment System (P…), CNH (Offshore \n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 2 MUST-FIX (sample: Section 'EXECUTIVE SUMMARY' has 1 paragraphs; canonical expects 3 (¶1 HOOK (key facts) · ¶2 MECHANISM (structural dynamic + cross-arc to §\n   - warn `canonical_brief_must_fix`: 2 canonical MUST-FIX item(s) (sample: Section 'EXECUTIVE SUMMARY' has 1 paragraphs; canonical expects 3 (¶1 HOOK (key facts) · ¶2 MECHANISM (structural dynamic + cross-arc to §3-bis/§3-) | Section 'RE\n   - warn `prediction_calibration`: prediction calibration (EDITORIAL-PREDICTION-CALIBRATION-SELFDECL-01): PRED 1: OVER-CONFIDENT (stated 70 vs data-derived q~=0); PRED 3: OVER-CONFIDENT (stated 34 vs data-derived q~=0)\n   - warn `market_differentiation`: market differentiation (EDITORIAL-PREDICTION-DIFFERENTIATION-01): PRED 2: NEAR-CERTAIN (data-derived q~=100, stated 82 agrees — trivially readable off the public trajectory) — replace with a different\n   - warn `es_predcal_claim_parity`: ES prediction-claim parity (RUNNER-ES-PREDCAL-PARITY-01): PRED 1: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 2: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 3\n- warn `SD_20260531_2026_Stablecoins.html` blockers=0 warnings=8\n   - warn `toc_anchor_integrity`: TOC ↔ body section-anchor mismatch: 2 dangling TOC link(s) — `<a href=\"#X\">` with no matching body id=\"X\": ['en-sec-predictions', 'es-sec-predictions']; 4 orphan section(s) — body id=\"X\" with no TOC e\n   - warn `anchor_number_footnote_url`: 31 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>$500 billion</strong> | no fn-ref: <strong>$206 billion</strong> | no fn-ref: <strong>$3.2 trillion</strong> — every\n   - warn `def01_formal_predictions_present`: DEF01 ledger gap: HTML contains formal-prediction triad (probability+verification+falsifiable date) but predictions.yaml has 0 entries with brief_source=SD_20260531_2026_Stablecoins.html. Run: python3\n   - warn `html_structural_integrity`: 1 structural integrity issue(s): toc-sync-broken: missing id= for ['en-sec-predictions', 'es-sec-predictions']\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 2 SHOULD-FIX (sample: MISSING ES brief-tab section: 'LA OTRA LECTURA' | Full-tab mermaid count 0; canonical range [6, 14]). Run `python3 scripts/canonical-bri\n   - warn `prediction_calibration`: prediction calibration (EDITORIAL-PREDICTION-CALIBRATION-SELFDECL-01): PRED1: OVER-CONFIDENT (stated 63 vs data-derived q~=1); PRED3: OVER-CONFIDENT (stated 18 vs data-derived q~=0)\n   - warn `market_differentiation`: market differentiation (EDITORIAL-PREDICTION-DIFFERENTIATION-01): PRED2: NEAR-CERTAIN (data-derived q~=100, stated 82 agrees — trivially readable off the public trajectory); PRED3: NEAR-CERTAIN (data-\n   - warn `es_predcal_claim_parity`: ES prediction-claim parity (RUNNER-ES-PREDCAL-PARITY-01): PRED 1: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 2: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 3\n- warn `SD_20260531_2115_Stablecoins.html` blockers=0 warnings=11\n   - warn `critical_facts`: 1 fact(s) flagged: [swift_2024_fin_messages_volume] SWIFT 2024 FIN message count is 13.4B (not 11.5B which is stale ~2022/2023 figure). Phase D activation factor-1.16x error class.\n   - warn `toc_anchor_integrity`: TOC ↔ body section-anchor mismatch: 2 dangling TOC link(s) — `<a href=\"#X\">` with no matching body id=\"X\": ['en-sec-predictions', 'es-sec-predictions'] — every TOC link must resolve to a body section,\n   - warn `anchor_number_footnote_url`: 3 anchor-number(s) without URL-bearing footnote (D01); samples: no fn-ref: <strong>30%</strong> | no fn-ref: <strong>30 %</strong> | no fn-ref: <strong>60 %</strong> — every magnitude in <strong>/<b> \n   - warn `def01_formal_predictions_present`: DEF01 ledger gap: HTML contains formal-prediction triad (probability+verification+falsifiable date) but predictions.yaml has 0 entries with brief_source=SD_20260531_2115_Stablecoins.html. Run: python3\n   - warn `html_structural_integrity`: 1 structural integrity issue(s): toc-sync-broken: missing id= for ['en-sec-predictions', 'es-sec-predictions']\n   - warn `acronym_first_use_expansion`: ACRONYM first-use expansion gap: 13 acronym(s) appear in body before ACRONYMS table without long-form expansion in ±200 chars. Samples: CBDC (Central Bank Digital Currency), CNH (Offshore Chinese renm\n   - warn `canonical_brief_structure`: canonical-structure diff vs Brief 7 spec: 2 MUST-FIX (sample: MISSING EN disclaimer: 'Geopolitical intelligence analysis only. Not investment advice.' | MISSING ES disclaimer: 'Análisis de inteligenci\n   - warn `canonical_brief_must_fix`: 2 canonical MUST-FIX item(s) (sample: MISSING EN disclaimer: 'Geopolitical intelligence analysis only. Not investment advice.' | MISSING ES disclaimer: 'Análisis de inteligencia geopolítica exclusivam\n   - warn `single_glance_coverage`: duplicate cover digest blocks: 2 SD-GLANCE blocks (expected 1); 2 SD-COVERAGE blocks (expected 1); 2 SD-SLUG blocks (expected 1); 2 SD-PRED-CAL blocks (expected 1) — emit exactly one SD-GLANCE and one\n   - warn `prediction_calibration`: prediction calibration (EDITORIAL-PREDICTION-CALIBRATION-SELFDECL-01): PRED 3: OVER-CONFIDENT (stated 24 vs data-derived q~=0)\n   - warn `es_predcal_claim_parity`: ES prediction-claim parity (RUNNER-ES-PREDCAL-PARITY-01): PRED 1: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 2: brief-tab claim identical in EN+ES (ES claim untranslated); PRED 3\n\n## Recommendation\n- Top blocker pattern is **inference_citation_ratio** (1× this week). Review `BLOCKER_TO_RULE['inference_citation_ratio']` in `scripts/quality-relaunch-loop.py` and consider adding the corresponding rule to the Forecaster system prompt.\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\n- (none — no intermittent warnings with extractable thresholds this window)\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  [ ] PARTIAL  [ ] FAIL  ·  Notes: \n\n2. **Cada claim trazable a fuente con URL**\n   - _§1 — `numerical_citation_contract` + `sources_density_minimum` aproximan; revisar cualitativamente_\n   - [ ] PASS  [ ] PARTIAL  [ ] FAIL  ·  Notes: \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   - [ ] PASS  [ ] PARTIAL  [ ] FAIL  ·  Notes: \n\n4. **Cadencia 1 brief/semana mantenida** (auto-hint: last brief = 2026-05-31, 1d ago — within 7d cadence)\n   - _§3 Fase 0 — verificar fecha del último publish ≤7d; si no, marcar FAIL y abrir tracker_\n   - [ ] PASS  [ ] PARTIAL  [ ] FAIL  ·  Notes: \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   - [ ] PASS  [ ] PARTIAL  [ ] FAIL  ·  Notes: \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  [ ] PARTIAL  [ ] FAIL  ·  Notes: \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  [ ] PARTIAL  [ ] FAIL  ·  Notes: \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  [ ] PARTIAL  [ ] FAIL  ·  Notes: \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\n17 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- `bessent_stablecoin_market_projection_3T_by_2030`\n- `china_us_treasury_holdings_2024`\n- `cips_china_cross_border_payment_system_2025`\n- `clarity_act_legislative_status_2026`\n- `dora_ctpp_designation_event_2025`\n- `dora_lead_overseer_eba_assignment_2025`\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- `mbridge_operational_volume_post_graduation_2026`\n- `rlusd_ripple_stablecoin_market_metrics_2026`\n- `senate_majority_leader_2026`\n- `us_china_trade_volume_2024`\n- `us_debt_ceiling_2025_2026`\n", "size_bytes": 59267}