Changelog
§12 Memory — Sprint C shipped: hybrid retrieval (vector + BM25 + RRF fusion + Voyage rerank-2.5) replaces the vector-only dispatcher; eval harness with a 20-query golden corpus checked in. End-to-end measured lift over the vector-only baseline: +20% recall@5, +4.6% recall@10, +31.5% MRR. Self-RAG retrieval gate dropped from v1 after research surfaced that 2025-26 SOTA (Mem0, MIRIX, Anthropic Contextual Retrieval) converged on unconditional hybrid retrieval at substrates of our scale; self-rewriting prelude bumped to Sprint D pending weeks of write-back hook output to rewrite from.
§12 Memory — Architecture principle locked: Claude is the project manager on every project under coexo.dymont.ai/dymontlabs; Stephan sets outcomes (what + how he uses it), Claude owns the path (research, decide, sequence, ship). Codified as a `mirix_type=core` event in the prelude's working preferences section so the principle survives across model upgrades and surface changes.
§12 Memory — Sprints A and B both shipped on coexo-memory. Sprint A: write-back hook on Claude Code dymontlabs (every session ends with a Haiku-summarised episodic event), per-type retriever dispatch in /recall, REM-phase A-MEM entity dedup with append-only recall_log Hebbian substrate. Sprint B: deep-phase consolidation worker (tombstone-only active forgetting + HNSW drift reindex), procedural memory tier (Skills section in the prelude with SKILL.md frontmatter convention), HippoRAG-2 graph recall (POST /recall/graph runs Personalized PageRank over the entities + triples graph with vector-seeded reset weights).
§12 Memory — Surface-aware filtering for procedural skills: prelude builder respects optional `applies_to: [surface_a, ...]` frontmatter so per-host skills don't bloat other surfaces' preludes. Six skills now seeded (coexo-memory-api, deploy-coexo-site, restart-coexo-operator, apply-coexo-migration, verify-coexo-substrate-health, query-coexo-recall).
§12 Memory — Postgres upgraded 17.9 → 18.3 via dump+restore (~7 min downtime); audit hash chain preserved byte-equal across the upgrade. Native SQL:2011 application-time temporal constraints now available for any future projection table.
§12 Memory — v0 substrate live. Hetzner AX102-U bare-metal in Falkenstein-DC7 hosting Postgres 18 with the locked extension stack (pgvector halfvec, pgvectorscale, pg_search, pgcrypto, pgaudit). Operator service exposing bearer-gated POST /events, POST /recall, GET /events, GET /prelude over the tailnet. Hash-chained audit log; encrypted pgBackRest backups (local + off-host Storage Box); off-box Prometheus/Loki/Grafana on dymontlabs; Langfuse Cloud EU traces on Voyage embedding calls. Always-loaded prelude generator wired into Claude Code on dymontlabs via SessionStart hook.
Added Project Notes as a staging inbox for raw architecture and product ideas that have not been placed into the canonical site structure yet.
Captured the first note: a beautiful read layer on top of the canonical database, with suggested destinations in Strategy, Command Center, and The Database.
§3 Signal Enrichment — Replaced linear pipeline (Grouping → Context Assembly → Dual Extraction) with dual-lens model (Person Lens + Case Lens). Introduced "nuggets" as atomic units of intelligence. Behavioral extraction operates at signal level per person; content extraction decomposes into independently routable nuggets. Added Preliminary Scan step.
§4 Signal Routing — Routing now operates per nugget instead of per signal. Added Recomposition step to aggregate routing decisions back to signal level for coherent outbound actions.
Initial project scaffold with layout, auth, and design token system. Overview page, Building Blocks grid with all 11 sections transferred from AA-0957. Arc42-based structure adopted. Site deployed at coexo.dymont.ai.