Step 01 · hermes-skills PASS

Test plan: colima-hermes-skills @ 6040ecf3

Container: hermes-testbed · Image: unknown · atm: unknown · Recorded: 2026-09-08T16:23:12Z

Cases

1. doctor PASS

ATM 1.5.9

originhermes-testbed
destinationhermes-testbed
attempt1

2. advertised host PASS

127.0.0.1 (sentences enter by docker exec; --no-peer)

originhermes-testbed
destinationhermes-testbed
attempt1

3. herdr transport (atm doctor, fixture daemon) PASS

socket ({'kind': 'unexpected_response', 'code': 'internal_failure', 'detail': 'Herdr status query did not return a supported response'})

originhermes-testbed
destinationhermes-testbed
attempt1

4. atm-setup-environment / tester: Start line PASS

01M20XB6SYPVP1GVZD63PSTD73

originhermes-testbed
destinationhermes-testbed
attempt1

5. atm-setup-environment / tester: Daemon answers PASS

status: healthy, error_count: 0, versions: 1.5.9

originhermes-testbed
destinationhermes-testbed
attempt1

6. atm-setup-environment / tester: Roster complete PASS

all expected members present (stub-alpha, stub-beta, tester, hermes, oversight)

originhermes-testbed
destinationhermes-testbed
attempt1

7. atm-setup-environment / tester: Doctor passes PASS

error_count: 0, no warnings on expected teams

originhermes-testbed
destinationhermes-testbed
attempt1

8. atm-setup-environment / tester: Self round trip PASS

message_id: 01M20XBGY0JNDH6YGQF8N0MK1K, mutation_applied: true, unread count after read: 0

originhermes-testbed
destinationhermes-testbed
attempt1

9. atm-setup-environment / tester: Cross-host peer PASS

localhost peer trust enabled, message_id: 01M20XBWCB8QXN8BPWNPMK86SP

originhermes-testbed
destinationhermes-testbed
attempt1

10. atm-setup-environment / hermes: Start line PASS

01M20XBEM7R1K82CRWNEN5Z865

originhermes-testbed
destinationhermes-testbed
attempt1

11. atm-setup-environment / hermes: Daemon answers PASS

status: healthy, client: 1.5.9, daemon: 1.5.9

originhermes-testbed
destinationhermes-testbed
attempt1

12. atm-setup-environment / hermes: Roster complete PASS

all 5 expected members present, 0 added

originhermes-testbed
destinationhermes-testbed
attempt1

13. atm-setup-environment / hermes: Doctor passes PASS

error_count: 0, warning_count: 0

originhermes-testbed
destinationhermes-testbed
attempt1

14. atm-setup-environment / hermes: Self round trip PASS

sent: 01M20XBVPRMQC25E74MSST023M, count: 1, mutation_applied: true, unread after: 0

originhermes-testbed
destinationhermes-testbed
attempt1

15. atm-smoke / hermes: Self round trip PASS

sent: 01M20XDFXZ6NWZMKZ8WJZ8C37G, count: 1, mutation_applied: true, unread after: 0

originhermes-testbed
destinationhermes-testbed
attempt1

16. atm-smoke / hermes: Send PASS

01M20XDTCWBZZR9E3FBWM6V0SJ

originhermes-testbed
destinationhermes-testbed
attempt1

17. atm-smoke / hermes: Partner message arrives PASS

0s, id: 01M20XDH9JG5CD02K9ATS43VHN, read: false

originhermes-testbed
destinationhermes-testbed
attempt1

18. atm-smoke / hermes: Peek does not mutate PASS

mutation_applied: false, read: false

originhermes-testbed
destinationhermes-testbed
attempt1

19. atm-smoke / hermes: Read by id PASS

count: 1, mutation_applied: true

originhermes-testbed
destinationhermes-testbed
attempt1

20. atm-smoke / hermes: Read marked it PASS

read: true

originhermes-testbed
destinationhermes-testbed
attempt1

21. atm-smoke / hermes: Stale-connection probe PASS

exit: 0

originhermes-testbed
destinationhermes-testbed
attempt1

22. atm-smoke / hermes: Ack PASS

exit: 0

originhermes-testbed
destinationhermes-testbed
attempt1

23. atm-smoke / hermes: Your message got acked PASS

150s, id: 01M20XJESRAMHB789VP66VHTBN

originhermes-testbed
destinationhermes-testbed
attempt1

24. atm-smoke / tester: Self round trip PASS

message_id: 01M20XD79ER1SV2EBDPVW5NZFZ, count: 1→0, mutation_applied: true

originhermes-testbed
destinationhermes-testbed
attempt1

25. atm-smoke / tester: Send PASS

message_id: 01M20XDH9JG5CD02K9ATS43VHN (ack-required to hermes)

originhermes-testbed
destinationhermes-testbed
attempt1

26. atm-smoke / tester: Partner's message arrives PASS

message_id: 01M20XDTCWBZZR9E3FBWM6V0SJ, read: false, seconds: 9

originhermes-testbed
destinationhermes-testbed
attempt1

27. atm-smoke / tester: Peek does not mutate PASS

mutation_applied: false, read: false

originhermes-testbed
destinationhermes-testbed
attempt1

28. atm-smoke / tester: Read by id PASS

count: 1, mutation_applied: true

originhermes-testbed
destinationhermes-testbed
attempt1

29. atm-smoke / tester: Read marked it PASS

read: true

originhermes-testbed
destinationhermes-testbed
attempt1

30. atm-smoke / tester: Stale-connection probe PASS

exit code: 0

originhermes-testbed
destinationhermes-testbed
attempt1

31. atm-smoke / tester: Ack PASS

exit code: 0

originhermes-testbed
destinationhermes-testbed
attempt1

32. atm-smoke / tester: Your message got acked PASS

ack_reply_id: 01M20XEY2JVSYN4TFHJV683GSX, seconds: 46

originhermes-testbed
destinationhermes-testbed
attempt1

33. atm-hermes-ready / tester: Start line PASS

01M20XQP4PQ7N37KCVGTQK7YF8

originhermes-testbed
destinationhermes-testbed
attempt1

34. atm-hermes-ready / tester: Roster PASS

hermes@testbed found

originhermes-testbed
destinationhermes-testbed
attempt1

35. atm-hermes-ready / tester: Receivers registered PASS

hermes graft receiver active (last_seen_age: 0s)

originhermes-testbed
destinationhermes-testbed
attempt1

36. atm-hermes-ready / tester: Ping PASS

message_id: 01M20XR1N1WQ7K80F72J9B2JHB

originhermes-testbed
destinationhermes-testbed
attempt1

37. atm-hermes-ready / tester: Pong PASS

hermes reply: "ready", seconds: 22, message_id: 01M20XRPJ31JNSEX0GFSZD5HC0

originhermes-testbed
destinationhermes-testbed
attempt1

38. atm-nudge-roundtrip / hermes: Start line PASS

01M20XWYHEC7S4XHQN2W8HQG04

originhermes-testbed
destinationhermes-testbed
attempt1

39. atm-nudge-roundtrip / hermes: Nudge received PASS

id: 01M20XWT8VMDBE7GZ64581VPQX

originhermes-testbed
destinationhermes-testbed
attempt1

40. atm-nudge-roundtrip / hermes: Read by id PASS

count: 1

originhermes-testbed
destinationhermes-testbed
attempt1

41. atm-nudge-roundtrip / hermes: Ack natively PASS

reply sent: 01M20XXCXC7FXXG89RDTRQ4MV7

originhermes-testbed
destinationhermes-testbed
attempt1

42. atm-nudge-roundtrip / hermes: List after idle PASS

exit: 0

originhermes-testbed
destinationhermes-testbed
attempt1

43. atm-nudge-roundtrip / tester: Start line PASS

01M20XWQJPCK4RFC4MSKPBKAJZ

originhermes-testbed
destinationhermes-testbed
attempt1

44. atm-nudge-roundtrip / tester: Send PASS

message_id: 01M20XWT8VMDBE7GZ64581VPQX (ack-required)

originhermes-testbed
destinationhermes-testbed
attempt1

45. atm-nudge-roundtrip / tester: Ack arrives PASS

reply message_id: 01M20XXCXC7FXXG89RDTRQ4MV7, summary: "roundtrip 1788885231", seconds: 33

originhermes-testbed
destinationhermes-testbed
attempt1

herdr-doctor.json

{
 "configured": true,
 "endpoints": [
  {
   "session": null,
   "provenance": "herdr_default",
   "transport": "socket",
   "endpoint": "$HOME/.config/herdr/herdr.sock",
   "binary": null,
   "state": {
    "kind": "unexpected_response",
    "code": "internal_failure",
    "detail": "Herdr status query did not return a supported response"
   },
   "remedy": "Verify supported Herdr and capture response",
   "capabilities": {
    "live_handoff": null
   },
   "members": []
  }
 ],
 "breaker": {
  "state": "closed"
 }
}

report-1.txt

ATM TEST REPORT
skill: atm-setup-environment
fixture: hermes-testbed
agent: tester@testbed  tools: cli
atm: client 1.5.9 daemon 1.5.9
result: PASS   (5/5 steps)
steps:
  0 PASS Start line — 01M20XB6SYPVP1GVZD63PSTD73
  1 PASS Daemon answers — status: healthy, error_count: 0, versions: 1.5.9
  2 PASS Roster complete — all expected members present (stub-alpha, stub-beta, tester, hermes, oversight)
  3 PASS Doctor passes — error_count: 0, no warnings on expected teams
  4 PASS Self round trip — message_id: 01M20XBGY0JNDH6YGQF8N0MK1K, mutation_applied: true, unread count after read: 0
  5 PASS Cross-host peer — localhost peer trust enabled, message_id: 01M20XBWCB8QXN8BPWNPMK86SP
elapsed: 35s

report-2.txt

ATM TEST REPORT
skill: atm-setup-environment
fixture: hermes-testbed
agent: hermes@testbed  tools: native+cli
atm: client 1.5.9 daemon 1.5.9
result: PASS   (6/6 steps)
steps:
  0 PASS Start line — 01M20XBEM7R1K82CRWNEN5Z865
  1 PASS Daemon answers — status: healthy, client: 1.5.9, daemon: 1.5.9
  2 PASS Roster complete — all 5 expected members present, 0 added
  3 PASS Doctor passes — error_count: 0, warning_count: 0
  4 PASS Self round trip — sent: 01M20XBVPRMQC25E74MSST023M, count: 1, mutation_applied: true, unread after: 0
  5 SKIP Cross-host peer — no peer host named in request
elapsed: 45s

report-3.txt

ATM TEST REPORT
skill: atm-smoke
fixture: hermes-testbed
agent: hermes@testbed  tools: native+cli
atm: client 1.5.9 daemon 1.5.9
result: PASS   (10/10 steps)
steps:
  S PASS Start line — 01M20XDB9XXGDMD8GZ1G2TMZ00
  0 PASS Self round trip — sent: 01M20XDFXZ6NWZMKZ8WJZ8C37G, count: 1, mutation_applied: true, unread after: 0
  1 PASS Send — 01M20XDTCWBZZR9E3FBWM6V0SJ
  2 PASS Partner message arrives — 0s, id: 01M20XDH9JG5CD02K9ATS43VHN, read: false
  3 PASS Peek does not mutate — mutation_applied: false, read: false
  4 PASS Read by id — count: 1, mutation_applied: true
  5 PASS Read marked it — read: true
  6 PASS Stale-connection probe — exit: 0
  7 PASS Ack — exit: 0
  8 PASS Your message got acked — 150s, id: 01M20XJESRAMHB789VP66VHTBN
elapsed: 195s

report-4.txt

ATM TEST REPORT
skill: atm-smoke
fixture: hermes-testbed
agent: tester@testbed  tools: cli
atm: client 1.5.9 daemon 1.5.9
result: PASS   (8/8 steps)
steps:
  0 PASS Self round trip — message_id: 01M20XD79ER1SV2EBDPVW5NZFZ, count: 1→0, mutation_applied: true
  1 PASS Send — message_id: 01M20XDH9JG5CD02K9ATS43VHN (ack-required to hermes)
  2 PASS Partner's message arrives — message_id: 01M20XDTCWBZZR9E3FBWM6V0SJ, read: false, seconds: 9
  3 PASS Peek does not mutate — mutation_applied: false, read: false
  4 PASS Read by id — count: 1, mutation_applied: true
  5 PASS Read marked it — read: true
  6 PASS Stale-connection probe — exit code: 0
  7 PASS Ack — exit code: 0
  8 PASS Your message got acked — ack_reply_id: 01M20XEY2JVSYN4TFHJV683GSX, seconds: 46
elapsed: 56s

report-5.txt

ATM TEST REPORT
skill: atm-hermes-ready
fixture: hermes-testbed
agent: tester@testbed  tools: cli
atm: client 1.5.9 daemon 1.5.9
result: PASS   (4/4 steps)
steps:
  0 PASS Start line — 01M20XQP4PQ7N37KCVGTQK7YF8
  1 PASS Roster — hermes@testbed found
  2 PASS Receivers registered — hermes graft receiver active (last_seen_age: 0s)
  3 PASS Ping — message_id: 01M20XR1N1WQ7K80F72J9B2JHB
  4 PASS Pong — hermes reply: "ready", seconds: 22, message_id: 01M20XRPJ31JNSEX0GFSZD5HC0
elapsed: 52s

report-6.txt

ATM TEST REPORT
skill: atm-nudge-roundtrip
fixture: hermes-testbed
agent: hermes@testbed  tools: native
atm: client 1.5.9 daemon 1.5.9
result: PASS   (5/5 steps)
steps:
  0 PASS Start line — 01M20XWYHEC7S4XHQN2W8HQG04
  1 PASS Nudge received — id: 01M20XWT8VMDBE7GZ64581VPQX
  2 PASS Read by id — count: 1
  3 PASS Ack natively — reply sent: 01M20XXCXC7FXXG89RDTRQ4MV7
  4 PASS List after idle — exit: 0
elapsed: 25s

report-7.txt

ATM TEST REPORT
skill: atm-nudge-roundtrip
fixture: hermes-testbed
agent: tester@testbed  tools: cli
atm: client 1.5.9 daemon 1.5.9
result: PASS   (2/2 steps)
steps:
  0 PASS Start line — 01M20XWQJPCK4RFC4MSKPBKAJZ
  1 PASS Send — message_id: 01M20XWT8VMDBE7GZ64581VPQX (ack-required)
  2 PASS Ack arrives — reply message_id: 01M20XXCXC7FXXG89RDTRQ4MV7, summary: "roundtrip 1788885231", seconds: 33
elapsed: 39s

report.md

# Colima integration run 9: atm 1.5.9 (integrate/phase-ay) with Hermes, herdr socket transport

- verdict: **PASS** (7/7 skill reports, every step PASS, no intervention)
- run: 2026-09-08 16:23:12Z start, 16:36:21Z verdict (13 minutes including the testbed image layer rebuild)
- command: `./test.sh` in atm-hermes-testbed (branch `feat/atm-test-skills` at 6c81af1), no arguments
- files beside this report: the run's outputs, unedited (`result.txt`, `report-1.txt` … `report-7.txt`, the seven
  skill reports as received in the fixture's oversight inbox, and `herdr-doctor.json`, `atm doctor --json` `.herdr`
  inside the fixture after bringup), plus the smoke-report set rendered from them by
  `scripts/smoke/colima_skill_report.py` through the sc-compose smoke templates: `colima-hermes-skills.json` (one case
  per skill step), `hermes-testbed-colima-hermes-skills.xhtml` (the evidence pane), `colima-hermes-skills.html` and
  `index.html` (frames), `smoke.envelope.json` (report index)

## Inputs (all from the network, pinned)

| component | source | pin |
| --- | --- | --- |
| atm-daemon + atm CLI 1.5.9 | prerelease-archive.yml run 34249771093, artifact `aarch64-unknown-linux-gnu` | tag `prerelease/v1.5.9` = 0c2d38368 on integrate/phase-ay |
| hermes_atm + atm_graft 1.5.9 wheels | ci.yml run 34249772325 (PR #1308), artifact `hermes-atm-wheels-linux-aarch64` | same commit |
| herdr | GitHub release `herdrdev/herdr` v0.8.2, sha256-checked | build.sh |
| Hermes | fork randlee/hermes-agent, `main` = d45230aac (Hermes Agent v0.21.0, 2026.8.31) | build context |

## The seven reports

| # | skill | agent | tools | result |
| --- | --- | --- | --- | --- |
| 1 | atm-setup-environment | tester@testbed (Claude Code, herdr backend) | cli | PASS 5/5 |
| 2 | atm-setup-environment | hermes@testbed (gateway) | native+cli | PASS 6/6 |
| 3 | atm-smoke | hermes@testbed | native+cli | PASS 10/10 |
| 4 | atm-smoke | tester@testbed | cli | PASS 8/8 |
| 5 | atm-hermes-ready | tester@testbed | cli | PASS 4/4 |
| 6 | atm-nudge-roundtrip | hermes@testbed | native | PASS 5/5 |
| 7 | atm-nudge-roundtrip | tester@testbed | cli | PASS 2/2 |

Every sentence produced its `ATM TEST START` line within a minute; the one `WAIT` line (tester smoke, step 8) was
the 60 s tick while the gateway answered.

## herdr transport: socket (native IPC), proven

The fixture daemon's home config carries `[herdr] transport = "socket"` (written by bringup.sh before the daemon
starts; 1.5.9's default is also socket). `herdr-doctor.json` shows `transport: socket`, endpoint
`$HOME/.config/herdr/herdr.sock`, breaker closed. Every nudge to the herdr-backed `tester` delivered over that path
(reports 1, 4, 5, 7 exist only because the tester was nudged).

Finding, not a run failure: the doctor's herdr **status query** over the socket returns
`unexpected_response / internal_failure: "Herdr status query did not return a supported response"` and lists no
members, while delivery works. Filed as atm-core #1335 (Phase AY).

## Context

Runs 3–8 (atm 1.5.8, 2026-09-08) hardened the fixture to zero interventions; their FAIL/cause/fix table is in
`docs/plans/hermes-integration-tests/reports/hermes-skill-tests-1.5.8-hermes-testbed.md` on atm-core branch
`feat/atm-test-skills`. Run 9 is the first run on integrate/phase-ay and the first over the socket transport.
Not covered: host→container sends over the peer link (`--no-peer`; blocked by atm-core #1309), Windows and x86_64.

Reproduce: `./test.sh` from a checkout of atm-hermes-testbed with `env/allowlist.env` present; it picks the latest
`prerelease/vX.Y.Z` tag on its own and writes this bundle under `.cache/results/<UTC>/site/`.

result.txt

PASS  skills reported 7/7, PASS 7/7 (7 report messages)
atm:    1.5.9 (prerelease/v1.5.9 @ 0c2d38368, prerelease-archive run 34249771093, ci run 34249772325)
hermes: randlee/hermes-agent @ d45230aac
hermes Hermes Agent v0.21.0 (2026.8.31) · upstream d45230aa | atm-daemon 1.5.9 | herdr 0.8.2
herdr transport: socket ({'kind': 'unexpected_response', 'code': 'internal_failure', 'detail': 'Herdr status query did not return a supported response'}) (atm doctor --json .herdr.endpoints[].transport; bringup writes [herdr] transport="socket" to /root/.atm.toml)
skill: atm-setup-environment agent: tester@testbed  tools: cli result: PASS   (5/5 steps) 
skill: atm-setup-environment agent: hermes@testbed  tools: native+cli result: PASS   (6/6 steps) 
skill: atm-smoke agent: hermes@testbed  tools: native+cli result: PASS   (10/10 steps) 
skill: atm-smoke agent: tester@testbed  tools: cli result: PASS   (8/8 steps) 
skill: atm-hermes-ready agent: tester@testbed  tools: cli result: PASS   (4/4 steps) 
skill: atm-nudge-roundtrip agent: hermes@testbed  tools: native result: PASS   (5/5 steps) 
skill: atm-nudge-roundtrip agent: tester@testbed  tools: cli result: PASS   (2/2 steps) 
reports and logs: /Users/randlee/Documents/github/atm-hermes-testbed-worktrees/feat/atm-test-skills/.cache/results/20260908T162312Z
the fixture is still running: docker exec hermes-testbed ... ; ./teardown.sh when done