Audit · verified against the repo, commit by commit

Architecture Vision — Done vs Missing

Audited 2026-08-18 against the same-day v2 of the Technical Architecture Vision. Method: three parallel verification agents reading code and git history for every claimed deliverable — every status below cites real files and commits, not memory. Same-day caveat: two fixes from today's live funnel test were in review at audit time (the broken escalation-forward validator, and renewals joining the tracked engine).

Bottom line

The bones the vision says to keep are genuinely there and strong — one loop, deterministic routing, Temporal durability, full traces, and the receipt contract on the three worst say-do offenders is fully shipped, with real pending-alerts. But of the eight Phase-1 deliverables, only one is done; four are half-built (built-but-dark, or built-but-unwired); three don't exist. Phase 2 is essentially unstarted. And today's live testing proved the vision's core diagnosis in real time: the say-do gap is still the disease — the main escalation forward silently broke for two hours behind a green CI, exactly the failure class P1/P7 describe.

Phase 1 — "Receipts & truth" (target: ~2 weeks from doc date)

DeliverableStatusWhat the code actually shows
Receipt contract on the 3 worst say-do offenders + stuck-pending alertsSHIPPEDAll three real: PM forwarding (delivery-checked, reminder cadence, enrollment-failure paging), application links (atomic claim → confirm → hourly strand sweep), renewal escalate (typed fatal envelope arms the review gate). The one hole: today a validator bug upstream of the forward tool made the whole lane unreachable — receipts can't save a door that won't open (fix in review).
Source-of-income deterministic tripwire + pinned regressionNOT BUILTPrompt rules and an eval yaml only — no deterministic runtime check anywhere in the guard chain. Today's live test hit this exact gap: a Section 8 question got a deflection with no forward behind it. This is the vision's own Phase-1 top item and it is still words, not a mechanism.
Teach-loop review gate for protected categoriesCONTRADICTEDThe code explicitly documents the opposite decision: "NO REVIEW GATE (owner, 2026-08-13) — a staff reply IS the policy, live immediately." The vision requires a gate; your August 13 ruling removed it. Needs a fresh ruling (below).
Policy gate armed repair-only at one property (≥80% precision)BUILT, DARKGate + trajectory judge + offline replay all merged (#5815/#5819). But: measured only on a 30-turn smoke sample, no full-corpus precision number exists, no per-property arm mechanism (one global env var), and it is off everywhere.
ElevenLabs native test suites onBUILT, UNWIREDThe native test-suite wrapper exists (PR #981) but nothing calls it — no workflow, no schedule. What runs in CI is the separate simulate-conversation suite (report-only).
Score store (D1) + first trend dashboardIN FLIGHTNothing on main. Per your same-day D1 decision (own store, own UI), a scoring-backend branch exists as uncommitted work in a side worktree. Dashboard explicitly parked until the backend ships.
Judge calibration report v1NOT BUILTOnly ad-hoc per-task scorecards exist. No standing report comparing any production judge against human gold labels.
Skip-never-green fixed in CIONE OF TWOThe eval-budget skip correctly reports neutral (PR #4214). The vision's own "Exhibit A" — the flagship behavior sweep showing green through 40 straight non-runs — is still unfixed.

Phase 2 — "Gates & flywheel" (target: ~30 days)

DeliverableStatusEvidence
Blocking AI-behavior PR gates (floor + paired regression + red-team)NOT STARTEDNo agent-behavior check can block a merge today (D3 still open).
Distiller + corpus-runner (👎 → regression case automatically)NOT STARTEDGrading Playground Phase 0/1 shipped (store, queue, desk); the distiller and auto-drafted cases (ADR-0128 Phases 2–3) don't exist.
Native merge queueCONTRADICTEDADR-0107 (July 21) tried it, measured it (~2,000+ runner-minutes/day, no batching), and retired it for the custom auto-merge bot. The vision asks to reinstate what an accepted ADR retired. Needs a ruling (below).
Durable server-side watchers (zero session-scoped)PARTIALReminder cadences and crons are durable; PR-watch and proof-loop watchers still run in agent sessions (including this one).
Monthly clustering job v1NOT STARTEDNo clustering/taxonomy job anywhere.
Voice literal-name lintNOT STARTEDNo such lint exists.
Two unsynced voice agents onto CI syncNOT STARTEDvendor-outbound and emergency-relay still have no automated sync path — the drift workflow's own header says so.

The seven fragilities (F1–F7)

FragilityStatusEvidence
F1 — dual module treeUNCHANGED63 colliding relative paths; the two data stores are 5,554 vs 1,955 lines of genuinely divergent code behind one alias. Today's P0 review even had to check whether the validator existed twice.
F2 — 6,000-line loop functionWORSEThe file is now 9,045 lines; the main function ~6,035. Guards live in separate files but are invoked ad hoc — no declarative pipeline yet.
F3 — shared circuit breakerFIXEDEight isolated breakers by caller class, incident-tuned (Aug 15). The one real "fixed" on the fragility list.
F4 — saved-before-sent, no reconciliationIN PROGRESSOutbound-record construction invariant shipped (ADR-0119); Twilio delivery-status webhook + nightly coverage sweep exist. Documented gaps: Telegram, two vendor-chase lanes.
F5 — total loop failure = silenceUNCHANGEDA non-rate-limit loop crash still rethrows into SQS retry with no tenant-facing floor. Only the Anthropic-429 case got a quiet handler (Aug 15).
F7 — voice guard asymmetryIN PROGRESSOne guard (anomaly review gate) ported to live voice routes (#5026/#5132). The rest of the chain — including hallucination — still SMS/email-only.

Target planes not yet begun

Policy store with state tier (incl. the D4 California shells you decided today): nothing in the repo yet. Knowledge freshness horizons/staleness monitor: nothing. Org-isolation: two real drift-test ratchets exist (born from the Aug 13 leak audit) but no comprehensive invariant. Pricing-data firewall: nothing to firewall yet — no pooled pricing feature exists, and market data is deliberately public-source only.

Two contradictions that need your ruling

1 · Teach-loop review gate for protected categories

The vision (P6, Phase 1) requires protected-category answers to pass a jurisdiction-aware review before becoming policy. Your August 13 ruling — written into the code — says the opposite: a staff reply IS the policy, live immediately, no gate. Both can't stand.

A. Narrow gate, everything else instant (recommended)
Keep the no-gate rule for ordinary answers; add a protected-category classifier in front of the write that routes only fair-housing-adjacent answers (income source, familial status, disability…) to a review hold. Matches the vision's own reasoning (the Harbor Group consent-decree scenario) without slowing the teach loop.
B. Keep no-gate as ruled
Amend the vision; accept that a wrong protected-category answer can replicate instantly.
C. Defer until first real occurrence
Add detection + alerting only (log when a taught row looks protected-category), gate later.

2 · Native merge queue vs ADR-0107

The vision's Phase 2 lists "native merge queue"; ADR-0107 (accepted, July 21) retired exactly that with measured cost data and replaced it with the custom auto-merge bot.

A. Amend the vision (recommended)
The bot + push-to-main gating is the standing decision; the vision should say "durable merge automation," not "native queue."
B. Re-run the experiment
GitHub's queue has changed since July; re-measure before deciding.

What today's live test added (same-day evidence)

Four live findings, each mapping to a vision item: (1) the escalation-forward validator bug — a required array parameter could never validate, silently killing every text-lane forward since this afternoon's deploy (P1/P7 in the flesh; fix in review). (2) renewals never joined the tracked engine — your single-core-engine ruling is now recorded and the wiring PR is in review. (3) a Section 8 question deflected with no forward — the missing Phase-1 SOI tripwire, live. (4) a fabricated rental special ("1 month free") with no source on file — the knowledge plane's invented-vs-stale distinction, live, on the invented side.

PropFlow Docs