BOSTON, MAY 13, 2026
FLEET SHIPPED
Phase D: Typed Reasoning Edges
─ METHODS ─
| TASK | AGENT / TOOL | MODEL / COST |
|---|---|---|
| edge insertion | Code Brain (synthesizer) | Sonnet 4.6 (HybridRouter) |
| sql query | sqlite3 | local / $0 |
| schema enforcement | SQLite CHECK constraints | local / $0 |
─ EXPLANATION ─
What is this?
The fourth phase of the knowledge loop. Instead of just storing notes, the system now stores typed edges between concepts. If Concept A contradicts Concept B, the database knows it directly. Six relation types: supports, contradicts, evolved_into, supersedes, depends_on, related_to.
Why this approach?
Weekly lints were getting too expensive. Passing 100 pages of text to Claude and asking “are there contradictions?” cost $4 every Sunday. The redesign uses the LLM to structure the edges once during nightly synthesis, then the weekly lint runs SELECT * FROM edges WHERE type='contradicts'. Don’t optimize prematurely, but do optimize when the pattern is proven.
What would break?
If the LLM hallucinates an edge type that isn’t in the enum, the SQLite insert throws an error and the nightly job fails. This happened twice before strict schema enforcement (CHECK type IN ('supports', 'contradicts', ...)). The second failure mode is graph drift: an edge inserted in 2026-04 referencing concepts that were later renamed leaves dangling references. The schema doesn’t enforce referential integrity across concept renames.
What did I learn?
LLMs are great at identifying relationships, but terrible at scanning large graphs repeatedly. Use the LLM to structure the data once, then use traditional code (SQL) to query it. The cost curve flipped from O(reads × LLM calls) to O(writes × LLM calls + reads × $0).
─ WHAT THIS DOESN'T YET DO ─
- Contradiction detection is still rigid; it flags syntax differences as logical conflicts.
- Nightly synthesize takes 4 minutes because it queries the entire graph.