Skip to content

M-act-2a — Provider deliverer inbox (provider.last.vet)

Branches: feature/m-act-2a-provider-inbox on last.vet-api + last.vet-provider
DoD: Provider sees and responds to a coordination concern on provider.last.vet (never last1.app admin).
Engine: last1.app remains SoR when last1_* IDs are set. Demo rows without those IDs are labeled demo projection.

Pre-users lane policy (2026-09-16)

Until real orgs/users exist: demo and Meridian proof run on production (api.last.vet + provider.last.vet).
LastVet iOS TestFlight already targets prod. Keep staging in lockstep (same API commit + same Harbor bridge env) so cutover later is not a fire drill.
When real users arrive: invert. Stage first, promote to prod.

Live: API both lanes on feature/m-act-2a-provider-inbox (cd8575c+); Harbor bridge MERIDIAN_HARBOR_PROVIDER_CODE=LV-MEZVC (Test Provider / ryan@last1.enterprises).

Demo provider account

Current (pre-users): reuse ROI Test Provider (ryan@last1.enterprises, code LV-MEZVC) on prod.
Later: Harbor MH Demo plus-alias if multi-org still blocked.

Multi-org: Not supported today (one email → one provider). Parked:
last.vet-provider/docs/gates/PROVIDER_MULTI_ORG_PER_ACCOUNT.md.

Then set on API env:

MERIDIAN_HARBOR_PROVIDER_CODE=LV-XXXXX   # or
MERIDIAN_HARBOR_PROVIDER_ID=<providers.id uuid>

Harbor synthetic matcher id: 00000000-0000-4000-8000-000000000101.

Seed a demo concern (ops)

After migration 063_provider_coordination_inbox.sql is applied:

curl -sS -X POST "$API/api/ops/provider-coordination/seed-demo-concern" \
  -H "Authorization: Bearer $LASTVET_INTERNAL_ADMIN_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"providerCode":"LV-XXXXX","body":"M-act-2a seed concern"}'

Provider test

  1. Sign in to provider.last.vet (dev or prod matching API env)
  2. Open Coordination in the sidebar
  3. See open concern → Send response
  4. Confirm status becomes responded; copy says demo projection if no last1 IDs

Out of scope (this slice)

  • last1.app-admin as proof surface
  • Auto-share / live m1
  • Full last1.app internal respond-by-secret (stubbed; not required for demo-projection DoD)
  • Provider multi-org / Geist

M-act-2b — Start coordination posts Harbor kickoff

iOS Continue on a Harbor match POSTs /api/veteran/me/meridian/coordination/concern before writing the local demo program. Fail loud (no local row) if Harbor is missing or the POST fails.

Harbor walk:

  1. Veteran: Meridian Harbor match → Start coordination → Continue
  2. Provider: provider.last.vet Coordination as Test Provider (LV-MEZVC) → open kickoff → Send response
  3. Veteran: Home Your Turn → open card → pull to refresh → provider reply in the thread