Commit graph

723 commits

Author SHA1 Message Date
Meta Vens
8bdb84d94b self: a briefless turn is open from a request with nothing echoed until its result; the start message states the routing rules
A request with no line of ours echoed is a turn that took in no brief, notification or not; until its result only the conversation it continues, or the notification's task's, is written. Nothing told yet means no other conversation exists.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 03:20:23 +01:00
Meta Vens
08a80697d3 self_run tests: the fake claude scripts that loop end when their stdin closes
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 03:16:27 +01:00
Meta Vens
a1370cf424 persona: a reply that cannot be placed is a text-free pointer in the public session
A reply that answers no brief, or briefs of two conversations, was read by nothing and re-paged on every Persona read. It is now a route in the public conversation marked as a pointer: the line carries the reply id and a fixed note, never its text, and the Persona reads the reply by id. Heard, it is resolved like any reply.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 03:16:27 +01:00
Meta Vens
7182ff107b self: a notification's result is its task's turn's; a briefless turn holds other conversations; a resolved claim's conversation is read by key
The stream's task_started and task_notification events carry the tool_use_id of the call that started the task. The actuator records, per task, the briefs the starting turn was answering; a briefless result after a notification answers those (any notification it cannot place answers none). While a notification's turn is open, only the conversation it is attributed to may be written. A restart reads a resolved claim's conversation by key and opens the gate for it alone. The flush result is the note to the successor, in the journal: it is no reply. The start message states the rules.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 03:16:26 +01:00
Eureka Hands
4bc00e36f9 self tests: the gate follows the conversation of a line written and unechoed when a result arrives
Kills the conversation_of mutants (== to !=, body to None) that the previous pass left.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 01:08:45 +00:00
Eureka Hands
34db62e3ca persona tests: a reply to no brief is told nowhere; the rotation margin ends a start; an idle session tells its own retell, revision or notice; a reply that fails to resolve twice is retried once
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 00:20:18 +00:00
Eureka Hands
f8403165e5 self: a result that took in no brief answers nothing once two conversations were told; the flush answers no brief; the start line holds one conversation
A reply to no brief is told in no session and stays in force (ruling briefless-result-routing). A restart drops a claim that is not of the start set conversation.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 00:20:09 +00:00
Meta Vens
1f8dae184e mind-body: Brief.conversation is crate-visible like its type; start_self_run's inputs stay flat
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 00:10:18 +01:00
Meta Vens
8b61cca7da self: one Self turn answers one conversation
The start set is one conversation's; poll and tell gate briefs by the conversation of those unanswered;
a result that took in no brief continues the turn before; the start message says so.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 00:07:20 +01:00
Meta Vens
b675ba75c1 persona tests: a reply is told only in its brief's conversation, end to end
DM invariant across three sessions, a reply alone opening its DM once per start, the oldest waiting thing deciding,
pre-deploy briefs going public, a two-conversation reply told nowhere, the yield, one origin per turn, the open-brief mark.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 00:07:20 +01:00
Meta Vens
98e61aff3e persona: a reply is told only in its brief's conversation; a start opens a DM's session for a reply alone
reply_routes derives each in-force reply's conversation from the origins of the briefs it answers (nothing stores it);
next_session lets the oldest waiting thing decide, carry's batch no longer owns rooms, conversation or origin;
an empty batch takes the session's origin; the brief records the turn's origin; a session with nothing of its own yields to another conversation's reply.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 00:07:20 +01:00
Meta Vens
c4303e8657 recall: origin_phrase is the one render of an origin
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 00:06:44 +01:00
Meta Vens
5eb1452ca4 pipeline: a follow-up records the origin of the Persona turn that admitted it
PipelineFollowUp gains origin (absent is not written, so the golden sample is unchanged);
MemoryOrigin's doc says it is a brief's too; the header facts carry it; schemas regenerated.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 00:06:44 +01:00
Meta Vens
26303f045b persona: once she answered a line, its heard replies never return to waiting; resolution is retried silently
A heard reply whose resolution did not take (admit failed, or the keyed read errs) went back through untell and was told again. The answered
replies now wait in answered_replies, retried at each result and at close (settle_replies), one by one so no refusal holds another hostage;
untell serves only the lines she did not answer. Tests pin the retry, the close retry, the reply resolved elsewhere on a refused line, and the
unreadable in-force read on that path (told again, kept as retell).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 23:55:25 +01:00
Meta Vens
987c6ec74d persona: the mind says whether a heard reply took; tests kill the keyless read and the lost resolution
hear_replies attempts each resolution and untell asks the mind which replies are still in force, so an Ok/Err reading of the
admission is no second opinion. The out-of-force test holds replies past the first line so a read by kind alone would retell the
resolved one.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 23:15:25 +01:00
Meta Vens
8ab5959d46 persona: a reply out of force leaves for good; replies resolve one by one; idle and waiting-duplicate paths pinned
untell checks a reply is still in force before it waits again, and hear_replies resolves each reply on its own, so one refused
resolution neither retells a reply nobody can answer nor holds the rest of its batch. Tests: out-of-force retell, a reply reaching an
idle session with no chat pending, and a reply waiting across a read while a line is not echoed (a stalled child).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 22:57:42 +01:00
Meta Vens
5269260d12 persona tests: each reply line carries its own words
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 21:26:13 +00:00
Meta Vens
8f184f9028 self_run: REPLY_TEXT_LIMIT is the actuator's, not the public surface
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 20:59:58 +00:00
Meta Vens
aab49c5d35 eureka-state: schema list names reply before selection
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 20:42:10 +00:00
Meta Vens
3953194f24 persona-hears-her-self: her Self admits each result as a reply; her Persona hears, tells and resolves it; the run-end notice, slot read and closure text die
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 20:34:07 +00:00
Meta Vens
8f5ff3e415 eureka-state: schema list counts the reply kind
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 20:18:59 +00:00
Meta Vens
3ef5da5e0d reply kind: one result of her Self session, as its actuator heard it (eureka-pipeline, huginn-mind, schemas, golden)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 20:17:45 +00:00
196be4f11c Merge pull request 'chat-retrieval-map: anchors to main, answered questions, stale Persona premise' (#7) from eureka/chat-retrieval-map-status into main 2026-11-05 10:59:03 +00:00
8d7e8ccffb chat-retrieval-map: correct anchors, record answered questions and the stale Persona premise
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-05 10:58:43 +00:00
25199c9eba Merge pull request 'docs: chat retrieval authority map and cut' (#1) from eureka/chat-retrieval-map into main 2026-11-05 10:58:27 +00:00
16d3d123e8 Merge remote-tracking branch 'origin/main' into pr1 2026-11-05 10:58:26 +00:00
809a93c4a6 Merge pull request 'The MCP admit goes through the one strict door; refusals name the field' (#5) from hands/eureka-body-typed-research into main 2026-11-04 22:16:42 +00:00
Meta Vens
4a7bb5fafc eureka-state door: a custom message with an expected clause is not passed on
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 23:03:19 +01:00
Meta Vens
27ab1fcbcf eureka-state door: pin schema_words by behaviour
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 22:58:42 +01:00
Meta Vens
b63de715ae eureka-state tests: an unknown kind names documents[i].kind
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 22:47:07 +01:00
Meta Vens
51853c1ac1 eureka-state door: a decode refusal names the field path, never a value
Documents decode one by one through serde_path_to_error, so the refusal says
documents[i].path and what is wrong, in the schema's words: a field name, the
allowed variants, the expected type. Serde's own text quotes the input, so it
is not passed through.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 22:45:48 +01:00
Meta Vens
eeeded257b eureka-state door: drop the unused Display on Refusal
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 22:20:56 +01:00
Meta Vens
5b6305c522 eureka-state door: tidy test module
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 22:10:10 +01:00
Meta Vens
1aa3176796 eureka-state: close the moved door's test modules
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 22:07:59 +01:00
Meta Vens
e808c619fd eureka-state: one text door; the MCP admit decodes through it
The strict decode that refuses unknown keys by path moves from the huginn
binary to eureka_state::door; the CLI re-exports it and the MCP admit takes
documents as a Value (schema still Vec<PipelineDocument>) and decodes through
it, answering InvalidInput before any call. A research note with extra keys is
refused by path and nothing is stored.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 22:06:41 +01:00
869edfdf28 Merge pull request 'Persona wake: the brake counts only Self runs the Mind started itself' (#4) from hands/wake-brake-unasked into main 2026-11-04 19:13:39 +00:00
Meta Vens
4da767d4e3 Persona wake brake: restore LF line endings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 20:11:58 +01:00
Meta Vens
aab071f5a2 Persona wake brake: tests for the full read and the newest-first order
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 20:03:50 +01:00
Meta Vens
31bf575f11 Persona wake brake tests: close the source run
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 18:44:50 +01:00
Meta Vens
73037c296e Persona wake brake tests: close the claimed Self runs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 18:43:43 +01:00
Meta Vens
531fece922 Persona wake brake tests: view by full id
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 18:42:45 +01:00
Meta Vens
e1b3c7dadb Persona wake brake tests: claim real follow-ups
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 18:41:43 +01:00
Meta Vens
6dc427bc71 Persona wake: only Self runs the Mind started herself hold the what-could-exist ask; a run claiming a chat batch does not (ruling unasked-work-brake-ruled)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 18:39:20 +01:00
2a5738e511 Merge pull request 'Persona wake: leads and a what-could-exist ask; intents leave the history line' (#3) from hands/persona-leads into main 2026-11-04 17:16:14 +00:00
Meta Vens
f31667e7d1 Wake ask golden carries the new sentence; the pinning tests close their runs and open the turn first
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 18:14:05 +01:00
Meta Vens
e146ff692e Wake ask closes with "Silence in chat costs nothing."; the started-today read's order, filter and fallback are pinned
Deviation from the spec's exact WAKE_ASK text, ordered by Self on Soul's measurement
(eureka-body:verdict:cut-wake-asks-what-could-exist.s1): the sentence is appended after
"Put what you are going after in `intent` first." as Soul's replay placed it. The
started-today comment no longer claims a day holds fewer than RECENT_RUNS Self runs; the
answer rests on the read being newest-first. Tests pin more-than-limit runs today, a full
read of older days beneath a newest run, the Mind-operator filter, and the unreadable-mind
fallback to the brake.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 18:12:18 +01:00
Meta Vens
e676375847 Persona wake asks what could exist when she has started no Self run today; her own intents stop returning in her history
WAKE_ASK ends a no-message line on a day with no Self run of hers (a failed start counts); WAKE_QUESTION stays for the days after, minus the Imagination-pass parenthetical. recent_runs renders a closure's rationale only for a Self run: a stored intent cannot frame her next wake.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 17:41:13 +01:00
e77b610445 Merge pull request 'research and idea kinds: typed documents for what Eyes and Imagination find' (#2) from hands/eureka-body-typed-research into main 2026-11-04 15:01:58 +00:00
Meta Vens
5d015939ad typed-research: the repo-pin tests name their repo inline
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 15:56:46 +01:00
Meta Vens
fd01cf0fe1 typed-research: a Repo source names a file and a range that does not end before it starts
Finding cut-typed-research.s2.repo-pin-may-name-nothing. Mind::read_back
re-validates stored documents, so the refusal exists before any note is stored.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-04 15:55:35 +01:00