fix(reset): fence every job registry the reset reads, by its physical directory (#78)
Review round 3 R1 (codex): the registration guard chose the workspace marker from the path's spelling, so a symlink alias of .mam/jobs or a MAM_JOBS_DIR registry was not refused. The reset now writes .reset-in-progress into each registry its open-job check reads (.mam/jobs, MAM_JOBS_DIR, a row's other control_plane.mam_jobs_dir - the latter only for this workspace's sessions), each under that registry's lock and before the check, and removes it on exit; register_job reads the marker inside the registry it writes to. The precheck's separate lock barrier is subsumed by the fence. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
548c6854ea
commit
568385c77a
6 files changed
+186
-75
No files matched your search
@@ -141,8 +141,8 @@ $PY scripts/registry.py status --job <id> --set completed # set status
|
||||
$PY scripts/registry.py pick --agent-session herdr:claude # claim → running
|
||||
```
|
||||
|
||||
Exit codes: `0` ok, `1` not found / bad status / (`register`) a reset of the
|
||||
workspace owning `<ws>/.mam/jobs` is in progress (Issue #78), `3` (`pick`) no
|
||||
Exit codes: `0` ok, `1` not found / bad status / (`register`) a reset fenced
|
||||
this registry (its `.reset-in-progress` names a live reset, Issue #78), `3` (`pick`) no
|
||||
pending job for that session.
|
||||
|
||||
---
|
||||
|
||||
Reference in new issue
Block a user