Files
openclaw/extensions/memory-core
synth 6d2ff9ef38 fix(memory): permanent legacy sidecar migration warning for empty placeholder OpenClaw creates (#114661)
* fix(memory-core): fail closed on non-ENOENT companion stat errors

Only treat ENOENT as 'sidecar is absent'. Other fs errors (EACCES, EIO,
ELOOP, EMFILE) now return null (fail-closed) instead of silently treating
the sidecar as zero-byte, preventing legacy data from being dropped on
transient or permission failures.

* fix(memory): silence self-inflicted legacy sidecar migration warning

OpenClaw can leave a zero-byte placeholder at the legacy memory sidecar
path (~/.openclaw/memory/<agentId>.sqlite) while the live memory index
is the per-agent SQLite database. The legacy-index migration check found
the empty file, attached it, saw no legacy schema, and warned on every
CLI invocation and gateway start, with no way for users to clear it.

Treat a demonstrably empty sidecar (zero-byte main file and no WAL or
journal content) as nothing to import: remove it quietly as a migration
change instead of emitting a permanent warning. Sidecars that contain
any bytes still go through the existing import and warning paths, so a
real legacy index or a genuinely unrecognized database is unaffected.

Closes #114626

* fix(memory-core): fail closed on non-ENOENT companion stat errors

Only treat ENOENT as 'sidecar is absent'. Other fs errors (EACCES, EIO,
ELOOP, EMFILE) now return null (fail-closed) instead of silently treating
the sidecar as zero-byte, preventing legacy data from being dropped on
transient or permission failures.

* test(memory-core): add ELOOP and EACCES companion stat regression coverage

Regression tests for the fail-closed fix: when a WAL/SHM/journal
companion's fs.stat fails with ELOOP (self-referential symlink) or
EACCES (permission denied), the migration must NOT remove the main
legacy sidecar file. Only ENOENT means genuinely absent.

Addresses Whatsskill Codex review P1 finding on openclaw/openclaw#114661.

* ci: retrigger after transient runner failures
2026-08-02 07:51:20 -07:00
..
2026-06-04 21:40:44 -04:00