docs: spec organizations retirement; add email match-resolution detail
- ROADMAP: new "Retire organizations" cleanup — re-home email domain matching onto fundraising_investors (derive from contacts' email domains via a review-and-approve backfill), stop auto-creating investor-name-clone orgs, then retire the table. Third instance of the grid-is-canonical theme. - ROADMAP: email-unification bullet gains the match-resolution detail (investor_id required + contact_id nullable from the link's resolved person; org/domain-only and classic-contact-only cases) + proposal needs a contact field. - AGENTS.md: Current state notes the related organizations cleanup.
This commit is contained in:
@@ -111,7 +111,7 @@ Subsystem rules live in `docs/guides/` and lazy-load in Claude Code via `.claude
|
||||
_**Box live at v0.1.0:106 (deployed + verified 2026-06-21)** — clean StartOS migration chain (…→106), server up on :8080. **The fundraising grid + email capture is the canonical system of record.** History: git log + `start9/0.4/startos/versions/`._
|
||||
|
||||
- **Shipped (v0.1.0:106):** **retired `contacts.contact_type` (logical).** Desktop Contacts lost the Investors/Prospects tabs + TYPE badge → a grid-derived **Status** (existing-LP badge + pipeline-stage chip via `contact_grid_signals`); dashboard `total_lps`/`total_prospects` now count grid investor entities (committed>0 vs $0, graveyard + 'Untitled Investor' excluded) + fixed a `total_contacts` soft-delete leak. Column left physically inert; physical DROP deferred to a signed-off table-rebuild migration. **45/45** + new dashboard assertions, render-smoke green, reviewer APPROVE (no blockers).
|
||||
- **New SPEC in ROADMAP (Grant 2026-06-21): retire the notes blob → unify ALL activity into `communications`.** Traced in code: the blob (`fundraising_investors.notes`) and `communications` are dual-written by `log-communication`; they drift, leak soft-deletes into the grid + grounding corpus, and **emails land in the blob, never in `communications`** (so the timeline misses emails). Plan: rebuild the leaf `communications` table (add `fundraising_investor_id` NOT NULL, relax `contact_id` nullable, drop `duration_minutes`/`attendees`/`outcome`/`opportunity_id`), unify emails into comms, simplify the log form (+ `next_action`→auto-reminder, backdatable date, desktop==mobile), make the grid Notes column a derived view + Log button, retrofit blobs→comms, then DELETE the blob. Multi-session; see the ROADMAP spec.
|
||||
- **New SPEC in ROADMAP (Grant 2026-06-21): retire the notes blob → unify ALL activity into `communications`.** Traced in code: the blob (`fundraising_investors.notes`) and `communications` are dual-written by `log-communication`; they drift, leak soft-deletes into the grid + grounding corpus, and **emails land in the blob, never in `communications`** (so the timeline misses emails). Plan: rebuild the leaf `communications` table (add `fundraising_investor_id` NOT NULL, relax `contact_id` nullable, drop `duration_minutes`/`attendees`/`outcome`/`opportunity_id`), unify emails into comms, simplify the log form (+ `next_action`→auto-reminder, backdatable date, desktop==mobile), make the grid Notes column a derived view + Log button, retrofit blobs→comms, then DELETE the blob. Multi-session; see the ROADMAP spec. **Related cleanup also specced: retire `organizations`** (vestigial investor-name clones; re-home email domain matching onto `fundraising_investors`, derived from contacts' email domains) — third instance of the grid-is-canonical theme, sequence with the consolidation.
|
||||
- **Bug A — Grant is handling:** `odell/marty/finance/ten31@` can't enroll for email capture ("could not resolve user_id") because the enroll flow requires a CRM `users` row; Grant is creating user accounts for those mailboxes.
|
||||
- **Next:** (A) begin the **notes-blob → communications** work — start by **extending the contacts census** (count investors with notes but zero contacts; pure-structured vs legacy free-text blobs) to size the retrofit + the contactless gap; (B) **contacts ↔ `fundraising_contacts` consolidation** (path a — every investor ≥1 contact) + **DELETE the TEMPORARY census endpoint/handler/route/button** once A/B/C captured; (C) the deferred `contact_type` physical DROP can ride the `communications` rebuild; (D) confirm the two stuck mailboxes + Grant's 4 new mailbox users enroll; (E) carried: bell approve-on-phone → Matrix-thread-clears spot-check.
|
||||
- **Open / risks:** v106 desktop Contacts Status + dashboard counts are **live-smoke / not yet device-confirmed**. Carried: **Claude/Architect path unverified live on the box**; vision OCR small-in-frame misread (`mara.com→marac.com`); doc drift — `crm-overview.md` narrative + `EVALUATION.md` still describe `lp_profiles` (active API/schema claims fixed; deeper Phase-0 narrative deferred to a doc pass).
|
||||
|
||||
Reference in New Issue
Block a user