Skip to content
prod 352bb92
Browse

2 · Launch signoff — tiered go/no-go

Objective — make the Phase 12 launch-readiness decision tiered so a small cosmetic gap never blocks the production cutover and a real blocker always does — Tier 1 must be 13/13, Tier 2 proceeds with documented exceptions, and Tier 3 is completed or tracked in Zaj-BACKLOG.md.

Steps at a glance:

  1. Confirm Tier 1 blockers (must be 13/13) — If any of these fail, do not launch.
  2. Review Tier 2 — important (launch with documented exceptions) — Runtime version current, all PHP extensions loaded, storage writable, symlinks created, config/route caching succeeds, no JS console errors, email delivery confirmed, every critical route responds, log rotation configured.
  3. Review Tier 3 — nice-to-have (complete or backlog) — Static analysis clean, dependency audits clean, performance score above target, dev-only profiling disabled in production, chat-alert integration wired, page load under 3 seconds.

The decision is tiered on purpose. Tier 1 is non-negotiable; Tier 2 can ship with a written exception; Tier 3 is nice-to-have. That separation keeps a minor gap from blocking a launch while guaranteeing a real blocker always stops it.

1. Confirm Tier 1 blockers (must be 13/13)

Section titled “1. Confirm Tier 1 blockers (must be 13/13)”

If any of these fail, do not launch.

  1. Verify all 13 blockers pass.

    #ItemCheck
    1Launch-candidate runs the committed codeDeployed commit hash matches
    2APP_DEBUG=falseLaunch-candidate .env
    3APP_ENV matches the environment rowLaunch-candidate .env
    4APP_KEY set & secureStarts with base64:
    5Database connectedphp artisan db:show
    6All migrations appliedmigrate:status all “Ran”
    7Registration worksLaunch-candidate signup path verified
    8Login worksLaunch-candidate login path verified
    9Payment flow worksTest/sandbox charge and refund pass now; production live charge/refund is a Phase 12 human gate
    10HTTPS enforcedHTTP redirects, HTTPS 200
    11.env not publicly reachableRequest returns 403/404
    12Error tracking receivingTest exception appears
    13Uptime monitoring activeMonitors green
    • ✅ All 13 Tier-1 items pass — Phase 12 is not blocked. Also confirm Phase 10 handoff areas are still green: consent banner enforced, Privacy/Terms/Cookie/Refund published, production live-charge/refund is named for Phase 12, and security headers match the Phase 7 canonical set.

2. Review Tier 2 — important (launch with documented exceptions)

Section titled “2. Review Tier 2 — important (launch with documented exceptions)”

Runtime version current, all PHP extensions loaded, storage writable, symlinks created, config/route caching succeeds, no JS console errors, email delivery confirmed, every critical route responds, log rotation configured.

  1. Confirm each Tier 2 item or document the exception.

    • ✅ Every Tier 2 item is green, or each gap has a written, accepted exception.

3. Review Tier 3 — nice-to-have (complete or backlog)

Section titled “3. Review Tier 3 — nice-to-have (complete or backlog)”

Static analysis clean, dependency audits clean, performance score above target, dev-only profiling disabled in production, chat-alert integration wired, page load under 3 seconds.

  1. Complete or track the Tier 3 items, then sign off.

    • ✅ Tier 3 items are completed or knowingly tracked in Zaj-BACKLOG.md as post-launch non-blockers, and a person has signed off on the launch.

Do not mark this step done until every box below is checked.

  • 🔀 Tier 1 is 13/13 — all readiness blockers pass; if any fail, do not enter Phase 12. Blocker 9 has launch-candidate test/sandbox proof now and a 👤 Phase 12 production live-charge/refund gate.
  • 🤖 Tier 2 resolved — green or documented exception for each item.
  • 🤖 Tier 3 handled — completed or knowingly tracked in Zaj-BACKLOG.md as post-launch non-blockers.
  • 👤 Phase 12 signed off — a person has made the go/no-go decision to enter production cutover.