Session handover — 2026-09-02¶
A single question — is the emdash save race still real? — answered by measurement, and
then acted on: it is fixed in 0.35.0, so apps/cms was upgraded and
waterfordcountypainters deployed on it. One deploy in this session broke live WCP and
was rolled back; the cause was ours, not emdash's, and the guard that prevents a repeat
shipped with the upgrade.
Where to look¶
- ADR-0013 — new section "Decision-4 blocker CLEARED". The self-service editability promise this ADR rests on is no longer at risk; the before/after measurement table lives there, along with why the obvious changelog line (#2457) is not the fix.
- known-issues — three changes:
- "Operator editability" under Header / nav menu is closed (was the standing upstream blocker since 2026-07-08).
- new "emdash 0.35.0 rollout" under the CMS fleet section — the mixed-version fleet,
the per-site one-way door (a 0.35.0 worker migrates its D1
050 → 070on first request and a worker rollback does not undo it), the anchor commands, and the two 0.34.0 behaviour changes not yet exercised. - a dated correction on the baked-seed identity entry: "WCP's admin now runs under its own name" is false — it still says garvanbay, because the name is a stored D1 settings row, not the baked seed.
- known-patterns — the "Saved ✓ that never persists" entry is
resolved with the version-pair measurement and a durable lesson about reading the PR,
not the changelog line; plus two new entries (a gitignored file as a load-bearing
build input, and Windows
MAX_PATHbreaking miniflare's D1); plus a correction to the staledev-bypassURL.
What shipped¶
- Commit
2c6b7d8(branchemdash-0.35.0-upgrade) — emdash +@emdash-cms/cloudflare0.28.1 → 0.35.0, lockfile regenerated, and a build-onlyPUBLIC_MEDIA_BASEassertion inapps/cms/astro.config.mjs, in the same place and for the same reason as the baked-seed guard. Proven both directions: refuses with.dev.varsmoved aside, passes against the real file. - WCP deployed on 0.35.0 — worker
bb306aae. Render matches the pre-upgrade capture exactly (20 imgs / 16r2:refs / 12 sections / 0 placeholders); D1 at070with content intact (25 pages / 1 global); admin loads behind Access; one PUT per save, edit persists. - Recovery anchors for WCP, all still valid:
builds/waterfordcountypainters.ie/d1-pre-035-export.sql, Time Travel bookmark00000143-00000000-000050d9-ad2028862ecca8af9edd4e4c097f2152, rollback version1a9d6a45.
The honest parts¶
- The first deploy broke the live site and had to be rolled back. It took WCP from 20
images to 2. The cause was not 0.35.0: the build was made in a
git worktree, which does not carry the gitignored.dev.vars, so Astro inlinedPUBLIC_MEDIA_BASEasundefinedand everyr2:ref died. ThehasMediablock guard then hid the loss entirely — 18 images gone with no loud-fail placeholder. Worse, the identical symptom had been diagnosed locally earlier in the same session and written off as "a worktree artifact, not a regression"; the build then shipped that exact cause. The assertion in2c6b7d8exists so this cannot recur. - The rollback was executed by Cathal, not by the session — the harness blocked the rollback command mid-incident. Worth knowing that recovery may need a human hand on the keyboard.
- The fleet is now mixed: WCP on 0.35.0, everything else on 0.28.1 (i.e. still carrying the save race). That is a deliberate, staged position, not an oversight.
emdash-0.35.0-upgradeis not merged. Until it is,mastersays 0.28.1 while WCP serves 0.35.0 — a rebuild from master would silently downgrade it. Merging is the first item below.- The scorecard was not re-run against the upgraded WCP. Render-neutrality was established by a direct pre/post capture diff of the deployed homepage, which is a narrower claim than a scorecard pass.
- Nothing here touches the Slice-6 critical path. The corpus gate is still waiting on human labels.
Next¶
- Merge
emdash-0.35.0-upgradeinto master (or decide not to and roll WCP back) — the drift is the one actively dangerous item. - Cathal's labels — unchanged as the sole remaining Slice-6 blocker: open
calibration/review.html, label the 15 SHIP candidates, savecalibration/labels.csv, thenfit-calibration→ review → promote only iffitted:trueand precision holds. - Before upgrading any further site, take its D1 export + Time Travel bookmark + rollback version id. garvanbay has none and is the other scorecard reference.
- Fix WCP's admin branding (D1 settings row, surgical — never a reseed).
- Optional: re-run the scorecard on the upgraded WCP to convert "render-neutral by capture diff" into a scored result.