v0.2.0 — Typed retrieval, code graph, ontology evolution
First feature release on top of v0.1.0. Six new additive features, no breaking changes. Test suite green (1176 pass; 13 pre-existing data/fixture failures unchanged from v0.1.0).
New features
| Area | What you get | New MCP tool / CLI |
|---|---|---|
| Personalized PageRank | HippoRAG 2 multi-hop seed expansion over the typed graph, with type-aware edge weights that upweight session-finding edges. Pure-Python, no new runtime deps. | MCP graph_ppr(seed_node_id, top_k, alpha, edge_type_weights) |
| Hybrid search | BM25 + lexical + embedding fusion via reciprocal-rank-fusion (k=60) in the existing search_nodes MCP tool. Backwards-compatible: mode="legacy" preserved bit-for-bit. Sentence-transformers backend autodetected. |
MCP search_nodes(query, mode="hybrid"), embedding_status |
| Code-as-graph | tesserae project ingest-code walks the repo via Python's stdlib ast and mints typed CODE_FILE / CODE_MODULE / CODE_CLASS / CODE_FUNCTION / CODE_METHOD nodes + contains/calls/imports/inherits_from/declared_in edges. Persisted at .tesserae/code-graph.json. |
CLI tesserae project ingest-code |
| Community summaries | Opt-in post-compile Louvain detection + LLM cluster summarization (Microsoft GraphRAG pattern). Mints COMMUNITY_SUMMARY nodes with summarizes edges, cached by member content hash. |
MCP list_communities(min_size, limit); env TESSERAE_COMMUNITY_SUMMARIES=true |
| Memory decay | A-MEM Ebbinghaus decay scoring (14-day half-life, access-count bump) on session-finding nodes, plus opt-in supersedes pass that de-duplicates near-identical insights via Jaccard + LLM judge. Structural-decision timestamps are derived from the parent session. |
MCP fresh_insights(limit, kind); env TESSERAE_SUPERSEDE_PASS=true |
| Schema-drift report | EDC-style (Extract-Define-Canonicalize, EMNLP'24) enum proposal generator. Jaccard-clusters high-volume node types and asks the LLM to propose PascalCase sub-types with member previews. Writes .tesserae/schema-drift.md with copy-pasteable enum additions; LLM proposals cached atomically. |
CLI tesserae project schema-drift |
Reliability fixes (already in v0.1.0 but worth recapping)
- SessionEnd plugin hook now skips when a
tesserae project compileis already running (was piling up and hanging the system). - Atomic-write race in
_write_cacheand_write_manifestfixed with PID+random tmp suffix. - Plugin CLI-path corrections (
tesserae project sessions discovernamespace).
Code review
All 12 codex review findings (1×P1, 9×P2, 2×P3) were fixed before merge. Each PR carries its own fix(...) commit alongside the feature commit.
Strategic note
Tesserae is now structurally aligned with the 2026 GraphRAG / memory SoTA (Microsoft GraphRAG, HippoRAG 2, LightRAG, Mem0, Graphiti, A-MEM). The typed-edges + session-extraction combination remains a defensible moat — most competitors lack typed edges entirely, and no other PKM-AI tool links prose decisions to code symbols (a wedge that feat/code-graph lays the foundation for).