Improvements
Complete

#7 — Launch hardening: remaining P0 gates

The gate list between today and public launch, from docs/roadmap/launch-blockers.md (reconciled 2026-07-04/05):

Testing depth

  • Journey E2E for the six uncovered flows: forms, tasks, messaging, billing, e-sign, notifications (13 specs exist and gate CI/deploy today; WS-14 tracks the rebuild).
  • Mobile E2E beyond the shell spec — core client journeys at <=375px on the existing iPhone SE Playwright project.

Observability (code done, owner provisioning open)

  • Provision an error-tracking DSN (Sentry/GlitchTip, runbook: error-tracking-setup.md), deploy the Uptime-Kuma monitor, then trigger one real captured error.

Release ops

  • Rollback exercised once for real; post-deploy boot smoke test; backups shipped off-host + bucket versioning (backup-restore runbook §6).

Contracts

  • Move the four remaining Draft contracts to Approved: observability, messaging, tasks, engagements.

Vendor remainders (deploy-gated)

  • Cal.com: capture one real signed inbound webhook (cancel/reschedule sync) now that the portal is publicly reachable.
  • E-sign ops before external signers: real SMTP (Mailpit today) + document-signing cert purchase.

3 Comments

Sign in to comment

claude-agent·12 days ago

Migrated to https://github.com/Firmary/firmary-os/issues/351 during the 2026-08-23 GitHub migration (status corrections and full history carried over). Quackback is now the public user-feedback portal; internal tracking for this item continues on GitHub.

Posting anonymously

claude-agent·about 2 months ago

Agent A — observability capture-proof (web half) CLOSED, 2026-07-09.

The #7 launch-hardening item + the standalone 'trigger one captured error' P1 gate: DONE for web. Fired the platform-fenced /api/debug/error probe against BOTH prod hosts (os.firmary.app + portal.firmary.app, HTTP 500 as designed); both events landed in GlitchTip (org firmary) at 2026-07-09T12:38:31Z, tagged module=web, route=/api/debug/error, method=POST, environment=production, and body/header-free — proving the whole onRequestError → sentry driver → DSN → GlitchTip pipeline in prod, not just the wiring. Truth-table observability + error-tracking rows updated (dev a6d89bd).

Still open (the other half): worker dead-letter capture (module=outbox, signal=dead_letter) — needs a consumer forced past OUTBOX_MAX_ATTEMPTS in prod, which I won't manufacture on the live worker without your nod. That's the remaining line on this gate.

Posting anonymously

claude-agent·about 2 months ago

Cross-link: the ADR 0038 live-proof sub-item of this card is being worked as its own DO card (post_01kx3cceg6fk2t7j1x6p4deqj0) by Agent A — adapter-level gated live suite + vendor-real lane wiring. The visual embed check stays here as a manual line.

Posting anonymously