Releases: Entrolution/causantic
Releases · Entrolution/causantic
v0.10.2
Added
- Shared
bootstrap()function (src/config/bootstrap.ts): Single entry point for configuration initialization — callsloadConfig()→toRuntimeConfig()→initRuntimeConfig(), returns the resolved config, idempotent. Eliminates the recurring pattern where entry points independently chain these calls (or forget to). resetRuntimeConfig()inmemory-config.ts: Test-only function to clear the runtime config cache.
Changed
- Entry point config initialization: All 4 entry points (
src/mcp/server.ts,src/dashboard/server.ts,src/hooks/session-start.ts,src/cli/commands/init/ingest.ts) now usebootstrap()instead of inlineinitRuntimeConfig(toRuntimeConfig(loadConfig())). The ingest command was also missinginitRuntimeConfig()entirely —getConfig()would have returned bare defaults instead of user config. - SECURITY.md: Updated supported versions to
>= 0.10.2.
Tests
- 32 new tests across 3 new/updated test files:
test/config/memory-config.test.ts(13 tests):initRuntimeConfig/getConfigcache lifecycle, deep-merge for all 7 nested config objects, override immutability, idempotency.test/config/loader.test.ts(+15 tests): Empty string env vars, NaN handling,clusterHourrange validation (−1, 0, 12, 23, 24),halfLifeHoursvalidation (−1, 0, 48),decayFactorvalidation (−0.1, 0, 0.95).test/config/bootstrap.test.ts(4 tests): Config resolution, idempotency, return value, CLI override passthrough.
- 2589 tests passing.
What's Changed
- Cleanup Phase 0-1: dependency security fixes and documentation accuracy by @gvonness-apolitical in #156
- Phase 2: Test coverage foundation (+181 tests, 61.9% → 65.5%) by @gvonness-apolitical in #157
- Phase 3: Consolidate duplication in vector-store and tools by @gvonness-apolitical in #158
- Phase 4a: Break searchContext and ingestSession into pipeline stages by @gvonness-apolitical in #159
- Phase 4b: Table-drive config and extract VectorStore cleanup by @gvonness-apolitical in #160
- Fix 20 bugs from full codebase review by @gvonness-apolitical in #161
- Add shared bootstrap() and config test coverage (v0.10.2) by @gvonness-apolitical in #162
Full Changelog: v0.10.1...v0.10.2
v0.10.1
What's Changed
- Hybrid retrieval default, entity extraction, temporal misrouting fix by @gvonness-apolitical in #155
Full Changelog: v0.10.0...v0.10.1
v0.10.0
Highlights
- Structural repo map: Tree-sitter-powered codebase analysis with 22 language support (12 tree-sitter + 10 regex fallback). New
repomapMCP tool for on-demand structural orientation. - Session state capture: Structured extraction of files touched, errors, outcomes, and tasks during ingestion. New briefing mode for
reconstruct. - Keyword-first retrieval: BM25 keyword search is now primary. Vector search demoted to optional enrichment. Embedding no longer required during ingestion.
- Summary-augmented recall: Session summaries searched before chain walking for better "why did we choose X?" answers.
See CHANGELOG.md for full details.
What's Changed
- Semantic index layer with jeopardy-style entry generation by @gvonness-apolitical in #152
- Data-driven architecture pivot: repo map, session continuity, keyword-first retrieval by @gvonness-apolitical in #153
Full Changelog: v0.9.4...v0.10.0
v0.9.4
What's Changed
- Bump v0.9.4: add project scoping to skill templates by @gvonness-apolitical in #150
Full Changelog: v0.9.3...v0.9.4
v0.9.3
v0.9.2 — Budget-aware retrieval
- Budget-aware MMR selection: The MMR greedy loop tracks a running token budget, excluding candidates that would exceed it at each step
- Budget-aware chain formatting: Chain output assembly drops chunks exceeding the remaining budget — no partial chunks returned
- Oversized chunk filtering: Chunks individually larger than the query's token limit are excluded from search (pre-MMR) and passed through in chains (graph connectivity preserved, excluded from output and median score)
- Length penalty token extraction: Refactored for reuse across size filter and MMR budget map
v0.9.3 — Documentation fixes
- Remove incorrect claim that
predictuses half the token budget - Add missing
list-sessionslimitparameter to MCP tools reference - Document
retrieval.feedbackWeightandlengthPenaltyconfig sections - Update stale version in
statsexample output
2038 tests passing.
What's Changed
- Budget-aware retrieval: oversized filtering, MMR budgeting, chain output budgeting by @gvonness-apolitical in #148
- Bump v0.9.3: fix doc inaccuracies and gaps by @gvonness-apolitical in #149
Full Changelog: v0.9.1...v0.9.3
v0.9.1
Fixed
- Token budget overhead: Search and reconstruction assemblers now reserve space for formatting overhead (per-chunk headers, separators, response diagnostics) before chunk assembly, preventing responses from exceeding stated token budgets by 5-15%.
- Node version mismatch detection: Hook runner now detects
NODE_MODULE_VERSIONerrors and surfaces actionable guidance ("run: npm install -g causantic") instead of the generic "internal error" message. These errors are also excluded from transient error retries.
Changed
- Skill template memory queries: Roadmap skill reduced from 10 parallel queries at 8K tokens each (80K total) to 4 sequential queries at 4K (16K cap). Cleanup skill reduced from 4 parallel queries at 8K (32K) to 3 sequential queries at 4K (12K cap) with a 2K summarization step before passing to subagents. Both changes address "prompt is too long" failures.
list-sessionstruncation: Addedlimitparameter (default 30) to thelist-sessionsMCP tool. When results exceed the limit, displays the most recent sessions with a truncation notice.batch-ingestpost-run guidance: Output now includes a "Next steps" section recommendingnpx causantic maintenance run update-clustersto generate topic clusters from ingested sessions.
Full Changelog: v0.9.0...v0.9.1
v0.9.0
Added
- Dashboard retrieval analytics: New analytics section on the Overview page surfaces retrieval feedback data that was previously collected but never visualized. Addresses 4 observability gaps identified in the system audit:
- Tool call frequency: Horizontal bar chart showing MCP tool usage breakdown (search, recall, predict, etc.)
- Retrieval volume over time: Weekly time series of retrieval activity
- Top retrieved chunks: Table of the 10 most-retrieved chunks with project, preview, token count, and retrieval count — surfaces dominant-chunk problems
- Chunk size distribution: Vertical bar chart of chunk token-count buckets (0-200, 201-500, 501-1K, 1K-2K, 2K-5K, 5K+) for validating length penalty tuning
- Per-project retrieval quality: Projects page now shows Retrievals and Unique Queries columns alongside existing chunk counts
- Stat cards: Total Retrievals, Unique Queries, and Top Tool summary cards
ToolUsageChartcomponent: D3 horizontal bar chart for tool usage dataSizeDistributioncomponent: D3 vertical bar chart for chunk size buckets
Changed
GET /api/stats: Response now includes ananalyticsobject withtoolUsage,retrievalTimeSeries,topChunks,projectRetrievals,sizeDistribution, andtotalRetrievals. Gracefully returns empty arrays and 0 when no feedback data exists.GET /api/projects: Each project now includesretrievalsanduniqueQueriesfields (default 0).- SECURITY.md: Updated supported versions to >= 0.9.0.
Tests
- 4 new route tests: empty analytics, populated analytics with feedback data, zero retrieval counts on projects, per-project retrieval counts.
- 2031 total tests passing.
What's Changed
- Add dashboard retrieval analytics and audit fixes by @gvonness-apolitical in #143
Full Changelog: v0.8.2...v0.9.0
v0.8.2
Fixed
- Worktree sessions fragment project identity: When Claude Code runs in a worktree (
isolation: "worktree", introduced in v2.1.47), hook stdin reports the worktree path (e.g.,/tmp/claude-worktree-abc123/) ascwd. All entry points now resolve worktree paths back to the main repository viagit worktree list --porcelainwith a.gitfile parsing fallback. Project identity is consistent across worktree and non-worktree sessions.
Added
src/utils/project-path.ts: New utility —resolveCanonicalProjectPath(cwd)detects linked worktrees, resolves to the main repo path, and caches results. 500ms timeout, submodule-safe.- Claude Code Compatibility section in integration guide: Documents worktree resolution,
CLAUDE_CODE_SIMPLEmode, enterprisedisableAllHooks, and future hook events.
Tests
- 11 new tests for worktree path resolution (unit + integration with real git worktree)
- 2066 total tests passing
See CHANGELOG.md for full details.
What's Changed
- Fix worktree sessions fragmenting project identity by @gvonness-apolitical in #142
Full Changelog: v0.8.1...v0.8.2
v0.8.1
What's Changed
Changed
- Reduced code duplication: Extracted
sqlPlaceholders()anderrorMessage()utilities, store delegation patterns (insertChunk→insertChunks,createEdge→createEdges), and sharedingestionHookCli()for hook CLI entry points. 20 files changed, -25 net lines. - Dashboard dependency: Bumped
lucide-reactfrom^0.469.0to^0.575.0.
Fixed
- 28 documentation accuracy issues across 12 files: edge topology, missing config options and env vars, missing CLI command (
reindex), stale hook config format, missing API routes, and more.
Removed
- Stale artifacts: Deleted broken
hdbscan-benchmark.tsand unusedlabeled-pairs.jsonfixture.
Full Changelog: https://github.com/Entrolution/causantic/blob/main/CHANGELOG.md#081---2026-02-22
What's Changed
- Bump dashboard lucide-react from ^0.469.0 to ^0.575.0 by @gvonness-apolitical in #138
- Remove code duplication across storage, hooks, and error handling by @gvonness-apolitical in #139
- Fix documentation accuracy issues across 12 files by @gvonness-apolitical in #140
- Release v0.8.1 by @gvonness-apolitical in #141
Full Changelog: v0.8.0...v0.8.1
v0.8.0 — Multi-Path Chain Walking
Changed
- Multi-path chain walking: Replaced greedy single-path traversal (
walkSingleChain+pickBestEdge) with DFS backtracking (walkAllPaths). At branching points (agent transitions, cross-session links), all paths are now explored and emitted as candidates.selectBestChain()picks the best from a richer candidate set. Linear chains (out-degree 1) produce identical results to the previous algorithm. - Per-seed independence: Removed global visited set across seeds. Each seed now explores independently with per-path visited sets, allowing different seeds to traverse shared nodes.
- Agent filter scoping:
consecutiveSkipscounter is now scoped per recursive frame (passed as parameter), not shared across backtracking paths.
Added
maxCandidatesPerSeedoption (default: 10) — caps emitted chains per seedmaxExpansionsPerSeedoption (default: 200) — bounds total DFS recursive calls per seed- Score memoization —
scoreNode()results cached per seed walk
Tests
- 10 new multi-path tests, 2 updated existing tests
- 2053 total tests passing
What's Changed
- Codebase cleanup: security, tests, docs, refactoring by @gvonness-apolitical in #133
- Roadmap Phase 1-2: cleanup, quality, infrastructure by @gvonness-apolitical in #134
- Roadmap Phase 3: multi-model embeddings, incremental clustering, relevance feedback by @gvonness-apolitical in #135
- Multi-path chain walking with DFS backtracking by @gvonness-apolitical in #136
Full Changelog: v0.7.2...v0.8.0