vault-sync: 2026-10-02 07:10 (jimmy)
This commit is contained in:
+66
@@ -0,0 +1,66 @@
|
||||
# 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)
|
||||
1. **Silent false start:** CoS reported "dispatching" before the relay actually succeeded. First attempt died in ~5s on Tailscale SOCKS (`AssertionError` in socks5 handshake). Job folder never created. User saw silence.
|
||||
2. **Detached Windows launch unreliable over SSH:** `start /B` and `Start-Process` of a `.bat` did not execute (empty `_launch.log`, no BAT_START). Looked "dispatched" when nothing ran.
|
||||
3. **Wrong default profile:** Desktop `active_profile` was `jimmy` until CoS explicitly wrote `ashbot`. Env `HERMES_PROFILE` alone is not enough — set `active_profile` file too.
|
||||
4. **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)
|
||||
1. **Prove path before claiming start**
|
||||
- SOCKS `:1055` up → SSH `fight@100.64.0.1` OK → SFTP write job folder → only THEN tell Anthony "started."
|
||||
2. **Job folder first (evidence before inference)**
|
||||
- Create `hermes\workspace\<client>\<job>\YYYY-MM-DD\`
|
||||
- Write `STATUS.md` (`starting`), `_cos_brief.txt`, set `ACTIVE_JOB.txt`, set `active_profile` to target seat.
|
||||
3. **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-Process` for oneshots until proven with log line `BAT_START`.
|
||||
- Launcher must log `LAUNCH … pid=` into `_launch.log` and flip STATUS to `working` with pid.
|
||||
4. **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).
|
||||
5. **No silent waits**
|
||||
- Mid-job: STATUS ping ~every 5 min from `STATUS.md` until `done`/`blocked`.
|
||||
- If launch fails: ping Anthony immediately with failure mode (SOCKS/SSH/profile/exit), not after they ask "Nothing."
|
||||
|
||||
## What worked
|
||||
- File brief + `_launch.py` + SSH sync channel → `LAUNCH2 ashbot chars=… active=ashbot` + `pid=` + STATUS `working`.
|
||||
- Method A fallback: real Python + `cli.py` (not `hermes.exe` over 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.txt` points 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)
|
||||
1. Before expecting Ashbot start/done texts: Anthony sends any iMessage to the Ashbot Photon number (opens the free-tier allow).
|
||||
2. If CoS needs Anthony notified and iMessage is blocked: CoS pings Grok Bot chat immediately (do not wait on Photon).
|
||||
3. 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.
|
||||
Reference in New Issue
Block a user