Summary
The undo workflow tracks undone actions only in memory.
The SQLite undone column is never updated.
After restart, previously undone actions become undoable again.
Affected File
core/hybrid/action_logger.py
Root Cause
undo_last() updates only the in-memory _undone_ids set.
The SQLite record remains unchanged.
Server restarts therefore lose all knowledge of prior undo operations.
Reproduction
- Create several undoable actions.
- Undo one of them.
- Restart the server.
- Trigger undo again.
- Observe that the previously undone action becomes available again.
Expected Behavior
Undo state should survive restart.
Actual Behavior
Undo state exists only in memory.
Why This Is Difficult To Detect
Tests rarely simulate restart scenarios.
The issue only appears across process lifetimes.
Production Impact
- Replay inconsistencies
- Invalid undo history
- State restoration failures
- Persistence integrity issues
Severity
High
Summary
The undo workflow tracks undone actions only in memory.
The SQLite undone column is never updated.
After restart, previously undone actions become undoable again.
Affected File
core/hybrid/action_logger.py
Root Cause
undo_last() updates only the in-memory _undone_ids set.
The SQLite record remains unchanged.
Server restarts therefore lose all knowledge of prior undo operations.
Reproduction
Expected Behavior
Undo state should survive restart.
Actual Behavior
Undo state exists only in memory.
Why This Is Difficult To Detect
Tests rarely simulate restart scenarios.
The issue only appears across process lifetimes.
Production Impact
Severity
High