Skip to content

Gate 0.5 — exit checklist

Updated: 2026-07-23
Spec: lastvet-gates/gates/GATE_0.5_hardening_and_proof.md

Gate labels (do not conflate)

Milestone Status Date Meaning
Gate 0 EARNED 2026-07-21 Production E2E proof on AWS: hardened TestFlight human leg + facilities/ROI/OTP/revoke loop against api.last.vet. Evidence: E2E_RUN_LOG_2026-07-15.md (A1 scripted + human on AWS), E2E_RUN_LOG_2026-07-21_VA_PARALLEL_TRACK_HUMAN.md (P0 parallel-track human).
Gate 0.5 exit COMPLETE 2026-07-23 All twelve Gate 0.5 exit items below satisfied. Hardening, ops, legal prep, and consent revocation client proof closed. Gate 1 sandbox may begin.

Gate 0 is the product proof. Gate 0.5 exit is the twelve-item hardening checklist that wraps it. Earning Gate 0 did not wait on D11/D12; closing Gate 0.5 did.


Exit items (12/12)

# Item Status Evidence / notes
A1 Scripted + human E2E run log E2E_RUN_LOG_2026-07-15.md — scripted + Ryan TestFlight on AWS api.last.vet.
A2 Bearer JWT harness e2e-roi-gate0-full.sh pass 2026-07-15 on AWS; CloudWatch OTP; defaults off .railway.app.
A3 Facilities leg (live open-data key) verify-facilities-sd.js → 11 facilities, 0 missing anchors (facilities-sd-verification.log, 2026-07-15).
A4 Grant revocation proof (dual grants) 2026-07-23 TestFlight: Edit Access (grant_amended), Revoke all (no 500 after audit migrations 054–056), single-grant Revoke Access, pull-to-refresh. iOS 21695a7 + prod API 9282ab4. API: 052/053, tests/dual-grant-revocation.test.ts. 409 survivor path untested on prod (single merged grant); primary path Revoke all verified. Spec: docs/api/DUAL_GRANT_SPEC.md.
B4 Build secrets in Bitwarden SM BITWARDEN_AUDIT.md — core LastVet keys present. SENDGRID_API_KEY, GOOGLE_OAUTH_CLIENT_SECRET gaps not Gate 0.5 blockers.
B5 Prod DB migrations 042/043 + 046 batch 042/043 on prod; 046048 + lastvet_app cutover prod 2026-07-11 (TRACK3_PHI_RLS_PLAN.md).
B6 TestFlight Bearer JWT on device E2E_RUN_LOG_B6_TESTFLIGHT.md — full loop on physical iPhone.
B7 Pentest remediation status note docs/security/SECURITY_PENTEST_STATUS.md (2026-07-11). docs/security/SECURITY_POSTURE_DATABASE_ACCESS.md (2026-07-16).
C8 Remove VA API matrix from veteran onboarding plannedAPICard removed from OnboardingFlowView (2026-07-11).
C9 SMS OTP ship or defer Explicit defer: DECISIONS.md (email OTP is production path).
D10 Hogan Lovells Part 2 copy lock 🟡 Tracked, not signed Copy parameterized in app; not counsel-locked. Per spec: flagged-and-tracked satisfies Gate 0.5 exit. Blocks real veteran pilot, not Gate 1 sandbox. HL engagement in flight.
D11 Gate 1 threshold doc Closed 2026-07-16. docs/planning/GATE_1_THRESHOLD.md → canonical lastvet-gates/gates/GATE_1_TRACTION_THRESHOLD.md.
D12 VA production access tracker Closed 2026-07-16. docs/compliance/VA_PRODUCTION_ACCESS_TRACKER.md — case #00015000, timeline, cadence.

Summary

Bucket Done Open
A — Prove Gate 0 4/4
B — Ops & security 4/4
C — Veteran IA 2/2
D — Legal & Gate 1 prep 3/3 D10 tracked-not-signed (exit OK; pilot blocked)

Gate 0.5 exit:Complete (2026-07-23).
Gate 1 sandbox: ENTERABLE (OS mechanics per lastvet-gates/gates/GATE_1_sovereign_profile_and_os.md).

Still blocks real veteran pilot (not Gate 0.5): D10 HL Part 2 copy lock; VA production case #00015000 IN REVIEW.


Infrastructure — Railway LastVet rollback net

Item Status Evidence
Railway prod teardown 2026-07-15 last.vet-api + postgres-lastvet-prod deleted. pg_dump: backups/railway-lastvet-prod-2026-07-15.dump (gitignored, local).

Parallel track — VA production readiness

Not Gate 0.5 exit criteria. Required before Gate 1 production pilot; does not block Gate 0 earn or Gate 1 sandbox OS build.

Item Status
P0.1–7 + Phase B ✅ Shipped 2026-07-15–16
Inbox OTP harness (Appendix B) ✅ Proven prod 2026-07-16
SECURE_LINK_E2E_LOG_OTP teardown ✅ Done 2026-07-16
Scripted parallel leg E2E_RUN_LOG_2026-07-16_VA_PARALLEL_TRACK.md
Human parallel leg E2E_RUN_LOG_2026-07-21_VA_PARALLEL_TRACK_HUMAN.md

Parallel track exit: ✅ Complete (2026-07-21).


Post–Gate 0.5 (not blocking exit)

  • RLS batch 2 (plan only — docs/runbooks/gate-0.5/GATE_0.5_STATUS.md § below in prior rev; see TRACK3)
  • Shannon pentest retest (plan only)
  • Prod clinic owner MFA before CLINIC_REQUIRE_OWNER_MFA=true on prod

RLS batch 2 — PLAN ONLY

Scope: veterans, consent_grants, secure_access_links, coordination tables with veteran FK. Effort: ~2–3 days. Does not block Gate 0.5 exit.

Shannon pentest retest — PLAN ONLY

Trigger: After RLS batch 2 on staging. Effort: External + ~1 day engineering support.