grok N1: the wrapper spent up to 5 s on a TERM budget before it finalized the job, so when the watcher swallowed the TERM the silent job's close came ~5 s late and a `completed` written in that gap won (test_issue14 idle-grace). codex D1: `_notify` blocks on a publish for up to 120 s, and the prompt went out right after it; a completed, a re-dispatch or an unreadable record in that window still got the nudge. codex D2: the wrapper pid was checked only at the loop head, so a watcher whose wrapper vanished during a wait could still notify and nudge once. - multi-agent-mux-delegate-job `stop_stall_watch`: KILL + wait, no budget. The watcher holds nothing to flush (its TERM handler is a bare os._exit), and KILL cannot be swallowed. - lib_py/stall_watch.py: `_wrapper_gone()` after every wait (before any notice) and at the loop head; `_may_prompt()` right before the keys - the wrapper is alive and the record, read then, is open and this dispatch; `_dispatch_open(strict=True)` treats an unreadable record as "no". - SKILL.md: the lifetime contract states the one-wait lag and that nothing is sent after the wrapper is seen gone. - tests/test_issue30_stall_watch_stop.py: the stop returns at once against a TERM-ignoring stand-in (took 6 s on the round-2 code); completed, re-dispatch and a torn record during the notice publish withhold the nudge; a wrapper gone during the wait gets no notice and no nudge. All five fail on the round-2 code. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VCgu9Fa9iT7TbJUSzdq4Ff
multi-agent-mux-delegate-job 스킬
작업(Job)을 자율 에이전트(claude-code/hermes/agy/grok-build/codex/opencode/human)에게 위임하고 MQTT
이벤트 채널로 비동기 관찰하는 범용 에이전트 협업 스킬. 시작점은 SKILL.md.
- 프로토콜/스키마:
job-protocol.md - 브로커 PoC→운영 전환:
mqtt-broker-setup.md - 레지스트리 포맷/동시성:
registry.md - 참조 구현:
multi-agent-mux-delegate-job(bash wrapper),scripts/publish_event.py,scripts/job_subscriber.py,scripts/registry.py,scripts/mqtt_common.py - v4.3.0 이후: 위
scripts/*.py는 호환 shim이며 실제 구현은.agents/skills/lib_py/delegation/에 있다 (issue #5 phase 1). 스크립트 경로와 CLI 계약은 그대로이며,lib.sh헬퍼는python -m lib_py.delegation.cli를 호출한다. - 영구 감사 로그:
.mam/delegate_job_logs/<job_id>/(meta.json·events.ndjson·status.json) —multi-agent-mux-delegate-job logs <id>또는multi-agent-mux-delegate-job logs --list로 조회 (SKILL.md "Audit Logs" 참조)