Ocean11 — the last feature day
- Brief becomes a drag-in dock on the chat home (replaces the Chat/Brief toggle); the brief-progress checklist re-homes into the support rail.
- Checklist is agent-decided. MASON returns per-item done / not-done verdicts by meaning, replacing keyword matching — one source of truth for the gate, the rail and Mira's next question.
- Mira voice & UX. Pain-first opening, "finding talent" not "hiring", suggestion chips docked above the composer; a date-picker widget + a currency-leak guard.
- Brief export → real server-side PDF (headless Chrome) with an HTML preview tab — killed the print-dialog freeze.
- Files persisted to GCS instead of Cloud Run's ephemeral disk (fixes vanishing uploads & research images).
recruiter — the big port begins
- Ported the entire Ocean11 app into
recruiter in staged phases, adapting to the doctrine: 23 migrations (pgvector), the data layer, a direct-OpenAI LLM seam, the full agent core (dual-lane, 67 tools, every sub-agent), the agent-turn worker (SSE→Pusher), core API routes, the 6-layer search funnel + items, concierge (runner / store / approval-gate / anonymity-wall), and the web + admin SPAs (Next→Vite).
- Voice ported but left inactive (incompatible with the no-streaming doctrine).
- Runtime-verified against a real embedded Postgres — caught & fixed a jsonb double-encoding bug; added search-funnel + pgvector retrieval tests.