fix(issue-50): a claimed dry-run job holds its session (review 211037ab F1)

open_jobs skips a dry-run record only while it is pending: a pick-pending
claim makes it running work, which the admission must wait for.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VCgu9Fa9iT7TbJUSzdq4Ff
This commit is contained in:
GodopuandClaude Opus 5.5 committed 2026-10-12 10:12:05 +09:00
1 parent a9ffedac36
commit efd27def47
2 files changed
+10 -4

No files matched your search

+4 -2
View File
@@ -297,9 +297,11 @@ def open_jobs(registry_dir: str, session: str, job_id: str, now: Optional[int] =
rec = _load_record(registry_dir, other)
if rec is None or _bare(str(rec.get("agent_session") or "")) != sess:
continue
if rec.get("dry_run"): # a submit --dry-run is never dispatched (review 1e25cf2f F1)
continue
status = rec.get("status")
# a submit --dry-run is never dispatched (review 1e25cf2f F1); once a
# pick-pending claims it, it is running work like any other (211037ab F1)
if rec.get("dry_run") and status == "pending":
continue
if status == "running":
idle = _int_field(rec, "idle_timeout_sec", DEFAULT_IDLE_TIMEOUT_SEC)
if recent_disk_heartbeat(registry_dir, other, idle):
+6 -2
View File
@@ -174,8 +174,12 @@ def test_u1e_a_dry_run_record_is_not_an_open_job(tmp_path):
me = _register(reg)
assert decide.open_jobs(str(reg), "herdr:s", me) == ([], [])
assert decide.wait_open_jobs(_ns(reg, me)) == "clear"
# control: the same record without the mark is an `injected` job that holds the session
_edit(reg, dry, dry_run=None)
# claimed by a pick-pending and started, it is running work (review 211037ab F1)
_edit(reg, dry, status="running")
_event(reg, dry, time.time(), event="started")
assert decide.wait_open_jobs(_ns(reg, me)) == f"busy {dry}"
# control: the pending record without the mark is an `injected` job that holds the session
_edit(reg, dry, status="pending", dry_run=None)
assert decide.wait_open_jobs(_ns(reg, me)) == f"busy {dry}"