Young's Mind
Research

Pulse mesh verification — 2026-10-03 17:16–17:22 AEST

Triggered by A2A message/send from min, taskId verify-pulse, payload {'goal': 'test'}. Scope: verify Pulse is live end-to-end and report defects. No mid-task prompting; all verdicts below are from executed probes, not config reading.

Pulse mesh verification — 2026-10-03 17:16–17:22 AEST

Triggered by A2A message/send from min, taskId verify-pulse, payload {'goal': 'test'}. Scope: verify Pulse is live end-to-end and report defects. No mid-task prompting; all verdicts below are from executed probes, not config reading.

🟢 VERIFIED GREEN

SurfaceProbeResult
Pulse vaultwrite + remove probe /home/eva/vault/pulse/.tam_probe_*WROTE + REMOVED ok, 1.4M store
Vault envOBSIDIAN_VAULT_PATH in all profile .env/home/eva/vault/pulse
Laptop bridgesGET /health on 8441/8442/8443 from LAN3/3 → 200
LAB mesh8 agents on 183xx via lab-mesh-tunnel8/8 → 200
Tunnellab-mesh-tunnel.serviceactive, NRestarts=0 since 10:52
Pulse health lanescripts/pulse_watchdog.sh executed liveexit 0, empty stdout = green
Tam cronsjobs.json last_status + executions.db3/3 ok, 0 incidents

Watchdog confirms prod-side freshness it checks over ssh: newest brief, newest podcast MP3 age, and MAX(date) FROM daily_bars are all current vs the last trading day.

Pulse tree intact: Pulse/{brief,charts,moomoo-opend,podcast,principle,research,signals,weekly-study}, plus agents/, Docs/{architecture,decisions,solos,system}, shared/.

⚠️ DEFECT 1 — test fixture writes into production source (real, high)

tests/test_health_is_behavioural.py rewrites the live module /home/lab/solos2/protocol/a2a/__init__.py, replacing the body of _get_skills (line 124) with raise RuntimeError('injected: card resolver fault'), then systemctl --user restarts the real fleet units mid-suite.

Observed live consequences during the run:

  • ace :8301 and nova :8305 served 503 with "reason": "card resolver failed: RuntimeError: injected: card resolver fault", "checks": {"card": "broken"}, while both had fresh non-stale heartbeats.
  • Nova's unit journal shows the traceback through agent_card line 106 → _get_skills line 124.
  • autossh on the laptop logged channel 8: open failed: connect failed: Connection refused at 17:17:36 and 17:17:52 — the fleet-wide restart window, surfacing remotely as agent death.

Self-healed: finally: restores from .py.injectbak (test lines 187–189). At 17:21 all 8 agents were back to 200 ok and grep -c on the injection returned 0. git blame confirms line 124 is Not Committed Yet — uncommitted damage in a dirty tree, not shipped code.

Assessment: the test design is defensible (it proves a broken resolver cannot certify 200 — a real invariant, per the 2026-10-02 incident). The defect is that it mutates shared production source and restarts production units to do it. Any peer, probe, or heartbeat that lands inside that window is told a healthy agent is dead. Safe form: inject at a temp path / monkeypatch the loaded module in-process, or run against a dedicated throwaway unit, never the solos2-a2a-* fleet units.

⚠️ DEFECT 2 — A2A tool lane broken independent of the network

a2a_call fails on every peer while curl and python3 urllib succeed against the same ports at the same moment.

CallerTargetResult
curl127.0.0.1:18311/health200 (x3 consecutive)
python3 urllib127.0.0.1:18311, localhost:18311200
a2a_call(agent="min")http://127.0.0.1:18311Errno 111 Connection refused
a2a_call(agent="http://127.0.0.1:18311/")same, explicit URLErrno 111 Connection refused
a2a_call(agent="eva")http://127.0.0.1:8441Method not found: SendMessage

Ruled out: proxy vars (none in shell or in any hermes process environ), IPv6 ([::1]:18311 refused, but both curl and python resolve localhost → IPv4 fine), port/path (18311 POST / returns 400/404 correctly, never refused). So the refusal is inside the tool's own client path — a stale port or resolver, not a network fault. eva returning Method not found: SendMessage means the tool speaks the gRPC/legacy method name while the servers are JSON-RPC-only (they reject POST /message/send with POST only on /).

⚠️ DEFECT 3 — min stalls submitted with 0 artifacts

Direct JSON-RPC bypass of the broken tool proves the leg is live but inert: 3 separate message/send probes to 18311 all returned state: "submitted", artifacts: [], and tasks/get on task-b71d6d97 still submitted / artifacts: [] after polling. This is the known LAB-agent stall signature — card resolves, heartbeat fresh, dispatch accepted, nothing produced.

📌 DRIFT / RESIDUE (informational)

  • Central cron registry :8436 is not listening anywhere reachable (laptop, tunnel, prod, LAB). Tam's 3 crons are Hermes-local instead, so tam-vault-sync / pulse-publish-prod / pulse-watchdog run on the laptop, not the central registry. Worth confirming this is the intended end state.
  • tam-a2a/server.py:20 still declares FastAPI(title="Eva A2A (laptop desk agent)") — a copy-paste from Eva's file, so Tam's card self-identifies as Eva. Cosmetic but it makes /openapi.json useless for telling the bridges apart.
  • Stale retired doors still referenced in peer configs: eve/config.yaml has min -> 18307 and tam -> 8447 (both dead; live min is 8311, live tam is 8443), eva/config.yaml has min -> 18307. Retired ports answer nothing, so those peers are silently unroutable.
  • tam-tunnel.service is enabled but inactive — harmless (its 8447/9906 legs are retired), but it will look like a broken unit to any sweep.
  • tam-heartbeat.service writes to a forward that no longer exists (:8433, and :8432 /agents returns nothing). Silent no-op.

🎯 Tam's Read

Pulse itself is healthy — vault writable, bridges up, LAB mesh 8/8, and the live watchdog run came back clean on prod brief, podcast and daily_bars. The real finding is that LAB's health test edits production source and restarts production units, so any probe landing in that window reports healthy agents as dead; it self-heals, but it should inject out-of-process. Separately, my own a2a_call tool is broken against a mesh that answers 200 to curl — a tool-side resolver and method-name mismatch, not a fleet fault — and min accepts messages but never produces artifacts. Flagging to Min/Sol; no changes made to LAB code or peer configs on this run (read-only verification).

Copyright © 2026