v0.14.0
Routes the MCP tool surface by intent, adds first-class OpenClaw ingestion, and makes local Lance stores crash-consistent (fsync on write + self-heal on open).
🛠 Breaking Changes
- mcp: [breaking] route the tool surface - rename pond_sql, split pond_get into pond_get_session/pond_get_message (d72bd3b) -
pond_sql_queryis nowpond_sql, and the singlepond_getsplits intopond_get_session(reads a whole session) andpond_get_message(expands one message), so each tool routes on caller intent instead of guessing what an id means.
🎉 New Features
- OpenClaw integration - adapter, serve --with-sync, and openclaw-pond plugin (#114) (2f87e3f) - a native OpenClaw session adapter, a
serve --with-syncmode that keeps the store fresh while the MCP server runs, and theopenclaw-pondplugin to wire it up.
🐛 Bug Fixes
- substrate: self-heal crash-poisoned local stores and fsync local writes (#118) (05b9f24)
- Local writes now fsync the file and its parent directory after every put/copy/rename (unix, local stores only), so a crash can't leave a manifest published but unflushed. Measured cost is +4.2% (130.86s -> 136.40s) on the heaviest local path - a full 3.78M-row store copy with index rebuild - and effectively nil on routine incremental syncs, since Lance writes few large files and fsyncs amortize per file, not per row.
- A failed open now self-heals instead of staying wedged: it walks
_versions/head-down, scan-verifies each manifest by draining a full-column scan, quarantines any crash-poisoned manifest by atomic rename to*.manifest.corrupt(never deletes), then retries the open once. Scan-verify projects every column because a column-update commit (embed's vector write) puts new columns in their own per-fragment data files a narrow scan would skip;file+uring://stores are healed too.
- embed: two-step backlog gate - manifest-only lag fast path, exact-count confirm (#73) (464f954) - the embedding-backlog check first reads a cheap manifest-only lag signal and only falls back to an exact
count_rowsconfirm when that signal says work may be pending, avoiding a full count on every gate.
Full Changelog: v0.13.2...v0.14.0