T1-14 and T1-20 model an agent that goes `working` and completes late. Under
the liveness contract an agent that never publishes `started` is a delivery
failure, so the watcher threads now acknowledge (non-blocking: the record
lands in events.log before the wire publish) and the late completion is
honoured inside the K x N grace as before. help-job_subscriber.txt records
the intended --ack-timeout option.
Full suite at 66f23c7: 888 passed, 3 failed (these), 0 leaked daemons.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VCgu9Fa9iT7TbJUSzdq4Ff
34 lines
1.7 KiB
Plaintext
34 lines
1.7 KiB
Plaintext
usage: job_subscriber.py [-h] (--job JOB | --wait-any) [--timeout TIMEOUT]
|
|
[--idle-timeout IDLE_TIMEOUT]
|
|
[--ack-timeout ACK_TIMEOUT] [--expect-retention]
|
|
[--expect-dispatch-token EXPECT_DISPATCH_TOKEN]
|
|
[--attempt-id ATTEMPT_ID]
|
|
[--registry-dir REGISTRY_DIR] [--remote] [-v]
|
|
|
|
Subscribe to Job events on MQTT
|
|
|
|
optional arguments:
|
|
-h, --help show this help message and exit
|
|
--job JOB job id to watch
|
|
--wait-any watch every pending/running job in the registry
|
|
--timeout TIMEOUT wall-clock budget in seconds (default: job.timeout_sec
|
|
or 3600)
|
|
--idle-timeout IDLE_TIMEOUT
|
|
max seconds with no new event (default:
|
|
job.idle_timeout_sec or 120)
|
|
--ack-timeout ACK_TIMEOUT
|
|
extra idle budget before the first event, for the
|
|
injection to produce `started` (default:
|
|
job.ack_timeout_sec; Issue #18)
|
|
--expect-retention warn if no retained terminal event arrives promptly
|
|
--expect-dispatch-token EXPECT_DISPATCH_TOKEN
|
|
expected dispatch token for CAS verification
|
|
--attempt-id ATTEMPT_ID
|
|
minimum attempt id to accept events for
|
|
--registry-dir REGISTRY_DIR
|
|
--remote the agent shares no disk with this registry: mirror
|
|
started/terminal events into the job record (Issue
|
|
#18; automatic for jobs registered with --transport
|
|
remote)
|
|
-v, --verbose
|