Docs.

Overnight run — 2026-06-10

archive/overnight-2026-06-10.md

ARCHIVED. Session journal. Nothing here is current — see docs/README.md for the live map.

The ask (Brandon, before sleeping): ship the queued work — push, get CI green, cut the release, do the post-release tasks, re-capture the staff guide screenshots, then work the roadmap (everything except re-baselining migrations). "Be autonomous … we're still pre-launch."

⚠️ The one thing that needs you this morning

Prod's database is two migrations behind its code. The 0.9.0 deploy is live on Vercel, but applying its schema to prod was permission-blocked in the autonomous session (twice — I didn't work around it). Run:

supabase db push --linked      # applies 0009 + 0010 to prod

Until then the prod office/portal error on the new status names and missing objects (asset_blackouts, merge_accounts, provision_oauth_account); the public site and launch gate are unaffected. Discovery that matters beyond tonight: the Branching integration never applied migrations to prod at all — prod sat at 0008 through the 0.8.0 release. Every release needs that manual push now; docs/architecture/migrations.md is corrected accordingly.

Two more queued for your judgment (both denied to me, reasonably):

  • Nothing else — everything else either shipped or is noted below.

Released: v0.9.0

  • Pushed the 13 queued commits → CI caught a real gap (the 100% coverage gate on phone-country/schedule-hours — four untested branches; I'd only run pnpm test, not pnpm coverage, locally). Fixed, re-pushed, green.
  • PR #7 merged → v0.9.0 tagged, GitHub release published, prod deployed, develop auto-bumped to 0.10.0-dev. The release carries the seven-stage lifecycle, the create-reservation overhaul, schedules, the overlap guard, per-unit blackouts, and the staff-guide re-captures.
  • CHANGELOG compare-link ladder backfilled (it had lapsed at 0.3.0).

Post-release environment work

  • Dev branch (hjymyeqttajknzjcombd): migration 0010 applied via supabase db push over the session pooler (the direct DB host is IPv6-only from here — recipe now in docs/architecture/migrations.md), and brandon@studio.chat verified as administrator there. Note: the branch DB has schema but essentially no data (no catalog/seed/media) — say the word if you want it seeded.
  • Prod account: was already provisioned (2026-06-03). Memory updated: both envs done.
  • The dashboard still shows the branch as MIGRATIONS_FAILED — stale; the ledger is correct (0001–0010).

Staff guide screenshots

All four re-captured at 1440×900@2x against the current office (local dev

  • synthetic fixtures): the seven-stage lifecycle with fresh ①②③ annotations, the list with the blackouts button, and the new create form (customer matching, country-code phone, hour blocks, autocomplete). The stale-screenshots note is gone and the create walkthrough matches the new form. Your dev server on 3026 was temporarily run with the bypass for these and restored after.

Roadmap work (four builds, each gated + committed separately)

ItemOutcome
Transactional emailsaa68769 — quote/confirmation/receipt on entering quoted/confirmed/settled, bilingual (natural ES), Resend, audited every attempt, skip-path off prod (EMAIL_DRY_RUN overrides both ways), failures never block transitions. Reminder templates ship unwired for the crons.
Inventory Phase-182ab217 — the roadmap was stale: 0005 already made the DB canonical and item forms were live. Shipped the real gaps: in-place asset editing (+ condition notes), export csv mirror, e2e pinning the audit-trigger contract.
Cron jobs1b9e382/api/cron/expire-holds (hourly; week-old holds → cancelled per §2.4), /reminders (08:00 Bogotá, T-1 pickup/return emails, idempotent), /overdue (13:00 Bogotá, advisory late-fee flag, never charges). Set CRON_SECRET in the Vercel project env to arm them.
Kits✅ — CRUD at /office/kits (membership = kits.item_lines jsonb; bundle_items turned out to be a different model) + picker integration: a kit is a shortcut, not a priced product — it expands into per-item cart lines capped at available units; createReservation untouched. Bundled-rate kit pricing left as an explicit product decision.
Customer detail pageAlready built — the roadmap claim was stale; corrected.
Sync-alerts surfaceObsolete — sync_errors/sync_events died with the sheet sync in 0005; marked.
Payments (Stripe)Blocked on credentials — no Stripe keys exist in any env. Untouched.

Verification state

Every commit passed tsc, eslint, pnpm coverage (100% gate), and the e2e suite against the live local stack. Test counts grew 139 → 196 unit / 26 → 44 e2e over the night.

Smaller corrections

  • docs/architecture/migrations.md — manual-push reality in every env.
  • Roadmap items 1/7 + the customer-detail "Scaffolded" entry — corrected.
  • Memories updated: Branching truth (+ prod push pending), brandon accounts done both envs, auth-config note unstale.

Suggested next

  1. supabase db push --linked (the morning item above).
  2. Set CRON_SECRET in Vercel (and decide whether previews should run crons at all — they're gated to prod-only sends anyway).
  3. Sign in to the prod office once after the push — first Google sign-in links your auth.users row to the provisioned account.
  4. Decide on dev-branch seeding (catalog + media) if previews should look real.
  5. Kit pricing as a bundled-rate product — deliberate scope cut tonight; kits expand to per-item lines for now.