Current Architecture
The whole-system map is the Architecture Blueprint. It is a five-by-four lattice with three product/data columns and one full-height Management column.
Product and AI shape
- CareerVector has no registration, login, membership, ownership account, or account recovery. A private workspace link is the collaboration capability.
- The same canonical CareerVector workspace is projected through browser, terminal TUI, and Tauri desktop clients.
- Blueprint 05/08/12 is the AI spine: JobCache × AI, vendor AI, and CareerVector × AI. Vendor assistants host conversation; products retain data, context, tool, mutation, receipt, and recovery authority.
- JobCache may use product-local accounts to grant capabilities or identify charge targets. Runtime work still scopes itself with workspace, session, request, operation, and corpus identifiers.
- The fourth Blueprint column is Management: policy, obligations, observability, monitoring, operations, QA, Status, Wiki, support, recovery, cost, audit, and accountability.
Runtime and storage
CareerVector uses SvelteKit and Cloudflare Workers, D1/R2, a Cloudflare Durable Object plus Deno fallback for realtime byte fan-out, MCP/API perspectives, Yjs workspace sub-documents, and Typst browser/native render paths.
Durable CareerVector writes cross the typed operation path. Realtime carries committed Yjs bytes; it is not a second durable authority. UI, MCP, API, and AI tools must converge on the same operation contracts.
The shared fact vocabulary is:
role hidden shared aggregate
ad source listing for one URL/posting
job workspace-local tracked item exposed to users/APIs
workspace.jobs[job_id] { url, attributes }
D1/Yjs owns private workspace jobs, CV/CL trees, notes, settings, evaluations, collaboration, and local summaries. CrateDB/JobCache owns public ad/role facts, evidence, embeddings, matching, and reducer-approved aggregates. Absence, unknown, disagreement, and explicit empty values remain distinct.
Evidence discipline
The repository is authoritative only where a claim resolves to source plus the appropriate test, probe, or runtime evidence. A green package test does not by itself prove a cross-product boundary. Use the Blueprint note and typed connection before changing authority or moving data.