Gate 1 — Status/Progress slice 1 (iOS)¶
Gate: Gate 1 sandbox OS (Status/Progress activation)
Stack: R940 — api.last.vet client; no API or migration changes
VA data: Sandbox until VA production case #00015000 clears
Scope¶
| Deliverable | Detail |
|---|---|
| StatusProgressSection | Home card after coordination block (Your Turn / Pipeline / Completed) |
| ProfileCompletenessCalculator | Activated on Home; item 3 Last1-aware ("Veteran verification") |
| Tests | ProfileCompletenessTests — Last1 path, VA path, partial completeness |
| Runbook | This file |
Explicitly not in scope: Your Loops, Missions, last1.app Radio Check bridge (Phase E).
Home placement (coordination-first)¶
Welcome header
RADIO CHECK
YOUR TURN / Pipeline / Completed
STATUS / PROGRESS ← this slice
FIND CARE
Service Matches
Community
Status/Progress is a supporting card (Gate 0 UI addendum). Coordination stays the headline.
Completeness model (5 items)¶
| Item | Complete when | Profile alignment |
|---|---|---|
| VA health record | Patient Health capability ready or manual identity fallback | Profile "VA health record — connected" |
| Service history | VSH&E ready or local service history / branch | Profile service history |
| Veteran verification | Last1 Title 38 or VA verification capability or veteranStatusConfirmed |
Profile veteran status + VA verification lines |
| Health record sync | lastVASyncAt or clinical data in SwiftData |
Record sync |
| Profile basics | Call sign + email | Profile identity |
Last1-first detail: When Title 38 confirmed without VA OAuth, item 3 shows "Verified via Last1 ID" and counts complete.
Percent: Equal weight across five items. No server persistence.
Visibility¶
| Session | Home behavior |
|---|---|
| Not authenticated | Section hidden (onboarding) |
| Authenticated, not verified | Compact card: "Complete verification to unlock your profile progress meter." No fake %. |
Verified (isVeteranVerified) |
Full meter + checklist when < 100%; compact success at 100% |
Data sources (client only)¶
- SwiftData:
VeteranProfile,HealthRecord AuthManager.vaCapabilities(same source as Profile VA Connections)AuthManager.isVeteranVerified(Last1 Title 38)VAConnectionStatusshared helpers
iOS files¶
| File | Role |
|---|---|
LastVet/Features/OperatingSystem/StatusProgressSection.swift |
Home UI |
LastVet/Features/OperatingSystem/ProfileCompleteness.swift |
Calculator + Last1-aware item 3 |
LastVet/Features/OperatingSystem/OperatingSystemShellView.swift |
Wire section after coordination |
LastVetTests/OperatingSystem/ProfileCompletenessTests.swift |
Unit tests |
Build and test (local)¶
cd last.vet-ios
xcodebuild test \
-scheme LastVet \
-destination 'platform=iOS Simulator,name=iPhone 16' \
-only-testing:LastVetTests/ProfileCompletenessTests
Device verification (TestFlight)¶
Account: Last1 curryrg@gmail.com
Veteran id: 8daac85a-87fb-428f-bc16-738bbfd3504f
Checklist¶
- Home scroll order: Radio Check → Your Turn → Status/Progress → Find Care.
- Status card shows live % from real session state (not static stub).
- Item 3: Veteran verification with "Verified via Last1 ID" when Title 38 confirmed.
- Incomplete VA rows (health record, sync, etc.) show open circles and honest < 100%.
- Continue in Profile switches to Profile tab.
- At 100%: compact "Profile connections ready" (checklist collapsed).
- Profile VA Connections lines match Home item 1 / VA verification capability for same session.
See last.vet-ios/docs/testflight/BUILD_83_STATUS_PROGRESS.md.
Related¶
docs/runbooks/gate-1/RADIO_CHECK_SLICE_1.md(prior Gate 1 OS slice)docs/runbooks/gate-1/RADIO_CHECK_SLICE_2_LAST1APP_BRIDGE.md(next bridge — not urgent)lastvet-gates/gates/GATE_0_UI_ADDENDUM.md(Status supporting card rule)lastvet-gates/gates/GATE_1_sovereign_profile_and_os.md
Queue after this slice: Your Loops → Missions → last1.app bridge (one at a time).