Skip to content

Gate 1 — Radio Check slice 2 (LastVet OS → last1.app bridge)

Status: Tracked next slice — not urgent until WIN org onboarding needs org-side engagement visibility.
Priority: After Phase B crisis-stub device verification (safety) is signed off on TestFlight.


Problem

Gate 1 Phase A/B records categorical Radio Check responses in lastvet-db (radio_check_events).
last1.app org admin and member surfaces read different tables:

last1.app surface Source today LastVet OS events?
Check-ins Pending/Completed last1_outcome_check_ins No
Beneficiary Recent Check-ins last1_outcome_check_ins No
Radio Signals tab Legacy RadioCheck app / SMS (last1_radio_check_instances, etc.) No
Member /member/check-in check_in_signals No

Veteran taps in LastVet iOS do not appear in last1.app until a bridge exists. This is expected for slice 1; not a bug.


Why build it (WIN-relevant, not blocking today)

  • One clock intent (LOOP_LEDGER_AND_PROOF_MACHINE_SPEC.md): org ledger should reflect the same weekly cadence veterans see on LastVet Home.
  • Active veteran metric (GATE_1_TRACTION_THRESHOLD.md §3): org dashboards benefit from ≥3-of-4-week visibility tied to Last1 identity.
  • WIN pilot: becomes valuable when Michelle/onboarding is live and org admins need engagement signals for enrolled beneficiaries.

Not urgent while WIN has no onboarded cohort checking in via LastVet.


Out of scope for slice 2

  • Replacing legacy RadioCheck SMS app pipeline wholesale.
  • Full Section 2 crisis handoff UI (Phase C / Mic sign-off).
  • Duplicating org coordination loop SoR (still last1.app for program loops per GATE_2_coordination_loop.md).

Proposed shape (when prioritized)

  1. Emit on respond (last.vet-api): after check_in_responded append, POST PHI-free payload to last1.app internal API keyed by last1_identity_id:
  2. response: ok | struggling | need_support (enum only)
  3. cycle_key, occurred_at, source: lastvet_os
  4. last1.app ingest: map into org-visible ledger (extend unified check-ins / Radio Signals read path, or new lastvet_radio_check_signals table — design at implementation time).
  5. Member read-back: veteran logged into last1.app sees recent LastVet OS check-ins (read-only mirror or link to LastVet app).
  6. Org admin: beneficiary profile + Radio Signals (or dedicated LastVet OS filter) shows same events for enrolled members.

Crisis discipline carries: no free text, no distress content in payload; need_support is categorical only.


Dependencies

  • Stable Last1 ID link on veteran row (veterans.last1_identity_id) — same as coordination read path.
  • last1.app internal auth (existing LAST1APP_* server secret pattern used by coordination BFF).
  • WIN org enrollment linking beneficiary ↔ Last1 identity (already live for coordination).

Definition of Done (draft)

  • [ ] Prod respond on LastVet iOS creates row visible on org beneficiary profile within one request path.
  • [ ] Member portal shows veteran's own LastVet OS check-in for current cycle (read-back).
  • [ ] Legacy Radio Signals (29 SMS rows) remain distinct; LastVet OS rows labeled lastvet_os (or equivalent).
  • [ ] No PHI in cross-system payload; crisis enum only.
  • [ ] Runbook + rollback documented.

  • RADIO_CHECK_SLICE_1.md (Phase A/B — shipped)
  • lastvet-gates/LOOP_LEDGER_AND_PROOF_MACHINE_SPEC.md
  • lastvet-gates/gates/GATE_1_TRACTION_THRESHOLD.md §3