Step 01 · assignment PASS

Test plan: colima-assignment @ 0cbc4adc

Container: hermes-testbed-bb-1517-bb5 · Image: sha256:a5bf8c79a74f8cedb32d646a86b22ced5e8cb766ecbe60bff5d294b0239f93b5 · atm: unknown · Recorded: 2026-09-13T08:03:46.161189Z

Cases

1. three_assignments_show_queued_1_2_3_then_one_ready PASS

three queued positions and exactly one ready prompt for task one

originstub-alpha@testbed
destinationtester@testbed
attempt1
task_idsBB5-T080346161189Z-queued-one, BB5-T080346161189Z-queued-two, BB5-T080346161189Z-queued-three

commands

commandexitstdout
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign tester --task-id BB5-T080346161189Z-queued-one --team testbed BB5 queued task 10
assigned BB5-T080346161189Z-queued-one to tester
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign tester --task-id BB5-T080346161189Z-queued-two --team testbed BB5 queued task 20
assigned BB5-T080346161189Z-queued-two to tester
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign tester --task-id BB5-T080346161189Z-queued-three --team testbed BB5 queued task 30
assigned BB5-T080346161189Z-queued-three to tester

observed

{
  "blocks": {
    "BB5-T080346161189Z-queued-one": [
      "<atm task=\"BB5-T080346161189Z-queued-one\"\n  queued=\"1\"\n  message=\"01M2CWPD0NFRF0Q7TZGDKTB160\"\n  from=\"stub-alpha@testbed\"/>",
      "<atm\n  task=\"BB5-T080346161189Z-queued-one\" ready\n  message=\"01M2CWPD0NFRF0Q7TZGDKTB160\"\n  from=\"stub-alpha@testbed\">\n    <action>atm read --message-id\n  01M2CWPD0NFRF0Q7TZGDKTB160</action>\n    <action>atm task start\n  BB5-T080346161189Z-queued-one</action>\n    <action>execute the assigned task</action>\n    <console announce=\"concise\"\n  pause=\"false\"/>"
    ],
    "BB5-T080346161189Z-queued-three": [
      "<atm\n  task=\"BB5-T080346161189Z-queued-three\"\n  queued=\"3\"\n  message=\"01M2CWPD35XRTS5Q3GQK0HWRHX\"\n  from=\"stub-alpha@testbed\"/>"
    ],
    "BB5-T080346161189Z-queued-two": [
      "<atm\n  task=\"BB5-T080346161189Z-queued-two\"\n  queued=\"2\"\n  message=\"01M2CWPD1YJMBD66PYNT60G9WC\"\n  from=\"stub-alpha@testbed\"/>"
    ]
  },
  "queued_positions": {
    "BB5-T080346161189Z-queued-one": [
      1
    ],
    "BB5-T080346161189Z-queued-three": [
      3
    ],
    "BB5-T080346161189Z-queued-two": [
      2
    ]
  },
  "ready_counts": {
    "BB5-T080346161189Z-queued-one": 1,
    "BB5-T080346161189Z-queued-three": 0,
    "BB5-T080346161189Z-queued-two": 0
  }
}

2. pending_ack_header_stays_zero_across_assignments PASS

assignment mailbox header is Unread 3 / Pending-Ack 0

originstub-alpha@testbed
destinationtester@testbed
attempt1
task_idsBB5-T080346161189Z-pending-one, BB5-T080346161189Z-pending-two, BB5-T080346161189Z-pending-three

commands

commandexitstdout
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign tester --task-id BB5-T080346161189Z-pending-one --team testbed BB5 pending-ack header0
assigned BB5-T080346161189Z-pending-one to tester
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign tester --task-id BB5-T080346161189Z-pending-two --team testbed BB5 pending-ack header0
assigned BB5-T080346161189Z-pending-two to tester
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign tester --task-id BB5-T080346161189Z-pending-three --team testbed BB5 pending-ack header0
assigned BB5-T080346161189Z-pending-three to tester
docker exec -e ATM_IDENTITY=tester -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm read --team testbed0
Queue: tester@testbed
Unread: 3 | Pending-Ack: 0 | History: 0
Selected: 01M2CWPE73M1QS3HXW60ZVBN12 | Matches: 3 | Additional: 2

From: stub-alpha
At: 2026-09-13T08:03:47.555015204+00:00
Task: BB5-T080346161189Z-pending-three
Summary: BB5 pending-ack header
Body:
BB5 pending-ack header

Additional matches remain. Use `atm list` with the same filters to inspect them.

observed

{
  "header": "Queue: tester@testbed\nUnread: 3 | Pending-Ack: 0 | History: 0\nSelected: 01M2CWPE73M1QS3HXW60ZVBN12 | Matches: 3 | Additional: 2"
}

3. close_shows_ready_for_next_task_within_one_pass PASS

closing task one yields one ready prompt for task two

originstub-alpha@testbed
destinationtester@testbed
attempt1
task_idsBB5-T080346161189Z-close-one, BB5-T080346161189Z-close-two

commands

commandexitstdout
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign tester --task-id BB5-T080346161189Z-close-one --team testbed BB5 close readiness0
assigned BB5-T080346161189Z-close-one to tester
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign tester --task-id BB5-T080346161189Z-close-two --team testbed BB5 close readiness0
assigned BB5-T080346161189Z-close-two to tester
docker exec -e ATM_IDENTITY=tester -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task close BB5-T080346161189Z-close-one completed --team testbed BB5 completed first task0
closed BB5-T080346161189Z-close-one (completed)

observed

{
  "next_task_block": "<atm task=\"BB5-T080346161189Z-close-two\"\n  ready message=\"01M2CWPEPPFVXCVJ2QXJNKVAV5\"\n  from=\"stub-alpha@testbed\">\n    <action>atm read --message-id\n  01M2CWPEPPFVXCVJ2QXJNKVAV5</action>\n    <action>atm task start\n  BB5-T080346161189Z-close-two</action>\n    <action>execute the assigned task</action>\n    <console announce=\"concise\"\n  pause=\"false\"/>"
}

4. reassign_shows_closed_reassigned_to_old_and_queued_to_new PASS

old assignee receives closed=reassigned and new assignee owns queued position one

originstub-alpha@testbed
destinationtester@testbed
attempt1
task_idsBB5-T080346161189Z-reassign-reassign

commands

commandexitstdout
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign tester --task-id BB5-T080346161189Z-reassign-reassign --team testbed BB5 reassignment0
assigned BB5-T080346161189Z-reassign-reassign to tester
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign stub-beta --task-id BB5-T080346161189Z-reassign-reassign --team testbed BB5 moved to stub-beta0
assigned BB5-T080346161189Z-reassign-reassign to stub-beta
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task list --all --json0
[
  {
    "team": "testbed",
    "task_id": "BB5-T080346161189Z-reassign-reassign",
    "assignee": "stub-beta",
    "assigner": "stub-alpha",
    "state": "assigned",
    "position": 1,
    "assignment_message_id": "01M2CWPQYA3PFPVRWV94D8W3R5",
    "description": "BB5 moved to stub-beta",
    "assigned_at": "2026-09-13T08:03:57.514617960Z",
    "updated_at": "2026-09-13T08:03:57.514617960Z",
    "reminder_count": 0,
    "lead_notified_count": 0
  }
]

observed

{
  "new_assignee_row": {
    "assigned_at": "2026-09-13T08:03:57.514617960Z",
    "assignee": "stub-beta",
    "assigner": "stub-alpha",
    "assignment_message_id": "01M2CWPQYA3PFPVRWV94D8W3R5",
    "description": "BB5 moved to stub-beta",
    "lead_notified_count": 0,
    "position": 1,
    "reminder_count": 0,
    "state": "assigned",
    "task_id": "BB5-T080346161189Z-reassign-reassign",
    "team": "testbed",
    "updated_at": "2026-09-13T08:03:57.514617960Z"
  },
  "old_assignee_block": "<atm\n  task=\"BB5-T080346161189Z-reassign-reassign\"\n  queued=\"1\"\n  message=\"01M2CWPQVH9W6V38QYT07TYB5M\"\n  from=\"stub-alpha@testbed\"/>\n<atm\n  task=\"BB5-T080346161189Z-reassign-reassign\"\n  closed by=\"stub-alpha@testbed\"\n  outcome=\"reassigned\"\n  message=\"01M2CWPQYB3R3689TFTVVXP13A\"/>"
}

5. move_to_head_while_idle_shows_ready_next_pass_and_no_extra_line PASS

moving task three to head while busy yields its single ready line on the next idle pass

originstub-alpha@testbed
destinationtester@testbed
attempt1
task_idsBB5-T080346161189Z-move-one, BB5-T080346161189Z-move-two, BB5-T080346161189Z-move-three

commands

commandexitstdout
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign tester --task-id BB5-T080346161189Z-move-one --team testbed BB5 move-to-head0
assigned BB5-T080346161189Z-move-one to tester
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign tester --task-id BB5-T080346161189Z-move-two --team testbed BB5 move-to-head0
assigned BB5-T080346161189Z-move-two to tester
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign tester --task-id BB5-T080346161189Z-move-three --team testbed BB5 move-to-head0
assigned BB5-T080346161189Z-move-three to tester
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task move --head --team testbed BB5-T080346161189Z-move-three0
moved BB5-T080346161189Z-move-three for tester from 3 to 1

observed

{
  "blocks": {
    "BB5-T080346161189Z-move-one": "<atm task=\"BB5-T080346161189Z-move-one\"\n  queued=\"1\"\n  message=\"01M2CWPRA7GRFA1Y3D2A2BXQYP\"\n  from=\"stub-alpha@testbed\"/>",
    "BB5-T080346161189Z-move-three": "<atm\n  task=\"BB5-T080346161189Z-move-three\"\n  queued=\"3\"\n  message=\"01M2CWPRC76W9CDCCMFBRVADHD\"\n  from=\"stub-alpha@testbed\"/>\n<atm task=\"BB5-T080346161189Z-move-three\"\n  ready message=\"01M2CWPRC76W9CDCCMFBRVADHD\"\n  from=\"stub-alpha@testbed\">\n    <action>atm read --message-id\n  01M2CWPRC76W9CDCCMFBRVADHD</action>\n    <action>atm task start\n  BB5-T080346161189Z-move-three</action>\n    <action>execute the assigned task</action>\n    <console announce=\"concise\"\n  pause=\"false\"/>",
    "BB5-T080346161189Z-move-two": "<atm\n  task=\"BB5-T080346161189Z-move-two\"\n  queued=\"2\"\n  message=\"01M2CWPRB9YS00SJSQ09PGV1NC\"\n  from=\"stub-alpha@testbed\"/>"
  }
}

6. cancel_shows_closed_cancelled_to_assignee PASS

assignee receives the cancelled terminal line

originstub-alpha@testbed
destinationtester@testbed
attempt1
task_idsBB5-T080346161189Z-cancel-cancel

commands

commandexitstdout
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign tester --task-id BB5-T080346161189Z-cancel-cancel --team testbed BB5 cancellation0
assigned BB5-T080346161189Z-cancel-cancel to tester
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task close BB5-T080346161189Z-cancel-cancel cancelled --team testbed BB5 runner cleanup0
closed BB5-T080346161189Z-cancel-cancel (cancelled)

observed

{
  "block": "<atm task=\"BB5-T080346161189Z-cancel-cancel\"\n  queued=\"1\"\n  message=\"01M2CWPWX98YB1FTBKS7WZMAYE\"\n  from=\"stub-alpha@testbed\"/>\n<atm task=\"BB5-T080346161189Z-cancel-cancel\"\n  closed by=\"stub-alpha@testbed\"\n  outcome=\"cancelled\"\n  message=\"01M2CWPWYA8K6705KKAGZ2EBXP\"/>"
}

7. busy_assigner_receives_started_and_complete_at_write_time PASS

busy assigner mailbox contains start and complete notices immediately after writes

originstub-alpha@testbed
destinationtester@testbed
attempt1
task_idsBB5-T080346161189Z-busy-assigner-active, BB5-T080346161189Z-busy-busy

commands

commandexitstdout
docker exec -e ATM_IDENTITY=tester -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign stub-alpha --task-id BB5-T080346161189Z-busy-assigner-active --team testbed BB5 active task keeps assigner busy0
assigned BB5-T080346161189Z-busy-assigner-active to stub-alpha
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task start BB5-T080346161189Z-busy-assigner-active --team testbed BB5 assigner became busy0
started BB5-T080346161189Z-busy-assigner-active
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task assign tester --task-id BB5-T080346161189Z-busy-busy --team testbed BB5 busy assigner0
assigned BB5-T080346161189Z-busy-busy to tester
docker exec -e ATM_IDENTITY=tester -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task start BB5-T080346161189Z-busy-busy --team testbed BB5 started while assigner is busy0
started BB5-T080346161189Z-busy-busy
docker exec -e ATM_IDENTITY=tester -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm task close BB5-T080346161189Z-busy-busy completed --team testbed BB5 completed while assigner is busy0
closed BB5-T080346161189Z-busy-busy (completed)
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm list --json --team testbed0
{
  "action": "list",
  "team": "testbed",
  "agent": "stub-alpha",
  "selection_mode": "actionable",
  "history_collapsed": false,
  "count": 3,
  "rows": [
    {
      "message_id": "01M2CWPX88RMMAT5GGC9YG8R0X",
      "summary": "BB5 completed while assigner is busy",
      "from": "tester",
      "timestamp": "2026-09-13T08:04:02.952756129Z",
      "read": false,
      "pending_ack": false,
      "task_id": "BB5-T080346161189Z-busy-busy"
    },
    {
      "message_id": "01M2CWPX75PAQ9FFCSP5Z10D9E",
      "summary": "BB5 started while assigner is busy",
      "from": "tester",
      "timestamp": "2026-09-13T08:04:02.917998437Z",
      "read": false,
      "pending_ack": false,
      "task_id": "BB5-T080346161189Z-busy-busy"
    },
    {
      "message_id": "01M2CWPX3WHNY90QM7HBVE4F6P",
      "summary": "BB5 active task keeps assigner busy",
      "from": "tester",
      "timestamp": "2026-09-13T08:04:02.812659318Z",
      "read": false,
      "pending_ack": false,
      "task_id": "BB5-T080346161189Z-busy-assigner-active"
    }
  ],
  "bucket_counts": {
    "unread": 3,
    "pending_ack": 0,
    "history": 0
  }
}
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm read --message-id 01M2CWPX88RMMAT5GGC9YG8R0X --team testbed --json0
{
  "action": "read",
  "team": "testbed",
  "agent": "stub-alpha",
  "selection_mode": "actionable",
  "mutation_applied": true,
  "count": 1,
  "message": {
    "bucket": "unread",
    "class": "unread",
    "from": "tester",
    "text": "BB5 completed while assigner is busy",
    "timestamp": "2026-09-13T08:04:02.952756129Z",
    "read": false,
    "source_team": "testbed",
    "summary": "BB5 completed while assigner is busy",
    "message_id": "01M2CWPX88RMMAT5GGC9YG8R0X",
    "requires_ack": false,
    "taskId": "BB5-T080346161189Z-busy-busy",
    "taskOp": {
      "op": "close",
      "outcome": "completed",
      "reason": "BB5 completed while assigner is busy"
    }
  },
  "selected_message_id": "01M2CWPX88RMMAT5GGC9YG8R0X",
  "match_count": 1,
  "additional_match_count": 0,
  "bucket_counts": {
    "unread": 3,
    "pending_ack": 0,
    "history": 0
  }
}
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm read --message-id 01M2CWPX75PAQ9FFCSP5Z10D9E --team testbed --json0
{
  "action": "read",
  "team": "testbed",
  "agent": "stub-alpha",
  "selection_mode": "actionable",
  "mutation_applied": true,
  "count": 1,
  "message": {
    "bucket": "unread",
    "class": "unread",
    "from": "tester",
    "text": "BB5 started while assigner is busy",
    "timestamp": "2026-09-13T08:04:02.917998437Z",
    "read": false,
    "source_team": "testbed",
    "summary": "BB5 started while assigner is busy",
    "message_id": "01M2CWPX75PAQ9FFCSP5Z10D9E",
    "requires_ack": false,
    "taskId": "BB5-T080346161189Z-busy-busy",
    "taskOp": {
      "op": "start"
    }
  },
  "selected_message_id": "01M2CWPX75PAQ9FFCSP5Z10D9E",
  "match_count": 1,
  "additional_match_count": 0,
  "bucket_counts": {
    "unread": 2,
    "pending_ack": 0,
    "history": 1
  }
}

observed

{
  "messages": [
    {
      "from": "tester",
      "message_id": "01M2CWPX88RMMAT5GGC9YG8R0X",
      "pending_ack": false,
      "read": false,
      "summary": "BB5 completed while assigner is busy",
      "task_id": "BB5-T080346161189Z-busy-busy",
      "timestamp": "2026-09-13T08:04:02.952756129Z"
    },
    {
      "from": "tester",
      "message_id": "01M2CWPX75PAQ9FFCSP5Z10D9E",
      "pending_ack": false,
      "read": false,
      "summary": "BB5 started while assigner is busy",
      "task_id": "BB5-T080346161189Z-busy-busy",
      "timestamp": "2026-09-13T08:04:02.917998437Z"
    }
  ],
  "observed_operations": [
    "close",
    "start"
  ]
}

roster

hermes, oversight, stub-alpha, stub-beta, tester

setup

members

commandexitstdout
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb-1517-bb5 atm members --json --team testbed0
{
  "members": [
    {
      "agent_id": "hermes@testbed",
      "agent_type": "hermes",
      "availability": "unobserved",
      "extra": {},
      "harness": "claude-code",
      "home_dir": "/opt/data",
      "joined_at": 1789286613460,
      "model": "unknown",
      "name": "hermes",
      "revision": 0,
      "state": "unknown",
      "tmux_pane_id": null
    },
    {
      "agent_id": "oversight@testbed",
      "agent_type": "stub",
      "availability": "unobserved",
      "extra": {},
      "harness": "claude-code",
      "home_dir": "/opt/testbed",
      "joined_at": 1789286613466,
      "model": "unknown",
      "name": "oversight",
      "revision": 0,
      "state": "unknown",
      "tmux_pane_id": null
    },
    {
      "agent_id": "stub-alpha@testbed",
      "agent_type": "lead",
      "availability": "unobserved",
      "extra": {},
      "harness": "claude-code",
      "home_dir": "/opt/testbed",
      "joined_at": 1789286613441,
      "live_cwd": "/opt/testbed",
      "model": "unknown",
      "name": "stub-alpha",
      "revision": 0,
      "state": "unknown",
      "tmux_pane_id": null
    },
    {
      "agent_id": "stub-beta@testbed",
      "agent_type": "stub",
      "availability": "unobserved",
      "extra": {},
      "harness": "claude-code",
      "home_dir": "/opt/testbed",
      "joined_at": 1789286613448,
      "model": "unknown",
      "name": "stub-beta",
      "revision": 0,
      "state": "unknown",
      "tmux_pane_id": null
    },
    {
      "agent_id": "tester@testbed",
      "agent_type": "claude",
      "availability": "fresh",
      "backend": "herdr",
      "extra": {
        "backendType": "herdr",
        "herdrSession": "default"
      },
      "harness": "claude-code",
      "herdrSession": "default",
      "home_dir": "/opt/testbed",
      "joined_at": 1789286613454,
      "last_observation_attempt_at": "2026-09-13T08:03:41.422665289Z",
      "last_observation_attempt_by": "herdr_poll",
      "last_observed_at": "2026-09-13T08:03:41.422665289Z",
      "last_observed_by": "herdr_poll",
      "model": "unknown",
      "name": "tester",
      "revision": 2,
      "state": "unknown",
      "tmux_pane_id": null
    }
  ],
  "team": "testbed"
}