Skip to content

v0.2.1 — bugfix release

Choose a tag to compare

@GoVanAI GoVanAI released this 25 Jul 21:11
· 4 commits to main since this release

v0.2.1 — bugfix release

Drop-in upgrade from v0.2.0. No schema changes, no breaking API changes.

Bug fixes

memory_synapse_traverse returned [] despite wikilink synapses existing.

The MCP tool wrapper for synapse traversal had a SQL parameter-binding bug: it built params as [min_weight, connection_type, id, limit] while the SQL's ? placeholders appear in order [JOIN.source_id, WHERE.weight, WHERE.connection_type, LIMIT]. With default min_weight=0, the JOIN's source_id placeholder got bound to 0 — filtering every synapse to source_id=0, which matches nothing.

This broke any client that relied on synapse traversal, including evidence-counting procedures in the reflection skill.

Fix: Extracted runSynapseTraverse helper into src/access.ts with explicit, ordered param binding (JOIN placeholders first, WHERE next, LIMIT last). Refactored memory_synapse_traverse MCP handler to delegate to the helper.


Decay's access-based exemption was dead code.

synapses.access_count was effectively never written. Only memory_get(include_synapses=true) bumped it; every other retrieval path left the counter at 0. Decay's exemption logic (>3 mid-exempt, >10 hot-exempt thresholds) was unreachable. Verified pre-fix: 0 of 378 synapses crossed the >10 threshold.

Fix: Extracted bumpMemoryAccess + bumpSynapseAccess helpers into src/access.ts. Wired into runActivate (result-set neighborhood) and memory_get (unconditional). Critical constraint preserved: synapses.updated_at is not touched on access — preserves the "slow-fading glory" semantic.

Stats

  • Tests: 121 → 138 (+17)
  • Files changed: 10
  • Insertions: +792 / deletions: −55

🤖 Generated with Claude Code