CedarCopilot wants to merge 10 commits into staging from feat/continuous-taxonomy-extraction
Libra ran this behavior against the change and confirmed the check detects when it breaks.
Changed code: process-taxonomy-extraction-queue.ts.
Live on prod, 0 of 1 surfaces working, 2 days left
Libra found 1 production surface on prod but could not judge any of them yet. Libra checks hourly for 3 days after each deploy.
Takes the sub-event sales-taxonomy extraction pipeline out of "staff runs a CLI per audit" and makes it a standing, org-gated production capability, per docs/design/continuous-taxonomy-extraction-production.md.
Continuous execution , two active paths, the daily backfill sweep intentionally disabled (2026-09-23).
handleExecuteMeeting's success branch fires a fire-and-forget enqueue on each new meeting , lowest latency, live coverage.conversation-sync.extract-taxonomy step enqueues on every two-phase sync , covers a newly-opted-in org's INITIAL sync and routine re-syncs. Already flag-gated: enqueueTaxonomyExtraction re-checks organizations.settings.features.taxonomyExtractionEnabled internally, so this is a no-op for every org that hasn't opted in, and only ever fires in response to a real sync event for one that has.process-taxonomy-extraction-backfill.ts) is DISABLED , unscheduled from cron-task-registry.ts and aws/lib/stacks/app-stack.ts's cronTasksDaily (confirmed removed from the synthesized CloudFormation template). Unlike the two paths above, this one re-scans and backfills every never-covered conversation on a fixed daily schedule, independent of any single sync event or how long ago an org opted in , real backfill volume/cost/latency turned out to be large (see below), and that recurring, unbounded-lookback behavior is what's being held back for now, not ordinary forward coverage. Implementation + tests kept for later, just not wired.Model: GLM 5.3 Flash by default, no cross-model fallback (explicit decision , if GLM can't do a plane reliably, the fix is prompt/schema engineering on that plane, not routing to a more expensive model). Retry-once-on-the-same-model on a structured-output failure, then skip that field/event without failing the whole run. Two specific instance-plane fields (demo.feature, product.pitch) are routed to the traditional (non-flash) glm-5.3 instead , see the recall-improvement work below for why, and the cost note below for the real tradeoff.
GLM ground-truth eval , done, not just planned, and iterated on same-day. Real comparison against stored Sonnet-4.6 extractions (not a fresh in-run baseline): 16 conversations, 464 instance-plane + 333 judgment-plane comparisons across Pirros/Aspireiq/Vooma. Full writeup, including every subsequent fix and its validated numbers: docs/design/taxonomy-model-switching-eval.md.
reasoningEffort: 'low').meddpicc.decision_criteria is genuinely broken (39% non-prose garbage) , held back via a new excludeFieldIds denylist.Recall-improvement pass (same day, small-sample-validated at every step, per an explicit working agreement not to scale anything unproven):
rep.question 44%→63%, prospect.question 41%→55%), but the worst fields (demo.feature, product.pitch) were essentially untouched (~9-12%), and it introduced a new failure mode: 82 (event, field) pairs came back completely empty.| Surface | Requests | Errors | p95 | Users | Verdict |
|---|---|---|---|---|---|
| taxonomy.extract | no baseline → 0 | no baseline → 0 (0%) | not measured | not counted | Unavailable ClickHouse reads are unavailable, so Libra could not measure this surface. |