4.4 KiB
4.4 KiB
2026-09-19 — Ashbot Gate3 dispatch stumble (SOCKS + false "started")
What happened
Anthony waited ~10+ min with "Nothing." CoS had said Ashbot was dispatched. She never ran. No iMessage. No job folder at first.
Root causes (ordered)
- Silent false start: CoS reported "dispatching" before the relay actually succeeded. First attempt died in ~5s on Tailscale SOCKS (
AssertionErrorin socks5 handshake). Job folder never created. User saw silence. - Detached Windows launch unreliable over SSH:
start /BandStart-Processof a.batdid not execute (empty_launch.log, no BAT_START). Looked "dispatched" when nothing ran. - Wrong default profile: Desktop
active_profilewasjimmyuntil CoS explicitly wroteashbot. EnvHERMES_PROFILEalone is not enough — setactive_profilefile too. - Argv mangling risk: Long briefs via
cli.py -q "<huge prompt>"still risky on Windows. Prefer file brief (_cos_brief.txt) read by launcher.
Locked workflow (Ashbot / any Hermes oneshot from CoS)
- Prove path before claiming start
- SOCKS
:1055up → SSHfight@100.64.0.1OK → SFTP write job folder → only THEN tell Anthony "started."
- SOCKS
- Job folder first (evidence before inference)
- Create
hermes\workspace\<client>\<job>\YYYY-MM-DD\ - Write
STATUS.md(starting),_cos_brief.txt, setACTIVE_JOB.txt, setactive_profileto target seat.
- Create
- Launch pattern (proven)
- SSH sync exec of launcher Python (real
cpython-3.11.16\python.exe+_launch.py). - Do not rely on
start /B/Start-Processfor oneshots until proven with log lineBAT_START. - Launcher must log
LAUNCH … pid=into_launch.logand flip STATUS toworkingwith pid.
- SSH sync exec of launcher Python (real
- Ashbot iMessage contract (non-negotiable)
- Brief first action: iMessage Anthony that directions received / work starting.
- Brief last action: iMessage done + evidence path.
- CoS also pings Grok Bot chat on true dispatch (folder+pid confirmed).
- No silent waits
- Mid-job: STATUS ping ~every 5 min from
STATUS.mduntildone/blocked. - If launch fails: ping Anthony immediately with failure mode (SOCKS/SSH/profile/exit), not after they ask "Nothing."
- Mid-job: STATUS ping ~every 5 min from
What worked
- File brief +
_launch.py+ SSH sync channel →LAUNCH2 ashbot chars=… active=ashbot+pid=+ STATUSworking. - Method A fallback: real Python +
cli.py(nothermes.exeover SSH).
Follow-ups
- Add this into Gitea
docs/agents/or org v1 relay section when next syncing. - Optional: STATUS watcher routine only when
ACTIVE_JOB.txtpoints at a live job. - Re-test detached launch later; until then SSH-sync is the standard.
Second stumble same job — iMessage never left Ashbot
After the job did run (13:36–13:52 PT), both required iMessages failed:
- Photon free-tier shared line:
"Target not allowed for this project" - Free lines can only reply after Anthony texts that number first that day.
- Inbound gateway was healthy; outbound blocked until he opens the thread.
Locked rule (Ashbot ↔ Anthony iMessage)
- Before expecting Ashbot start/done texts: Anthony sends any iMessage to the Ashbot Photon number (opens the free-tier allow).
- If CoS needs Anthony notified and iMessage is blocked: CoS pings Grok Bot chat immediately (do not wait on Photon).
- Treat "iMessage contract" as best-effort on free tier; chat ping is the guaranteed channel.
Third stumble — email capability gap
Ashbot drafted email-birdeye.txt but could not send (send_mail not available in that oneshot session) despite Anthony enabling email on the profile earlier.
- Locked: after enabling a Hermes capability, CoS verifies it in the oneshot path (same env/profile as Method A), not only Desktop interactive.
- Until verified: CoS routes "send this draft" as Gatekeeper click / Anthony relay, or re-brief with explicit send tool check.
Job outcome (for the record)
- Birdeye: stale La Mae @ Flying C confirmed; email draft ready, not sent.
- FindGlocal: already canonical → WONT-DO.
- hairsalonsinusa: Cloudflare 403 → WONT-DO (needs browser retry).
Fourth stumble — CoS silent after done
Birdeye send finished ~14:28 PT (STATUS done, email accepted). CoS did not ping Anthony until he wrote "It's been a long time" (~14:39).
Locked rule
On Hermes done/blocked, CoS pings Grok Bot chat immediately with TLDR + evidence path. Mid-job 5-min pings while working; terminal ping is mandatory, not optional.