Skip to content

Loop #1 — First Real External Veteran (Jose)

Date: 2026-09-04
Result: PASS — first full WIN net-new loop on prod with a real external veteran
Milestone: First real external veteran completes the full coordination journey on prod — not the founder, not a synthetic fixture account
Tag: loop1-first-real-external-veteran-2026-09-04

Distinction from prior Loop #1 milestones:

Prior milestone Tag What it proved
L1-7 keystone l1-7-keystone-2026-09-03 Coordination machinery (ledger, §3.1, negatives, denominator) via API/runner
Real-veteran journey core real-veteran-journey-core-2026-09-04 Same three-party close walkable in browser on founder-linked fixture (curryrg@gmail.com)
This milestone loop1-first-real-external-veteran-2026-09-04 External veteran (jrdelacruz.a@gmail.com) through WIN invite → DD-214 → Pathway 1 org-admin review → enrollment → hiring loop → VERIFIED

Veteran

Field Value
Name Jose (external; not Ryan)
Email jrdelacruz.a@gmail.com
last1.app user_id a3cbfcca-7a12-45cd-a544-7026f27dcd9f
Last1 ID identity_id e65c4e30-1cbe-452a-a3d7-a70b05362b79
Delivering org Warriors In Need (warriors-in-need)
Program Veteran Employment Services (adf7bd97-a7ec-44e8-a178-2ff106a235db)
Beneficiary id 77de3d14-d31b-46bd-b160-5d53eb3b17c2

Verified loop

Field Value
loopId 07b1fbcd-58ed-422f-8e7b-1d80afc6bca4
Employer (Path A) ryan@last1.enterprises @ last1.enterprises
Environment Sovereign prod — https://last1.app
Opened 2026-09-04T21:36:14Z
Verified 2026-09-04T21:39:55Z
Final UI /member/progress — "All three parties confirmed your placement. This loop is complete." (Λ verified)

Λ progression (ledger)

seq event_type resulting_lambda time (UTC)
1 loop_created open 21:36:14
2 attestation partial 21:37:40
3 attestation partial 21:38:21
4 attestation verified 21:39:55

Journey (prod, in order)

Step Actor Surface Result
1 WIN org admin Beneficiary invite Jose invited to WIN
2 Jose Invite accept Email-match security held — accept tied to invited email (invite_accepted_at 20:54:42 UTC)
3 Jose Last1 ID /credentials Uploaded real SSN-redacted DD-214 PDF
4 Ryan (WIN org admin) last1.app → Org Settings → Verification Pathway 1 human review — first time Ryan verified a veteran who is not himself
5 WIN org admin Beneficiary detail Enrolled in Veteran Employment Services
6 WIN org admin Dashboard Opened hiring loop (employer email → per-loop domain)
7 WIN org admin Dashboard Confirm delivery → Λ partial
8 Jose /member/progress Confirm placement → Λ partial
9 WIN org admin Dashboard Issue employer magic link
10 Employer /public/hm-attest/:token Confirm hire → Λ verified

Review queue for Pathway 1 is not auth.last1.id platform admin (Pathway 2). Correct surface: last1.app org-admin Verification tab.


Security proofs on a real second person

Email-match on invite accept

Beneficiary row shows email = jrdelacruz.a@gmail.com, invite_accepted_at set, user_id linked. Accept succeeded only with matching invited email — anti-fraud invite binding proven on external user, not just founder fixture.

Pathway 1 org-admin DD-214 review

Field Value
DD214_AUTO_CONFIRM_ENABLED false (human review required)
Reviewer Org admin (WIN), not platform admin
First DD-214 review approved 335a27d9-851a-4288-8a1c-3e59bade196a
Duplicate review (double-submit; see friction) 931fccc7-beda-484d-99f9-900f41fcc243 (also approved; no credential harm)
Confirmation identity_veteran_confirmations.status = confirmed, veteran_verified credential active

Ryan confirmed veteran status through WIN org-admin review on a real external identity. Pathway 1 anti-fraud gate works as designed.


Four real bugs surfaced (Jose) — patched

Jose's run is the value of a real external user: four product bugs, all addressed in last1.id (commit on fix/dependency-audit-browserslist, tag loop1-first-real-external-veteran-2026-09-04).

# Bug Fix
1 Cloud PDF upload (Drive / iCloud / email) — cloud-only pick had no readable bytes → NetworkError Fixed — preparePdfForUpload() hydrates PDF via arrayBuffer() on pick + submit; Chromium uses showOpenFilePicker() for OS/cloud-aware picker; rejects zero-byte placeholders at pick time with actionable copy (not a silent network fail)
2 Submit stayed clickable after success — duplicate DD-214 review rows Fixed — modal locks after success / existing pending
3 No Pending on credentials page Fixed — Pending badge via /api/veteran-confirmation/status
4 Stale org Verification row after approve Fixed — dismiss/filter pending reviews for already-confirmed identities

Cloud upload note: Web upload accepts PDFs from Drive, iCloud, and email when the browser can read bytes (normal file picker / share-sheet behavior). We do not require "save to device first" as the primary path. If the OS exposes a cloud placeholder with zero bytes, the veteran sees an immediate read error at file selection, not a failed submit.

Additional friction (not counted in the four): rate limit after retry storm (10/15min/IP), opaque 413 before patch, wrong admin portal for Pathway 1 (docs).


UX friction (full log)

Findings from Jose's session.

# Friction Severity Status
1 Google Drive / cloud PDF — see four bugs table above High Fixed (hydrate + cloud-aware picker)
2 Submit stayed clickable after success High Fixed
3 Rate limit after failed retries + double-submit Medium Expected under retry storm
4 No "Pending review" on credentials page Medium Fixed
5 Org Verification tab stale after approve Medium Fixed
6 Oversized PDF (>20 MB) opaque 500 Low Fixed
7 Wrong admin portal (Pathway 2 queue empty for Pathway 1) Low Docs
8 Browser extension console noise N/A Ignore

What worked (design confirmation)

  • WIN org-invited acquisition → Pathway 1 routing to org-admin review
  • Real DD-214 upload → LastVet storage → human confirm → Last1 ID credential
  • Beneficiary link → member account with verified Last1 ID checks
  • Three-party coordination loop close to verified on /member/progress
  • Per-loop employer domain gate (last1.enterprises on this loop)
  • Email-match invite accept on external email

Repo tags

Repo Tag Notes
lastvet-gates loop1-first-real-external-veteran-2026-09-04 This closeout
last1.app loop1-first-real-external-veteran-2026-09-04 Journey completed on prod
last.vet-api loop1-first-real-external-veteran-2026-09-04 DD-214 storage/parse path used
last1.id loop1-first-real-external-veteran-2026-09-04 Pathway 1 review + upload hardening
muster loop1-first-real-external-veteran-2026-09-04 Tracker item marked done

Also push prior local-only milestone tags to GitHub:

Tag Repos
real-veteran-journey-core-2026-09-04 lastvet-gates, last1.app, last.vet-api, muster
l1-entry-2026-09-02 lastvet-gates (if not already on remote)

  • docs/architecture/LOOP1_L1-7_KEYSTONE_CLOSEOUT.md — machinery keystone
  • docs/architecture/LOOP1_REAL_VETERAN_JOURNEY_CORE.md — browser walkthrough (founder fixture)
  • LOOP_LEDGER_AND_PROOF_MACHINE_SPEC.md — proof machine design law

Next: second real-veteran proof (hardened flow)

Goal: Confirm Jose-fixes hold for a second real external veteran — especially cloud PDF upload — not a one-off.

Recommended setup:

  1. Veteran: Ryan coordinates a second real person, OR create a fresh beneficiary invite to a clean email (not Jose, not founder fixtures).
  2. Path: WIN invite → accept (email-match) → Last1 ID DD-214 upload from Google Drive or iCloud if possible → Ryan org-admin Verification (Pathway 1) → enroll → open loop → three-party close → VERIFIED.
  3. Pass criteria:
  4. DD-214 uploads without NetworkError from cloud picker (or clear pick-time error if OS gives zero bytes)
  5. Single pending review row (no double-submit)
  6. Credentials show Pending → Active
  7. Org Verification queue empty after approve
  8. Loop reaches verified on /member/progress
  9. Muster tracker id: loop1-second-real-external-veteran-proof (status: next)

Do not reuse Jose's beneficiary row. New invite, new Last1 ID session (or verified test account), new loop.


Next (engineering)