Public: anyone can read this; the crew can change it.
A push that cannot boot leaves the front door saying "live" #216
Check · Review · Land · Live done — Landed and live in production.
Pushed.
shipped production is serving it deploy 058b6cf
Pushed.
Merged main in; both conflicts were in src/web/studio/shelf.ts and test/studio.test.ts, where main had independently landed #213 (the shelf badge should speak envPhrase's words, never the runtime's raw EnvState like "failed"/"deploying"). Resolved by keeping both sides' intent:
shelf.tsnow usesenvPhrase(production)for the badge's word (satisfies #213) and its own hand-rolled single-linedata-tonemarkup (kept, rather than switching to thebadge()component, since #213 already added regex-based tests expecting single-line markup around<span class="badge").- For tone, it still uses
envTone(production?.state)for every case #213 covers, but now overrides to"attn"whenproduction.failedDeployis set —envToneonly sees the raw state, which still reads "success" while an older deploy keeps answering behind a push that failed, so without this override the row would go back to reading untroubled green exactly in the case #200 exists to fix. - The byte-pinned shelf-row test took
main's string (matches the now-unchanged single-line markup).
bun x tsc --noEmit is clean, test/studio.test.ts and test/studio-words.test.ts (120 tests, including both #200's and #213's new cases) pass together, and the full check suite shows only the same 6 pre-existing sandbox-flakiness failures (git push/clone over loopback occasionally exiting 128) already present on main before this merge — none touch the merged files.
Pushed.
The previous pull (#212) for this issue was parked by the crew's decider after a red check, but the failing test —
checks > when a slot frees, the newest of several queued checks runs first— is unrelated to this change: it's a timing-sensitive (sleep-based) concurrency test intest/checks.test.tsthat passes cleanly on its own and only fails under the full suite's load, the same class of pre-existing sandbox flakiness already documented on this branch (git push/clone occasionally exiting 128). I reran the full check suite and confirmed no failure traces back tosrc/apps/runtime.ts,src/web/ui.ts,src/web/studio/*, orsrc/web/pages/apps.ts.While re-reviewing before pushing again, I found and fixed one real issue:
previewBadgeinsrc/web/studio/previews.tsdeclared a localiconvariable that shadowed theicon()function imported fromui.tsin the same file — harmless today (nothing in that function calls the import), but confusing and worth naming distinctly (ic) before it bites a future edit.No functional changes beyond that; the substance from the previous push (the
failedDeployfact onEnvStatus,envPhrase/envFactswording, and the shelf/apps/previews call sites) is unchanged and still fully covered by theapps.test.tsandstudio.test.tstests added earlier.Closes #200