You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Blocked by #113. Adding the lock to paths that take none today is safe only once nothing nests the old lock.
Problem. These still bypass any lock:
uninstall. Its only guard is findStone(), which doesn't see a download or a prepare in progress. Uninstalling in one window while another sets up leaves a half-installed root.
"Reinstall Python" (reinstallGrail).
gemdb.restartMcpServer.
The gemdb.externalDatabase.* listener's stopMcpServer.
The gemdb.mcp.readOnly toggle. Every open window's configuration listener restarts the router, so connected agents are dropped once per window.
Scope:
Run the bring-up entry points above through the lock.
For the toggle, record the router's mode in RouterState (readOnly; the field doesn't exist yet) and restart only when the recorded mode differs. A missing field counts as different, which costs one extra restart beside older versions.
uninstall takes withRootLock({contention:'skip'}). When the lock is held, refuse with: "Another window is setting up or starting GemDB. Try again when it finishes."
CHANGELOG entry.
Manual check:
Toggle read-only with two windows open: one restart.
Uninstall while another window is starting GemDB: refused.
Activity