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:
@@ -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
|
||||
|
||||
@@ -26,8 +26,9 @@ import { v_0_1_0_62 } from './v0.1.0.62'
|
||||
import { v_0_1_0_63 } from './v0.1.0.63'
|
||||
import { v_0_1_0_64 } from './v0.1.0.64'
|
||||
import { v_0_1_0_65 } from './v0.1.0.65'
|
||||
import { v_0_1_0_66 } from './v0.1.0.66'
|
||||
|
||||
export const versionGraph = VersionGraph.of({
|
||||
current: v_0_1_0_65,
|
||||
other: [v_0_1_0_39, v_0_1_0_40, v_0_1_0_41, v_0_1_0_42, v_0_1_0_43, v_0_1_0_44, v_0_1_0_45, v_0_1_0_46, v_0_1_0_47, v_0_1_0_48, v_0_1_0_49, v_0_1_0_50, v_0_1_0_51, v_0_1_0_52, v_0_1_0_53, v_0_1_0_54, v_0_1_0_55, v_0_1_0_56, v_0_1_0_57, v_0_1_0_58, v_0_1_0_59, v_0_1_0_60, v_0_1_0_61, v_0_1_0_62, v_0_1_0_63, v_0_1_0_64],
|
||||
current: v_0_1_0_66,
|
||||
other: [v_0_1_0_39, v_0_1_0_40, v_0_1_0_41, v_0_1_0_42, v_0_1_0_43, v_0_1_0_44, v_0_1_0_45, v_0_1_0_46, v_0_1_0_47, v_0_1_0_48, v_0_1_0_49, v_0_1_0_50, v_0_1_0_51, v_0_1_0_52, v_0_1_0_53, v_0_1_0_54, v_0_1_0_55, v_0_1_0_56, v_0_1_0_57, v_0_1_0_58, v_0_1_0_59, v_0_1_0_60, v_0_1_0_61, v_0_1_0_62, v_0_1_0_63, v_0_1_0_64, v_0_1_0_65],
|
||||
})
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
import { VersionInfo } from '@start9labs/start-sdk'
|
||||
|
||||
// LP Objections page: a UI trigger for the Architect's grounding pass. An admin picks
|
||||
// a segment (or All LPs) and runs grounding — the Architect mines matched LP emails and
|
||||
// notes on the local model, removes every identifier through the redaction boundary,
|
||||
// and asks Claude for the recurring objections + honest rebuttals. Only de-identified
|
||||
// themes leave Ten31. Uses the existing /api/architect/ground route; no schema change.
|
||||
export const v_0_1_0_66 = VersionInfo.of({
|
||||
version: '0.1.0:66',
|
||||
releaseNotes: {
|
||||
en_US: [
|
||||
'New LP Objections page: run the Architect grounding pass over your matched LP email',
|
||||
'to surface the recurring objections (and the strongest honest rebuttals) for any',
|
||||
'segment. Everything sensitive is de-identified on your own hardware before Claude sees',
|
||||
'it — only objection themes leave Ten31. Results are a draft for your review.',
|
||||
].join(' '),
|
||||
},
|
||||
migrations: { up: async () => {}, down: async () => {} },
|
||||
})
|
||||
Reference in New Issue
Block a user