- Shipped
- June 27, 2026 at 2:46 AM UTC
- Author
- Kamo
- Commit
- 55bc883
New pkg **************** — the recipient/consent entity foundation. Consumer-agnostic (FKs only locked donotmodify; the dispatcher is a future MLOSxxxService, NOT the personal-loans KamoLOS — doc 07's KamoLOS assignment is stale). - LoanParty (mutable): typed recipient graph; FK locked LoanFile/Member by Long id; contactJurisdiction = the party's OWN residence (quiet-hours); (org,loan,member,role) UNIQUE (per-loan-per-role; nulls-distinct keeps co-borrowers + third parties distinct). - ConsentRecord (WORM, AiDecision idiom + @PreRemove): TCPA/E-SIGN legal evidence; partyUid XOR rawNumber (E.164, for inbound STOP before a party exists) — assertIdentified() + a DB num_nonnulls=1 CHECK; consented_at app-set (legally-accurate capture time); snapshots disclosure_body_sha256. - DisclosureText (WORM + @PreRemove): the EXACT versioned consent text BODY retained (a pointer alone is insufficient TCPA evidence); bodySha256 non-null. - 6 net-new enums (personal-loans enums off-limits + lack IN_PORTAL/MEDIASTREAM/ MAIL). 8 tests green. Grounded by a research Workflow (code-verified EsignConsent-is-a-pattern, KamoLOS staleness) + adversarial 2-agent review (FIX-THEN-SHIP: added the consent-identity CHECK, the LoanParty unique index, sha snapshot, @PreRemove).