Skip to content

KB: frameworks/mdg-storms/2024-12-13.md (Claude draft, Opus-reviewed) - #604

Merged
t-downing merged 1 commit into
mainfrom
kb-ingest/frameworks-mdg-storms-2024-12-13.md
Sep 17, 2026
Merged

t-downing merged 1 commit into
mainfrom
kb-ingest/frameworks-mdg-storms-2024-12-13.md

Conversation

@chd-ds-kb-steward

Copy link
Copy Markdown
Contributor

Auto-drafted frameworks/mdg-storms/2024-12-13.md via headless Claude on the Max plan, then reviewed in place by Opus against the template + public sources (the same QA gate as the interactive ingest). The Opus review summary is below — use it to spot-check and merge. Worth confirming yourself: frontmatter conforms to the template, deployment/jobs match reality, source_repo/branch/sha, depends_on.


🤖 Opus pre-review

Verdict: Ready to merge — the drafted change was a freshness re-stamp only; I re-verified the page's substantive claims end-to-end and made two small fixes (one schema conformance, one anti-misreading clarification).

Checked:

  • What the draft actually changed: only date stamps — last_synced 2026-08-31→2026-09-07 and three "snapshot 2026-08-30"→"re-verified 2026-09-07" phrasings. Confirmed the claim is true: infrastructure/pipeline-registry.md was regenerated today (commit 43e81fa, 2026-09-07 07:05 UTC) and still shows gha:ds-aa-mdg-monitoring/run_monitor_imerg.yml 🔴 DOWN, last success 3566.9 h ago ≈ 11 April 2026 — matches the page exactly.
  • Repo code at source_sha: a99828b (public OCHA-DAP/ds-aa-mdg-storms, cloned; a99828b is current HEAD, no drift). Every code claim confirmed verbatim: constants.py THRESHOLD_SPEED_OPT1=118, OPT2=166, buffer=100; rsmc.py "moz" in the raw path vs "mdg" processed + the "ISO 3166-2:MZ" docstring; no .github/ dir at all (the [gap] on no live pipeline); README is a 19-line stub.
  • Return periods (the page's [conflict] entry — all reproduced from cell outputs): 04.0 readiness MG_distance_km<=100 & max_wind_kt>=90 & lt_hour.between(72,120) → the exact 7 storms listed (BATSIRAI, BELNA, EMNATI, ENAWO, FREDDY, GAMANE, GIOVANNA), output "met every 2.0 years"; 04.0 action from IBTrACS SEASON>=2001 & REU_WIND>=90, action_yr_len=24, rate 0.333; 01.6 cell 24 uses df_rsmc['season'].nunique() while cell 25 uses 2024-2010+1, output "every 1.5 years", and cell 27 returns exactly the 10 named storms. Also confirmed the two union RPs (1-in-3.0, 1-in-3.2), that probability_intersection = |A∩B|/|A∪B| (Jaccard substituted for P(A∩B)), and that the three-way figure is built from common_cyclones (an intersection) unioned with rainfall — the page's critique is exact. utils.classify_scenario IDP bands (1,000–10,000 / 10,000–25,000 / >25,000) ✓; 02.2 "assuming 28 years", Scenario 3 count 9 → 3.111 ✓; 03.2 threshold = 300 with # we want to get 7 storms so fine tuning this ✓.
  • Framework doc claims against raw/frameworks/mdg-storms/2024-12-13.txt: readiness "120-72 heures" / action "72 heures", both at ≥166 km/h within 100 km; footnote 2 lead-time definition; monitoring "entre le 1 novembre et 30 avril"; "les deux saisons cycloniques de 2024/2025 et 2025/2026"; Start Network >166 km/h/100 km/3 days and Red Cross 118 km/h; Batsirai/Emnati ~470,000 USD (370,000 GBP) / 250,000 people and ~1.2M USD in 2023-24; the action-without-readiness clause.
  • Gezani activation (public): triggered 9 Feb 2026 on Météo-Madagascar forecasts; US$3M CERF to six agencies, >93,000 people; ~US$900,000 released one day ahead of landfall (distinct figure, confirmed again); landfall 10 Feb ~17:30 UTC near Toamasina as an intense TC, MFR 10-min peak 195 km/h — Anticipation Hub, OCHA FU No.1, WFP, UNICEF FU #3, Wikipedia. Mozambique's separate US$4.5M cross-check agrees with frameworks/moz-cyclones/2026-01-09.md.
  • Fytia near-miss: MFR 10-min peak 155 km/h, classified tropical cyclone (not intense), landfall 31 Jan near Baie de Baly/Soalala; US$2M CERF rapid response for Soalala + Marovoay (Wikipedia, OCHA Fytia/Gezani flash updates) — the page's "did not fire, correctly" reading holds.
  • Conformance/consistency: all template headings present, Per-country variants correctly dropped; n_windows: 2 = 2 table rows; funding_by_source/by_sector/by_agency/funding_rows each sum to exactly 3,000,000 and reconcile on every axis; YAML parse gate passes; check_links.py clean; gen_catalog.py regenerates with no collateral diff.

Changed:

  • apps: []surfaces: []apps: is the retired key (D102, INGESTION.md); the template requires surfaces. It was empty, so no published URL was at risk. (Note: ~10 other framework pages still carry apps: — a repo-wide sweep, out of scope here.)
  • Historical activations → Fytia bullet: added one clause warning that the 185 km/h figure widely quoted for Fytia is 1-minute sustained (JTWC/Saffir–Simpson), while the framework's 166 km/h threshold is on the 10-minute standard on which Fytia peaked at 155 km/h. Without this, a reader meeting the 185 km/h number could wrongly conclude the Scenario-3 threshold was met and the framework failed to fire.
  • No other corrections needed — every sourced and repo-code claim I tested was accurate, including the previously contested ~US$900k figure.

Still verify:

  • valid_until: "2026" (resolves to 2026-12-31) vs the doc's coverage, which ends with the 2025/26 cyclone season on 30 April 2026. 2026-04 would be more faithful and would make check_validity.py prompt the renewal decision now (the envelope is spent — all_in, fired Feb 2026). I deliberately did not change it: sibling moz-cyclones/2026-01-09.md uses the identical bare-year convention for the same season-span wording, so this should be a deliberate sweep across cyclone frameworks, not a one-page edit. Human call.
  • visibility: internal while framework_doc is a public ReliefWeb PDF and the activation is publicly reported. Internal is the KB's default-when-unsure and 30 of 43 framework pages use it, so I left it — worth a one-off decision.
  • "Both windows fired" for Gezani rests solely on the CHD team (@t-downing, PR KB: frameworks/mdg-storms/2024-12-13.md (Claude draft, Opus-reviewed) #242); public sources document only the 9 Feb activation for Madagascar. Unchanged, and correctly labelled as such on the page.
  • The three open funding questions remain open and correctly flagged: whether the remaining ~US$2.1M was disbursed post-landfall, the unquantified German co-financing WFP credits, and whether the (unfinalized) observational indicator informed the Fytia rapid-response allocation. All need the country office/CERF, not a web source.
  • ReliefWeb's API now requires a pre-approved appname (v1 decommissioned; v2 returns 403 with both ds-kb-qa and the repo's ocha-ds-knowledge-base), and unocha.org report pages still 403 automated fetches — so OCHA flash updates were verified via search-result excerpts and mirror sources rather than direct fetch. Worth checking whether scripts/gen_framework_extracts.py's ReliefWeb rung is silently skipping in CI for the same reason.

Closes #580

@chd-ds-kb-steward chd-ds-kb-steward Bot added the kb-ingest Claude-drafted KB page awaiting review label Sep 7, 2026
@t-downing
t-downing merged commit 4294724 into main Sep 17, 2026
2 checks passed
@t-downing
t-downing deleted the kb-ingest/frameworks-mdg-storms-2024-12-13.md branch September 17, 2026 15:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kb-ingest Claude-drafted KB page awaiting review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

KB: framework PDFs due for a version re-check

1 participant