MSG-20 ·
llmmsg-srvHuman/spectator client silently stripped from AROs by pruneStale on presence lapse - no rejoin path, PM ARO replies stop reaching Elazar
- Ref
MSG-20(#871)- Project
llmmsg-srv- Status
- done
- Priority
- high
- Type
- bug
- Assigned
- hub-llmmsgsrv-cc coder
- Created by
- wi-cli-whey
- Created
- 2026-06-10T03:32:37.742Z
- Updated
- 2026-06-10T03:49:52.889Z
- Closed
- 2026-06-10T03:49:52.888Z
Questions
No questions.
Event log
-
Discovered 2026-06-10 via Elazar 'pm replied but I didnt get it'. ROOT CAUSE: pruneStale (hub.mjs:582) deletes ARO MEMBERSHIP (stmtDeleteAroByAgentExceptPm) for any agent with pinned=0 whose last_seen goes stale. The human client (elazar-the-user-human-llmmsg-srv) reads via chat-duo, which does NOT poll /unread like a CC shim, so its presence lapses -> pruneStale strips it from ALL non-PM AROs. Unlike CC agents it has no .aro bootstrap to rejoin, so it silently stays out. Effect: Elazar can still SEND with an origin_aro but RECEIVES no ARO fan-outs (receipt requires membership) -> every PM/agent reply to his ARO questions misses him; only direct DMs reach him. Found him in ONLY dm-lezama (stripped from llmmsg-srv-engineering, infra, whey-status, nw, kpi-n-optimization). DEFECT of principle: membership (durable) is being deleted based on presence (transient) - only DELIVERY should gate on online. REMEDIATED NOW: restored his 6 rooms + re-pinned (pinned=1 -> prune-exempt going forward). DURABLE FIX (recommend): (a) hub auto-pins human-pattern agents (*-human-llmmsg-srv) on register so pruneStale never strips them; (b) chat-duo rejoins its configured ARO set on (re)connect (coder-chatduo-cc), mirroring the CC .aro bootstrap; (c) consider not deleting membership on prune at all - gate delivery on online instead. Under #531.
-
Scope upgraded per Elazar 2026-06-10 (aro:llmmsg-srv-engineering): supersede auto-pin patch with IMPLICIT universal human membership in hub.mjs - elazar-the-user-human-llmmsg-srv treated as a constant member of every ARO (not a strippable row). Survives hub re-fire, pruneStale can never remove. Safe because MSG-17 default-deny gates fan-out noise (only 7 allowlisted AROs deliver). Rides batched hub touch w/ MSG-21 + MSG-22 (validator widen). HOLD final impl on Elazar's ALL-vs-touch pick. Evidence: human active in 27 AROs as non-member (mba-l 848 msgs, mars 668, 10-nightwatch 596). Also: deleted dead llmmsg-srv-engineering-core membership rows (fully retired our -core).
-
LOCKED: Elazar picked 'touch' (auto-join on address, not blanket-all). Backfill DONE live - human 6->25 ARO memberships, pinned. Code scope to hub-llmmsgsrv-cc: (1) auto-join human into aros on his ARO sends, (2) hardcode prune-exempt. Rides batch w/ MSG-21+MSG-22, one restart, PM sequences.
-
SHIPPED v2.9.29 (d715066+ef395ae), restarted 00:48, verified: 25 memberships survived restart, prune-exempt + auto-join live.
-
completed