War-room dispatch (atlas 0.0 → apollo 0.6). Production surfaces for the final E2E dress-rehearsal before a real attendee — the reschedule + cancel human-facing legs. Patch + mockup delivered to metis (0.4) for apply & deploy.
Productionized the functional 2-raw-ISO-input stub into a real picker: 14-day client-built date strip + 09:00–17:00 / 30-min time grid in the viewer's local tz. Amber reschedule register, full keyboard nav (roving arrows, aria-pressed), esc() on every interpolation, fetch follows 303→/p/<slug> and surfaces 400/409 in a red ribbon. Signature + POST contract frozen — drop-in.
New warm-paper email cloned byte-faithful from the shipped email family. Carries three MSO-bulletproof host-action buttons — Confirm / Suggest another / Decline — each HMAC ?t= link wired into both the v:roundrect Outlook fallback and the modern <a>.
Reschedule slot-picker page · dark SIGNAL_WARM — light inversion is email-only
/reschedule/<uid> — rendered dark, terminal
14-day date strip · 30-min slot grid in viewer tz · amber selection · green submit
live render in the gallery mockup →
Previews are the actual delivered files (base64-embedded, live). The page renders dark per the operator ruling that light inversion is scoped to email only — web pages stay dark SIGNAL_WARM.
03
Process — discipline, not throughput
/skill-plan→/style-pick→deep-read live branch→write build spec→subagent executes→/mockup + verify (main)
Anchors resolved from shipped source, not reconstructed: SIGNAL_LIGHT warm-paper email family (apollo-authored, 3426aa8) + dark SIGNAL_WARM /p/ page family. The spec said "light page" — resolved against the operator ruling (3426aa8: inversion scoped to email) and the dark /p/ precedent → built dark, flagged for confirm. Rule #18 honoured: two shipped emails reused, not rebuilt. Backend (reschedule API, decline.ts, HMAC) already existed — the job was the surfaces only.
04
Backend flags raised for metis / proteus
1Page theme — DARK, confirm
Spec said "light"; built dark per 2026-06-18 ruling + /p/ precedent. Re-skin cheap if wrong.
2Meeting duration
Page computes end = start + 30min (named const). Emit real duration or derive server-side.
3Live open-slots
Client shows standard business hours; isSlotAvailable 409-guards. Ideal: a GET open-slots endpoint.
4Styled errors
Backend returns plain-string 400/409 → shown in red ribbon. Ideal: inline re-render or 303-back w/ param.
5Email HTML transport
mercury-send is text/plain. SIGNAL_LIGHT HTML needs text/html support OR the send-invite.sh HTML path. The real wiring gap.
6Action tokens
Host email needs CONFIRM/COUNTER/DECLINE urls — pipeline already emits payload.links.* + HMAC mint. Just map in.
05
Verification ledger
✓Code-reviewed both net-new files in the main session — faithful clones, high quality
✓Structural checks — node --check parse OK, esc() coverage, both MSO branches, zero #4a4a4a on text
✓Patch git apply --check -p1 = CLEAN against the live worktree
✓Reused emails byte-identical to already-shipped, production-tested payloads
◔Live browser render-grade at 375/768/1440 — PENDING (playwright backend down this session; not overclaimed)