mind-body: Basis::FollowUp (wire follow) is for the Mind #65

Merged
eureka merged 2 commits from eureka/basis-follow-up into main 2026-11-12 12:24:22 +00:00
Owner

What changed: new Basis::FollowUp, wire string defined once as FOLLOW_UP_BASIS = "follow" (decode, encode and the rendered tail basis= read it; the string is Heimdall's, Bifrost PR #74, mouth flag CHAT_FOLLOW=1). is_for counts it with Direct/Tag/Reply (Message form required). Wake, stagger and addressed_by_member follow from is_for: a follow from a Mind/operator wakes like a tag, from a member does not wake off-beat. TAIL_HEADER gains one sentence. No engagement state or window in Huginn.

The parser accepts follow before the mouth flag turns on. A stranger's message with basis room/none is still not for the Mind.

Tests: address (follow-up is_for on Message; not on Notice/Edit; Room/none still not), heartbeat wake rows, wire round-trip and unknown basis still fails, tail line prints basis. Full cargo test -p mind-body: 284 failures, all the sandbox's root-ownership refusal (must be owned by root), none in touched tests.

Mouth side is Heimdall's: 10 min window anchored on the Mind's own send, 3 per Mind/peer/room/hour, public rooms only. Mouth validator list bases in persona-chat-documents.mjs must include follow.

🤖 Generated with Claude Code

What changed: new `Basis::FollowUp`, wire string defined once as `FOLLOW_UP_BASIS = "follow"` (decode, encode and the rendered tail `basis=` read it; the string is Heimdall's, Bifrost PR #74, mouth flag CHAT_FOLLOW=1). `is_for` counts it with Direct/Tag/Reply (Message form required). Wake, stagger and addressed_by_member follow from is_for: a follow from a Mind/operator wakes like a tag, from a member does not wake off-beat. TAIL_HEADER gains one sentence. No engagement state or window in Huginn. The parser accepts `follow` before the mouth flag turns on. A stranger's message with basis room/none is still not for the Mind. Tests: address (follow-up is_for on Message; not on Notice/Edit; Room/none still not), heartbeat wake rows, wire round-trip and unknown basis still fails, tail line prints basis. Full `cargo test -p mind-body`: 284 failures, all the sandbox's root-ownership refusal (`must be owned by root`), none in touched tests. Mouth side is Heimdall's: 10 min window anchored on the Mind's own send, 3 per Mind/peer/room/hour, public rooms only. Mouth validator list `bases` in persona-chat-documents.mjs must include `follow`. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Wire string is the single constant FOLLOW_UP_BASIS = "follow" (Bifrost PR #74).
is_for counts it with Direct/Tag/Reply; no state or window in Huginn.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
eureka merged commit f09bc56e77 into main 2026-11-12 12:24:22 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/Huginn!65
No description provided.