apollo / session-manifest / 2026-06-28

meet.boas.dev — scheduling arc legs 5–6

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.

Board #8 Themis-PMEpic #136 Forward Scheduling Commit 01ca636Build model inline-spec → subagent exec Theme ruling 2026-06-18 (3426aa8)
6
files delivered
2
net-new surfaces
2
shipped, reused
6
backend flags raised
01

Build manifest

Reschedule slot-picker page — dark SIGNAL_WARM
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.
functions/lib/reschedule-request-page.ts  ·  + reschedule-request-page.patch (git apply --check CLEAN)
new · patch291 ln
Booking-notification host email — SIGNAL_LIGHT + HMAC actions
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>.
services/sched/email-templates/html/host-reschedule-request.html (net-new — ship file)
new106 ln
Reschedule-confirmation email (attendee, on host-confirm)
Already shipped (3426aa8, apollo-authored SIGNAL_LIGHT). Was→Now amber block. Confirmed as the production payload — reused, not rebuilt (rule #18).
services/sched/email-templates/html/reschedule.html
reuse79 ln
Cancellation-confirmation email (attendee)
Already shipped. Red rail, struck "was scheduled for", "Book a new time" CTA. Confirmed — reused, not rebuilt.
services/sched/email-templates/html/cancellation.html
reuse72 ln
Combined surface mockup + this manifest
Gallery artifact rendering all four surfaces side-by-side with sample data, plus this session manifest. → live gallery
projects/meet-boas-dev/arc-5-6/arc-5-6-mockup.html (573 ln) · session-summary.html
gallery
02

Live previews — the email surfaces

Host notification · 3 HMAC actions
Reschedule confirm · attendee
Cancellation · attendee
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)