4.2 KB · updated 2026-07-31 · md

v0.17.0.md

docs/release-notes/v0.17.0.md

Tesserae v0.17.0 — the compile path learns from its peers

<!-- translations:start -->

한국어 · 中文 · 日本語 · Русский · Español · Français · Deutsch

<!-- translations:end -->

Released 2026-07-09 · PyPI · GitHub release · pip install --upgrade tesserae==0.17.0

This release wires in the best ideas from a deep comparison against two sibling LLM-wiki projects — alfadur7/llm-wiki-newsroom and langchain-ai/openwiki — every one verified against what Tesserae already had before being adopted. The theme: what agents consume is now correct, fresh, and discoverable by construction.

Compiled context stops citing losers

compile_context now excludes superseded nodes and arbitration losers by default (include_superseded=True restores them). A claim that lost LLM arbitration was previously cited identically to its winner; the shared superseded_ids() helper now suppresses or flags these consistently across search_nodes, fresh_insights, and node_context too. Synthesis pages additionally verify every citation against the actual input node ids — a fabricated id now fails validation and falls back to the deterministic body.

A two-sided publication gate

Lint runs crash-safe at the tail of every compile, so lint-report.md is always fresh. tesserae compile --strict turns findings into a non-zero exit for CI — and fails closed if lint itself crashes. An opt-in lint --verify-claims goes further: it LLM-checks whether cited nodes actually support the citing sentence (capped, deterministically sampled, never a compile blocker).

The output snapshot gate

After each compile, Tesserae hashes the compiled artifacts and reports Output: changed/unchanged. Under --strict, the suspect state — inputs unchanged but output changed — fails the build: a permanent tripwire for the byte-idempotence class of bugs. A ready-to-copy CI refresh workflow lives in docs/integrations/ci-refresh.md.

Agents find the knowledge base on their own

tesserae setup now installs a marker-delimited Tesserae pointer block into the target repo's AGENTS.md/CLAUDE.md (idempotent; bails untouched on malformed or duplicated markers; coexists with other managed blocks). The wiki-root index.md was rewritten as the agent entrypoint: orientation, an MCP-first "how to query" section, the kinds table, and top communities. Community pages gain a deterministic ## Sources footer listing member source files.

Compile gets cheaper and staleness gets visible

The code graph layer now keeps a whole-layer extraction cache (.tesserae/code-graph-cache.json): when the source tree's stat manifest is unchanged, the cached graph rehydrates byte-identically instead of paying a full re-extraction walk (tens of seconds on large repos). The CLI reports reused or +added ~changed -removed delta counts. Build history records the git HEAD at compile time, and lint emits info findings for code-graph nodes whose source files changed since — plus a contradictions.md wiki page now tracks open/resolved/obsoleted claim conflicts, and graph_ppr gains exclude_direct_neighbors for Memex-style unexpected-connection discovery.

Community-summary caches also invalidate on member content digests (not just membership), so a changed description re-summarizes instead of serving a stale narrative forever.

Upgrade notes

  • The first compile after upgrading reports Output: changed once (community pages gain Sources sections, index.md becomes the entrypoint); subsequent compiles are byte-stable.
  • tesserae setup (including --yes) installs the agent pointer by default; set install_agent_pointer=false in the plan to opt out.