architect: LP Objections page — UI trigger for the grounding pass (v0.1.0:66)

New admin "LP Objections" page (frontend ObjectionsPage + nav). Pick a segment (or
All LPs) and Run grounding: the Architect mines matched LP emails + notes on the local
model, scrubs every identifier through the redaction boundary, and asks Claude for the
recurring objections + honest rebuttals (substantiated/hand-wavy flagged). Renders the
de-identified draft + an "N identifiers protected" badge; fail-closed statuses
(local_model_unavailable / scrub_unavailable / claude_not_configured / rehydrate_failed)
show a clear message. Uses the existing /api/architect/ground route. Verified in preview:
page + segment selector + Run; the local minimize/scrub legs actually ran against real
Spark on synthetic input and fail-closed correctly at the (key-less) Claude step;
success rendering verified with a mocked ok response.

NOT yet deployed — start-cli RPC to the box hit a transient transport error post a
StartOS hiccup (curl works, start-cli doesn't); CRM healthy at v0.1.0:65 meanwhile.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Keysat
2026-06-08 18:48:24 -05:00
parent 701e37b579
commit c2b84a1f26
4 changed files with 118 additions and 4 deletions
+3 -2
View File
@@ -30,8 +30,9 @@ export const PACKAGE_TITLE = 'Ten31 Database'
// * 0.1.0:62 (fix backfill crash on no-Reply-To emails; Sync now retries errored mailboxes)
// * 0.1.0:63 (System Status: storage usage — DB, attachments, backups, disk free)
// * 0.1.0:64 (email-activity agent: propose->review->approve grid notes; sync ~15 min)
// * Current: 0.1.0:65 (Email Capture: per-mailbox captured/matched counts)
export const PACKAGE_VERSION = '0.1.0:65'
// * 0.1.0:65 (Email Capture: per-mailbox captured/matched counts)
// * Current: 0.1.0:66 (LP Objections page: UI trigger for the Architect grounding pass)
export const PACKAGE_VERSION = '0.1.0:66'
export const DATA_MOUNT_PATH = '/data'
export const WEB_PORT = 8080