Step 01 · assignment PASS

Test plan: colima-assignment @ 0cbc4adc

Container: hermes-testbed-bb5-evidence4-f94125cf5 · Image: sha256:332e9ea1e4502404756a3e3146b47dbceba63e111866729c92c3081e6b26a4b2 · atm: unknown · Recorded: 2026-09-12T23:49:40.144295Z

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-T234940144295Z-queued-one, BB5-T234940144295Z-queued-two, BB5-T234940144295Z-queued-three

commands

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

observed

{
  "blocks": {
    "BB5-T234940144295Z-queued-one": [
      "<atm task=\"BB5-T234940144295Z-queued-one\"\n  queued=\"1\"\n  message=\"01M2C0DNVGB4VCSYZ7MX9MHSNY\"\n  from=\"stub-alpha@testbed\"/>",
      "<atm task=\"BB5-T234940144295Z-queued-one\"\n  ready message=\"01M2C0DNVGB4VCSYZ7MX9MHSNY\"\n  from=\"stub-alpha@testbed\">\n    <action>atm read --message-id\n  01M2C0DNVGB4VCSYZ7MX9MHSNY</action>\n    <action>atm task start\n  BB5-T234940144295Z-queued-one</action>\n    <action>execute the assigned task</action>\n    <console announce=\"concise\"\n  pause=\"false\"/>"
    ],
    "BB5-T234940144295Z-queued-three": [
      "<atm\n  task=\"BB5-T234940144295Z-queued-three\"\n  queued=\"3\"\n  message=\"01M2C0DNXYH25XMJNDGHB8QGH0\"\n  from=\"stub-alpha@testbed\"/>"
    ],
    "BB5-T234940144295Z-queued-two": [
      "<atm\n  task=\"BB5-T234940144295Z-queued-two\"\n  queued=\"2\"\n  message=\"01M2C0DNWN57XAT38M9K53JHP1\"\n  from=\"stub-alpha@testbed\"/>"
    ]
  },
  "queued_positions": {
    "BB5-T234940144295Z-queued-one": [
      1
    ],
    "BB5-T234940144295Z-queued-three": [
      3
    ],
    "BB5-T234940144295Z-queued-two": [
      2
    ]
  },
  "ready_counts": {
    "BB5-T234940144295Z-queued-one": 1,
    "BB5-T234940144295Z-queued-three": 0,
    "BB5-T234940144295Z-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-T234940144295Z-pending-one, BB5-T234940144295Z-pending-two, BB5-T234940144295Z-pending-three

commands

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

From: stub-alpha
At: 2026-09-12T23:49:42.940792502+00:00
Task: BB5-T234940144295Z-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: 01M2C0DRCWAS7245DP2NC32KD2 | 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-T234940144295Z-close-one, BB5-T234940144295Z-close-two

commands

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

observed

{
  "next_task_block": "<atm task=\"BB5-T234940144295Z-close-two\"\n  ready message=\"01M2C0DRT2RSWZJTWCBN5K4BGS\"\n  from=\"stub-alpha@testbed\">\n    <action>atm read --message-id\n  01M2C0DRT2RSWZJTWCBN5K4BGS</action>\n    <action>atm task start\n  BB5-T234940144295Z-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-T234940144295Z-reassign-reassign

commands

commandexitstdout
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb5-evidence4-f94125cf5 atm task assign tester --task-id BB5-T234940144295Z-reassign-reassign --team testbed BB5 reassignment0
assigned BB5-T234940144295Z-reassign-reassign to tester
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb5-evidence4-f94125cf5 atm task assign stub-beta --task-id BB5-T234940144295Z-reassign-reassign --team testbed BB5 moved to stub-beta0
assigned BB5-T234940144295Z-reassign-reassign to stub-beta
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb5-evidence4-f94125cf5 atm task list --all --json0
[
  {
    "team": "testbed",
    "task_id": "BB5-T234940144295Z-reassign-reassign",
    "assignee": "stub-beta",
    "assigner": "stub-alpha",
    "state": "assigned",
    "position": 1,
    "assignment_message_id": "01M2C0E23XWFC71QEZAACPB4CY",
    "description": "BB5 moved to stub-beta",
    "assigned_at": "2026-09-12T23:49:52.893698891Z",
    "updated_at": "2026-09-12T23:49:52.893698891Z",
    "reminder_count": 0,
    "lead_notified_count": 0
  }
]

observed

{
  "new_assignee_row": {
    "assigned_at": "2026-09-12T23:49:52.893698891Z",
    "assignee": "stub-beta",
    "assigner": "stub-alpha",
    "assignment_message_id": "01M2C0E23XWFC71QEZAACPB4CY",
    "description": "BB5 moved to stub-beta",
    "lead_notified_count": 0,
    "position": 1,
    "reminder_count": 0,
    "state": "assigned",
    "task_id": "BB5-T234940144295Z-reassign-reassign",
    "team": "testbed",
    "updated_at": "2026-09-12T23:49:52.893698891Z"
  },
  "old_assignee_block": "<atm\n  task=\"BB5-T234940144295Z-reassign-reassign\"\n  queued=\"1\"\n  message=\"01M2C0E1XT37CJ53PVJH5EN11M\"\n  from=\"stub-alpha@testbed\"/>\n<atm\n  task=\"BB5-T234940144295Z-reassign-reassign\"\n  closed by=\"stub-alpha@testbed\"\n  outcome=\"reassigned\"\n  message=\"01M2C0E23Y278A0Z4CQ1HPYSMV\"/>"
}

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-T234940144295Z-move-one, BB5-T234940144295Z-move-two, BB5-T234940144295Z-move-three

commands

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

observed

{
  "blocks": {
    "BB5-T234940144295Z-move-one": "<atm task=\"BB5-T234940144295Z-move-one\"\n  queued=\"1\"\n  message=\"01M2C0E2FD7K952C2FE9TQSQNP\"\n  from=\"stub-alpha@testbed\"/>",
    "BB5-T234940144295Z-move-three": "<atm\n  task=\"BB5-T234940144295Z-move-three\"\n  queued=\"3\"\n  message=\"01M2C0E2HCC6XVKFER2GJ8PSSP\"\n  from=\"stub-alpha@testbed\"/>\n<atm task=\"BB5-T234940144295Z-move-three\"\n  ready message=\"01M2C0E2HCC6XVKFER2GJ8PSSP\"\n  from=\"stub-alpha@testbed\">\n    <action>atm read --message-id\n  01M2C0E2HCC6XVKFER2GJ8PSSP</action>\n    <action>atm task start\n  BB5-T234940144295Z-move-three</action>\n    <action>execute the assigned task</action>\n    <console announce=\"concise\"\n  pause=\"false\"/>",
    "BB5-T234940144295Z-move-two": "<atm\n  task=\"BB5-T234940144295Z-move-two\"\n  queued=\"2\"\n  message=\"01M2C0E2GD8YQKSNHPXPVQ5V9T\"\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-T234940144295Z-cancel-cancel

commands

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

observed

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

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-T234940144295Z-busy-assigner-active, BB5-T234940144295Z-busy-busy

commands

commandexitstdout
docker exec -e ATM_IDENTITY=tester -e ATM_TEAM=testbed hermes-testbed-bb5-evidence4-f94125cf5 atm task assign stub-alpha --task-id BB5-T234940144295Z-busy-assigner-active --team testbed BB5 active task keeps assigner busy0
assigned BB5-T234940144295Z-busy-assigner-active to stub-alpha
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb5-evidence4-f94125cf5 atm task start BB5-T234940144295Z-busy-assigner-active --team testbed BB5 assigner became busy0
started BB5-T234940144295Z-busy-assigner-active
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb5-evidence4-f94125cf5 atm task assign tester --task-id BB5-T234940144295Z-busy-busy --team testbed BB5 busy assigner0
assigned BB5-T234940144295Z-busy-busy to tester
docker exec -e ATM_IDENTITY=tester -e ATM_TEAM=testbed hermes-testbed-bb5-evidence4-f94125cf5 atm task start BB5-T234940144295Z-busy-busy --team testbed BB5 started while assigner is busy0
started BB5-T234940144295Z-busy-busy
docker exec -e ATM_IDENTITY=tester -e ATM_TEAM=testbed hermes-testbed-bb5-evidence4-f94125cf5 atm task close BB5-T234940144295Z-busy-busy completed --team testbed BB5 completed while assigner is busy0
closed BB5-T234940144295Z-busy-busy (completed)
docker exec -e ATM_IDENTITY=stub-alpha -e ATM_TEAM=testbed hermes-testbed-bb5-evidence4-f94125cf5 atm list --json --team testbed0
{
  "action": "list",
  "team": "testbed",
  "agent": "stub-alpha",
  "selection_mode": "actionable",
  "history_collapsed": false,
  "count": 3,
  "rows": [
    {
      "message_id": "01M2C0E7AHJ04RZJKWCXTRBH7Y",
      "summary": "BB5 completed while assigner is busy",
      "from": "tester",
      "timestamp": "2026-09-12T23:49:58.225751064Z",
      "read": false,
      "pending_ack": false,
      "task_id": "BB5-T234940144295Z-busy-busy"
    },
    {
      "message_id": "01M2C0E79CMQB7NSK25JFDYNMX",
      "summary": "BB5 started while assigner is busy",
      "from": "tester",
      "timestamp": "2026-09-12T23:49:58.188540724Z",
      "read": false,
      "pending_ack": false,
      "task_id": "BB5-T234940144295Z-busy-busy"
    },
    {
      "message_id": "01M2C0E768C8VR12JVNCR2AKKE",
      "summary": "BB5 active task keeps assigner busy",
      "from": "tester",
      "timestamp": "2026-09-12T23:49:58.088854506Z",
      "read": false,
      "pending_ack": false,
      "task_id": "BB5-T234940144295Z-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-bb5-evidence4-f94125cf5 atm read --message-id 01M2C0E7AHJ04RZJKWCXTRBH7Y --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-12T23:49:58.225751064Z",
    "read": false,
    "source_team": "testbed",
    "summary": "BB5 completed while assigner is busy",
    "message_id": "01M2C0E7AHJ04RZJKWCXTRBH7Y",
    "requires_ack": false,
    "taskId": "BB5-T234940144295Z-busy-busy",
    "taskOp": {
      "op": "close",
      "outcome": "completed",
      "reason": "BB5 completed while assigner is busy"
    }
  },
  "selected_message_id": "01M2C0E7AHJ04RZJKWCXTRBH7Y",
  "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-bb5-evidence4-f94125cf5 atm read --message-id 01M2C0E79CMQB7NSK25JFDYNMX --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-12T23:49:58.188540724Z",
    "read": false,
    "source_team": "testbed",
    "summary": "BB5 started while assigner is busy",
    "message_id": "01M2C0E79CMQB7NSK25JFDYNMX",
    "requires_ack": false,
    "taskId": "BB5-T234940144295Z-busy-busy",
    "taskOp": {
      "op": "start"
    }
  },
  "selected_message_id": "01M2C0E79CMQB7NSK25JFDYNMX",
  "match_count": 1,
  "additional_match_count": 0,
  "bucket_counts": {
    "unread": 2,
    "pending_ack": 0,
    "history": 1
  }
}

observed

{
  "messages": [
    {
      "from": "tester",
      "message_id": "01M2C0E7AHJ04RZJKWCXTRBH7Y",
      "pending_ack": false,
      "read": false,
      "summary": "BB5 completed while assigner is busy",
      "task_id": "BB5-T234940144295Z-busy-busy",
      "timestamp": "2026-09-12T23:49:58.225751064Z"
    },
    {
      "from": "tester",
      "message_id": "01M2C0E79CMQB7NSK25JFDYNMX",
      "pending_ack": false,
      "read": false,
      "summary": "BB5 started while assigner is busy",
      "task_id": "BB5-T234940144295Z-busy-busy",
      "timestamp": "2026-09-12T23:49:58.188540724Z"
    }
  ],
  "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-bb5-evidence4-f94125cf5 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": 1789256968715,
      "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": 1789256968719,
      "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": 1789256968703,
      "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": 1789256968707,
      "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": 1789256968711,
      "last_observation_attempt_at": "2026-09-12T23:49:36.696579629Z",
      "last_observation_attempt_by": "herdr_poll",
      "last_observed_at": "2026-09-12T23:49:36.696579629Z",
      "last_observed_by": "herdr_poll",
      "model": "unknown",
      "name": "tester",
      "revision": 2,
      "state": "unknown",
      "tmux_pane_id": null
    }
  ],
  "team": "testbed"
}