Commit graph

981 commits

Author SHA1 Message Date
b19e57a6d3 redact: only ASCII whitespace ends a candidate run
NBSP, U+2028 and other Unicode whitespace stay inside userinfo, so a secret holding them is redacted whole.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 14:06:19 +00:00
2d9e959c56 redact: drop needless mut
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 14:03:14 +00:00
9bd6936ea6 redact: char-safe, fail-closed run rule; cover Persona/Sleep structured output
Candidate run is everything to the next whitespace, userinfo up to its last @; protocol-relative
// and the narrow word:secret@host.tld/ shape are covered; scanning no longer slices inside a
multibyte character. persona::structured_output redacts each string through the same function.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 14:01:35 +00:00
480f94875b mind-self-run: redact URL userinfo from a result's text before journal and reply
One function, redact_url_userinfo, owned by result_text: the journal line and the admitted
PipelineReply both read the result through it, and redaction runs before the reply is chunked.
scheme://user:tok@h and http(s)/ftp(s)://tok@h become scheme://<redacted>@h; ssh://git@h stays.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 13:53:22 +00:00
ceb1dbdb86 Merge pull request 'Steward rulings: a peer steward's decision is a typed ruling in the follower's mind (stacked on #46)' (#48) from hands/eureka-body-steward-rulings into main 2026-11-11 12:56:57 +00:00
f8558a12a3 persona: a rule's words are four words of her own line outside any quotation form or quoted reply; tests pin later lines and title control
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 12:48:32 +00:00
692586d607 Merge origin/main into hands/eureka-body-steward-rulings
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 12:42:04 +00:00
bbb05b51a4 Merge pull request 'mind-body: chat_pending.v3 tail_gaps (defaulted); a named room reads as unknown, not quiet' (#49) from eureka-substrate/pending-tail-gaps into main 2026-11-11 12:34:35 +00:00
0f2652d7fa mind-body: chat_pending.v3 tail_gaps, a defaulted fourth field; a named room is unknown in the first line, never quiet
Bifrost b2e0bb2 sends [persona, deliveries, tail, tail_gaps]; a three-field decode failed LengthMismatch. The field defaults empty, so three-field answers still decode, and render_tail splits unknown (named) from quiet (unnamed, no line).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 12:27:42 +00:00
a26bce249d persona: a rule's words are a clause of her own line outside quotation, its campaign is checked before any effect, a co-stewarded repo is not a rule, and the repo fault names her repos; tests pin the survivors
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 12:26:47 +00:00
96a88d3cb6 Merge pull request 'persona: another Mind reads as role=mind from the swarm's addressing table' (#46) from hands/eureka-body-persona-mind-role into main 2026-11-11 12:17:47 +00:00
3389ead5a2 Merge remote-tracking branch 'origin/hands/eureka-body-persona-mind-role' into hands/eureka-body-steward-rulings 2026-11-11 12:17:43 +00:00
c243d731eb persona tests: pin the addressing table at every site that reads a role
Soul s1 findings trace-and-render-wiring-unpinned and tail-and-earlier-role-unpinned:
trace inputs, earlier and tail lines, tail and burst size measures, the tell's
people and open_direct refusal now fail when handed an empty table.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 12:09:40 +00:00
416fd7f719 persona: rule records a peer steward's decision as authority Steward; addressing rows carry stewarded repos; recall names the decider
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 11:56:53 +00:00
c2f251cb26 huginn-mind: a Steward ruling is selected by decider and repo, indexed by her words, and printed with who decided it
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 11:56:53 +00:00
c9a8e73dbc pipeline: RulingAuthority::Steward names a peer steward's decision, her stewardship and her words
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 11:39:17 +00:00
8018322b2a persona tests: goldens read libby as role=mind
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 11:37:21 +00:00
69f9003b9b persona: another Mind reads as role=mind from the swarm's addressing table
Config::sender is deleted; sender_role over the session's addressing decides a
sender's role on message, earlier and tail lines, trace inputs, the names a
memory may be about, and who she may open a direct with.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 11:35:11 +00:00
995a5b88f9 Merge pull request 'huginn: --session falls back to HUGINN_SESSION, set by mind-self-run' (#45) from eureka-substrate/session-from-env into main 2026-11-11 09:29:56 +00:00
37be2cd305 mind-self-run: the child's HUGINN_SESSION is its run's label
Spawner::spawn takes the session to export; the Self run gives the bare run label (the spelling the run's opening receipt carries). The Persona gives none.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 09:21:26 +00:00
4674d5f283 huginn: --session falls back to HUGINN_SESSION for admit, import and persona put
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 09:03:50 +00:00
cc0709039f Merge pull request 'Persona first line carries the mouth's room tail (wake-reads-room-tail)' (#44) from eureka-substrate/persona-room-tail into main 2026-11-11 08:43:12 +00:00
0ee9c0228e Room tail: consumer-cap, hostile-field and key-dedupe tests; real three-field v3 over RUDP; a fully deduped tail is not called quiet; deploy-order note
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 08:34:51 +00:00
7eb0440e00 Room tail comes from the mouth's chat_pending.v3 tail field; the in-process accumulator is deleted
ChatPending gains a defaulted Option tail (old two-field mouths still decode), Chat::pending returns it, and a process's first line renders it: speakable rooms only, 20 per room and 60 in all, byte bound counting framing, quoted untrusted data, dedupe by event id against waiting deliveries, a marker for dropped lines and for rooms with none, and an unavailable note when the mouth sends no tail. A failed first poll fails the start as Chat again.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 08:24:23 +00:00
9c1a5dba07 Persona process opens with the tail of her rooms: lines the mouth delivered through the ack, bounded, framed as untrusted data, unavailable noted
Matrix is the record and the mouth its only reader: the tail is assembled from the deliveries and contexts the mouth already sends (no new endpoint, no stored copy). Newest 60 lines / 24 KiB, oldest dropped with a marker; public sessions read the rooms she may speak in, a DM session its own room alone; a first poll that fails degrades to a tail-unavailable note instead of failing the wake.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 07:50:14 +00:00
95713735aa Merge pull request 'Persona wakes on address only: chat_pending.v3 basis/form, unaddressed acked in sequence' (#43) from eureka-substrate/address-only-wake into main 2026-11-11 07:27:20 +00:00
fa90daf8e6 Address-only wake tests: the stale-send revision, an unaddressed line behind a told one, the retried ack, and a project-only message told as a message
The Soul's surviving mutants n01, n08, n09 and the vacuous project test (n07, n11) now fail the suite.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 07:27:19 +00:00
2f04e13ea5 Address-only wake: a DM is hers whatever the basis; the quiet ack reads her projects' names from her mind; no quiet ack while a stale send waits; a refused ack in a poll is retried
Soul findings F1, F2, F3 and F6 on PR 43.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 07:13:07 +00:00
50d8e60102 Persona wakes on address only: chat_pending_request.v2 / chat_pending.v3 basis and form; unaddressed deliveries are acked in sequence and tell no one
Consumer half of ruling eureka-body:ruling:addressed-delivery-only. A delivery is for a Persona when it is a message and Matrix says
direct/tag/reply, or its mentions or text name her (address::is_for); notices, edits, @room and a nil basis (unproven) wake no one on
their own. The heartbeat's off-beat wake keeps its sender gate. The Persona acks the leading run of what is not hers in one ack and a
live session is told only what is hers. A mouth that does not serve the v2 request is asked the v1 way. Golden bytes pinned from Bifrost
tests/fixtures/persona-chat-v5; the public-surface snapshot is regenerated.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 06:43:46 +00:00
470c188d4c Merge pull request 'Vectors re-vendored from CultLib de8a062a (answerTooLarge replay)' (#42) from eureka-substrate/revendor-de8a062a into main 2026-11-11 02:18:21 +00:00
aae8fe2571 Vectors re-vendored from CultLib de8a062a; the answerTooLarge vector replays over a stale answer
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 02:13:48 +00:00
d6068e7c04 Merge pull request 'Desk door tests: the exact reply-cap boundary of a Fork read; a stale answer is stored and replays while the fork is oversize' (#41) from eureka-substrate/read-cap-boundary into main 2026-11-11 01:52:09 +00:00
598f1db7f9 Desk door: socket tests pin the exact reply cap on a read, and a stale answer's stored refusal and replay while the fork is oversize
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 01:46:20 +00:00
797255eefe Merge pull request 'Desk reads: a read of an oversize fork is fork_too_large; vectors re-vendored from CultLib f6c9bf5f' (#40) from eureka-substrate/read-fork-too-large into main 2026-11-11 01:39:40 +00:00
711514602b Refusal replay is a property over the vectors' cases; the vector's error string is Huginn-independent
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 01:34:57 +00:00
9d0a30947a Vectors re-vendored from CultLib f6c9bf5f; replays of short pages and fork_too_large refusals; the refusal-text replay fails on a real disagreement
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 01:32:59 +00:00
4c1f247898 Desk door: a read of one fork past the reply cap is fork_too_large naming the fork (no order, no cursor)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 01:28:57 +00:00
5af0cbea65 Desk door: failing socket test, a read of an oversize fork is fork_too_large naming the fork
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 01:26:57 +00:00
d91985b521 Merge pull request 'Desk reads: fork_too_large (list only) replaces DeskForkTooLarge' (#39) from eureka-substrate/fork-too-large into main 2026-11-11 01:03:55 +00:00
cdc21dd396 Desk door: fork_too_large at order 0 says the list ends instead of naming c0
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 01:03:42 +00:00
c6e1b41967 Desk door: socket tests for fork_too_large as the oldest (no c0) and newest fork
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 01:02:00 +00:00
c2aef3bc58 Desk door: DeskForkTooLarge becomes the not-stored refusal fork_too_large (list only), text names fork id and order; schemas regenerated
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 00:56:36 +00:00
5f3319f4ad Desk door: failing socket test for fork_too_large (list names fork and order, cursor resumes, read never returns it)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 00:51:57 +00:00
2662a34a41 Merge pull request 'Desk door reads: Forks and Fork on the peer-checked socket (whole record), unique order rank, the leftover Lows' (#38) from eureka-substrate/desk-door-reads-r2 into main 2026-11-11 00:46:59 +00:00
9e7dca2716 Desk reads: order is a unique 0-based rank by (admission, key); pages hold at most limit and stop at the byte budget; a lone oversize first entry is the named refusal with its order; vectors re-vendored from CultLib 9d6ee72e
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 00:36:48 +00:00
288d17cad3 Desk reads: order is a unique 0-based rank; failing tests first (batch of 64 pages, rank stability, gaps, lone oversize, vectors replay); DeskForkTooLarge names the order
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 00:31:57 +00:00
a056ea814d Merge pull request 'open-direct lows: the open hears the mouth's refusal; one copy of the daily policy text' (#37) from eureka-substrate/open-direct-lows into main 2026-11-11 00:15:09 +00:00
05a6726738 Tests kill three open_direct mutants: schema field description, non-UnknownKind refusal, payload-persona mismatch
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 00:14:55 +00:00
071dc8e345 Desk door test: the page is short of the bound by the Mind's fill; a group past the budget is the Mind's refusal
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 00:09:10 +00:00
aeeb36ad2a Desk answer: delete the replayed flag nobody read; tests assert that a replay commits nothing
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 00:06:27 +00:00