Phase 9 wave 0 — the six-moment Showcase walkthrough (owner-run)¶
✅ PASSED 2026-08-10 — this gate is CLEARED¶
The owner reports the six-moment walkthrough passed against prod. #550 is closed on that report — no agent session observed
coverage.considered == N, and the closing comment says so. The Showcase claim is no longer gated.This does not close Phase 9 (see "After it passes"). The phase exit is the Full-Catalog walkthrough, which the owner is running separately.
The rest of this file is kept as the re-run recipe: if a regression is suspected, run it again rather than reconstructing the steps from a transcript.
Why this file exists. Wave 0 is the only Phase 9 item that cannot be run by an agent session:
phase-9-build-plan.mdrule 8 — "Ghost sessions never mutate prod — ops runs happen owner-side". It has slipped twice because the steps lived in a chat transcript. They live here now.What it closes: #550 (uploaded portfolio rows reach the rollup). Until it passes, the Showcase claim must not be made to an audience (
plan.md, Current Phase).#558 (matrix centroid preflight) was closed 2026-08-04 — but with no closing comment and no linked commit, 3½ minutes after its own status comment said "no matrix run has ever executed against production". Treat it as provisionally closed: still run moment 4, and reopen #558 rather than filing a new issue if it fails.
Next gate after this one:
phase-9-full-catalog-walkthrough.md— the phase exit.
Preconditions — RE-ASSERT, do not inherit¶
The table below is a shape, not a fact: every row was true on 2026-08-04 and several have moved since. Check each one live before you start. The lesson is #638 — a config change was once applied to an image that could not support it, and every health check still looked green.
# 1. What is actually deployed?
curl -fsS https://api.climate-lama.online/v1/info | jq -r '.data.version, .data.git_sha'
# 2. Does that SHA contain the fix you are about to test? (exit 0 = yes)
git merge-base --is-ancestor <fix-sha> <deployed-sha>
| Thing | Check | Expected |
|---|---|---|
| Backbone / worker / beat | /v1/info → version |
0.11.0, git_sha 339f2cd… as of 2026-08-10 — re-check, do not assume. Prod is 7 commits behind trunk d4b2cc5 (the #791/#793/#797/#802/#803/#805 fix run is NOT deployed) |
| Deployed SHA contains waves 4–5 | git merge-base --is-ancestor <wave5-sha> <deployed-sha> |
exit 0 — satisfied since v0.9.0 |
| UI | UI footer or docker ps on the host |
v0.5.0 or newer |
| Alembic | ./dc exec -T api alembic current |
matches alembic heads at that tag |
| RLS flip (#556) | pg_stat_activity + pg_roles |
app connects as climate_lama_app, rolsuper=f, rolbypassrls=f |
| Disk | df -h / on the host |
measure it — it hit 93% once when docs claimed 78% |
Known traps — read before moment 4¶
- ~~Do not read a
baselinecolumn in the matrix.~~ DISCHARGED 2026-08-07. #631 is fixed bycdcc6f4(PR #644, "keep seeded demo hazards out of scenario resolution"), and that commit is contained inv0.8.0— verified withgit merge-base --is-ancestor; it was not inv0.7.0, which is why this trap stood until now. On any deploy ofv0.8.0or later thebaselinecolumn is safe to read. On an older tag it is not — re-check with the command above rather than trusting this line. The 2×3 SSP grid (ssp2-4.5 / ssp5-8.5 × 2030 / 2050 / 2080) remains the core of moment 4 either way. - If the demo data is missing entirely, suspect #729 before anything else. It is closed
but was never root-caused and is intermittent: it makes
scripts/demo.py --seed-onlyexit 1, so a stack can come up unseeded. Identical product code failed the smoke and then passed it (git diff b23b236 d4f46d1oversrc//scripts/is empty). Reopen #729 on a recurrence rather than filing a new issue. - The first matrix run is slow, and that is the fix working. No matrix has ever run against
prod (
jobsholds onlyimpact_calc/data_ingest/report_render, newest 2026-08-04 05:51 UTC), and the seven Aqueduct datasets have 0 exposure-centroid assignments. PR #567's_load_exposures_with_preflightassigns them on demand under an advisory lock per (hazard, exposure) pair. Slow ≠ hung. - Moment 5 (CLIMADA parity sidecar) is not deployed. Skip it; it is not part of #550/#558.
The six moments¶
| # | Moment | Do this | Expected result |
|---|---|---|---|
| 1 | Log in | Sign in with the seeded demo account | Dashboard renders; no error toast |
| 2 | Single run | Configure hazard + region + scenario + horizon, run the impact calculation | Job reaches completed; map + summary render with non-zero EAD/AAI |
| 3 | Portfolio upload (#550) | Create a new portfolio, upload a CSV of N asset rows, open the rollup | coverage.considered == N (not 0 of 0); uploaded rows appear in worst_members; hazard chips no longer read no_members_to_aggregate |
| 4 | Scenario matrix (#558) | Run the 2×3 SSP matrix over the Aqueduct datasets | All 6 cells return EAD/AAI. No cell shows "No exposure rows found with assigned centroids" |
| 5 | ~~CLIMADA parity~~ | skip | sidecar not deployed |
| 6 | Composed ORSA report | Compose the report from the matrix batch | Report renders; no "Report failed — please try again" |
After it passes — DONE 2026-08-10¶
# #558 is already closed — only reopen it if moment 4 fails.
gh issue close 550 --repo CortoMaltese3/climate-lama --comment "Wave-0 walkthrough passed <date>: coverage.considered == N with uploaded rows in worst_members."
All three follow-ups are complete: #550 closed, the wave-0 box in
phase-9-build-plan.md ticked, and the "gated on the owner walkthrough" paragraph dropped
from plan.md's Current Phase section.
Attribution rule for whoever runs this next. The comment template above asserts an observation (
coverage.considered == N). Only write it that way if you ran the walkthrough. An agent closing the issue on a reported pass must say so instead — the 2026-08-10 close reads "Closed on the owner's report that the wave-0 six-moment walkthrough passed against prod on 2026-08-10", and claims nothing it did not see.
Passing this does not close Phase 9. It clears the wave-0 gate and #550. The phase exit
is the Full-Catalog walkthrough, which additionally
needs the ops track (real pack ingests). Its other precondition, ui#100/#101, is cleared
— both shipped in ui v0.5.0 and are live on prod as of 2026-08-07.
If a moment fails¶
Capture the failing job id and docker logs climate-lama-worker-1, open an issue against the
specific moment, and do not waive it a second time — Phase 8 exited under a waived
walkthrough (option A) and that is what produced this wave-0 debt in the first place.