BOLT-1793: V2 enrollment success screen but no Enrollment row (nested address fact breaks resolveSite→bindEnrollment)
completedAgent: richie-engineer
Priority: 1
Branch:
winston/bolt-1793-flatten-address-factsPR: #14560
Linear: BOLT-1793
Root cause confirmed via program schema. Instance cmsjkuuyc00021snkz1h0pks2: entityType=ENROLLMENT, entityId=null, terminal stage reached. Fact chain: workspaceProgramId + captureData(address NESTED under {address:{...}}) + resolveCustomer(customerId) then STALLS. resolveSiteHook.requiredFacts=[streetOne,city,state,postalCode,workspaceProgramId] are top-level, but capture wrote them nested under address -> missingFacts filter silently continues -> no siteId -> associateCustomerSite + bindEnrollment skipped. Success screen decoupled from binding. Blast radius: 22 V2 captureData instances with nested address, 0 bound, 5+ defs, most recent 2026-08-19. Precedent: transformTermsAcceptance already flattens terms block in useEnrollmentFlowV2. Fix plan: (1) frontend transformAddress flatten in useEnrollmentFlowV2 mirroring transformTermsAcceptance; (2) safety net: skipped bindEnrollment must not present as terminal success. Plus backfill for 22 stuck enrollments incl Grace. AWAITING Richie decision on scope/approach before opening PR. Branch will be winston/bolt-1793-*.
Event Timeline
created
failed
lease expired — re-queued for retry
in_progress → queued
status_change
queued → blocked
status_change
blocked → completed