Commit graph

519 commits

Author SHA1 Message Date
Meta Vens
1b19180555 queue: one owner of the hold; a trip belongs to the run whose end tripped it and its question holds that run's claims
Cut claimable's Mind-wide stop on any follow-up question and queue's inline
blocked loop. queue::on_hold is the one reader of what an in-force question
holds (a question raised in a run holds that run's claims, anything else holds
itself); queue, inbox::derive and the open_and_launch gate read it.
Breaker::Trip names the newest ended counted run; the breaker question is
raised in that run; the boundary is the newest of a question raised in the item
and a run claiming it that a question is raised in, so an answer or withdrawal
gives every claim of the run a fresh count. The trip and the held-brief wait
are written to the heartbeat trace.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-01 02:09:49 +01:00
Meta Vens
2fb2608249 heartbeat: a successor trip is the Mind's stop, one question per cause, not one per brief
A Self run claims up to 64 briefs and each empty run counts against all of
them, so one cause tripped the briefs in turn, one question per brief per beat.
claimable now returns nothing while a question is open in any follow-up of the
Mind; the answer reopens the briefs with a fresh count.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-01 01:20:28 +01:00
Meta Vens
d1e3e1dbec heartbeat tests: a Self run leaves her Persona idle, a Persona turn marks her busy (mutants)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 21:35:36 +01:00
Meta Vens
41431a4dfd heartbeat: the beat gives a Self run to a Mind whose Self holds briefs; an open breaker question blocks its brief
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 21:08:39 +01:00
Meta Vens
55484c02ef self-session-live: public surface drops impl Brief
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 21:02:06 +01:00
Meta Vens
f23c2c42ce self-session-live: tests start from an echoed start message; the public surface drops inbox::close
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 20:56:47 +01:00
Meta Vens
f9a43850c0 self-session-live: record the three-queued merge and the one-outstanding serialized streams against the real CLI; replay counts writes
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 20:52:01 +01:00
Meta Vens
9ad80a1b72 self-session-live: one stdin write outstanding, coalesced; an idle end closes no brief; a brief is decided by admission provenance; synthetic assistant lines are no request; decide's dead Tells guard and clock deleted; window margin asserted
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 20:42:34 +01:00
Meta Vens
9ac2cb3b79 Merge remote-tracking branch 'origin/main' into eureka-body/self-session-live-h4 2026-10-31 20:34:08 +01:00
Meta Vens
4e3fefbc17 decide tests: drop the constant assert the ladder pin made redundant
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 20:10:31 +01:00
Meta Vens
4d174dfad6 self-session-live: State::started no longer sets the clock decide sets on every event; a claimed brief is named once (mutants)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 20:05:12 +01:00
Meta Vens
53d2b90a94 decide tests: pin the ladder allowance the cap clamp depends on (mutants on LADDER_S survived)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 20:02:05 +01:00
Meta Vens
069969020a tests pin the lane budgets, the rulings' room beside full open lists, and the people a shown memory names; recall drops an unreachable counter (mutants triage)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 20:00:16 +01:00
Meta Vens
b989e03864 decide tests: the rotation margin arithmetic is a compile-time assertion in self_run.rs, not a runtime one
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 19:48:35 +01:00
Meta Vens
c00cc24cc6 persona: open commitments and asks in front of her every turn, a wake included; the people she may name; origin from the batch; Config.minds / MIND_PERSONA_MINDS (persona.rs, bins, public surface, tests)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 19:44:06 +01:00
Meta Vens
688b221213 recall: three lanes, none showing an open item; salience and recency rank; every lane counts what it leaves out; one memory_line says where and from whom (recall.rs, testkit)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 19:44:06 +01:00
Meta Vens
3829625067 memory: a Direct origin names whom she heard it in confidence from; MemoryOrigin is bounded and tested (eureka-pipeline)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 19:44:01 +01:00
Meta Vens
8e97d60d1e body map: delivery is counted by replay echo; the env scrub forces default permission mode
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 19:39:26 +01:00
Meta Vens
780366f59a self-session-live: one stdin writer; the replay echo is the consumption point; no hooks, no spool, no CLI compaction
Deletes first: the PostToolBatch and PreCompact hooks, --settings, the inject subcommand, the on-disk spool and its rename claim, close_past as a standing rule, close_told and the result-timed brief closure, Event::Told/PreCompact, Action::CloseBriefs, FLUSH_MARGIN_S.

Then: drive is the only writer into her session (start, tells, flush). decide counts lines written and lines echoed (--replay-user-messages) and derives idle from them; the flush is answered at the first result after its echo, folded or queued; an error before any answer or a blocked result closes at once; rotation and the idle cache end ask the same flush with a why; the grace is clamped so the signal ladder ends before the cap. DISABLE_COMPACT=1 replaces the PreCompact block. Briefs are follow-ups owned by self-run and sourced from a Persona turn; her Self resolves each she answers, the actuator closes only what she left open at an idle end. inbox::backlog lists, and never closes, the one-time sweep.

Tests: the committed 2.1.312 streams replay through read_usage and decide; the unit tables, a ladder sweep and an event-order enumeration pin the rules.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 19:39:25 +01:00
Meta Vens
7ffaf3a5f9 Probe scripts and 2.1.312 live-session fixtures: folded, queued, ceiling-flush-folded/queued, api-error-first, blocking-limit, compaction-off-360k (fake.py, driver.py; SCRUB=0 and SCRUB=1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 18:37:37 +01:00
Meta Vens
61b0b55bb1 memory: golden and schemas re-derived for origin
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 17:48:18 +01:00
Meta Vens
a746374708 memory: origin replaces learned_in and direct (eureka-pipeline MemoryOrigin, huginn-mind memory_origin alias and facts)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 17:46:20 +01:00
Meta Vens
a8184ac44a recall: the module note no longer uses the word the scan forbids
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 17:13:41 +01:00
Meta Vens
6f27e85f2b self-session-live tests: the provenance session is a Short
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 17:12:53 +01:00
Meta Vens
dae21f31fd self-session-live tests: a brief's closure is admitted under the run's label
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 17:10:32 +01:00
Meta Vens
290ca7a304 mind-body public surface: the inbox's close, close_past, told and forget
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 16:50:45 +01:00
Meta Vens
ae939193f1 self-session-live tests: the past's closure reads the clock once; a waiting brief is told after the close
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 16:45:31 +01:00
Meta Vens
7222d96dde recall tests: the relevant lane's documents outrank the about lane's 2026-10-31 16:43:37 +01:00
Meta Vens
f5711585a3 recall: tests pin each lane's limit, the item and byte caps, the follow-up and ruling lines and the empty notice
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 16:42:11 +01:00
Meta Vens
ca4ee617ff self-session-live: the pass that closes the briefs goes on to the lifecycle
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 16:41:22 +01:00
Meta Vens
bfa5c245ff persona: tests pin the schema's asks, resolution sequences, a memory's place and the batch's people
A mutation run over the memory diff left these unpinned: the asks the schema
offers, next_sequence counting per subject, learned_in cut at the Short bound
on a character boundary, other_senders excluding her own and repeats, and
memory_people listing the operator once. The place cut loses a redundant
boundary test: pop removes whole characters.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 16:37:55 +01:00
Meta Vens
9b19c30ea8 huginn-mind tests: name the outcome type
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 16:37:07 +01:00
Meta Vens
41890e45b3 huginn-mind tests: the refused outcome is matched, not unwrapped
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 16:34:52 +01:00
Meta Vens
be44185c67 self-session-live: a brief is closed Recorded by the result that answers it; the briefs a closed run claimed are closed at session start
Lands the parked closure (eureka-body/self-session-live-closure-parked 13de7f0) on the Recorded outcome of ruling brief-closure-recorded.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 16:32:35 +01:00
Meta Vens
fb0ae7540d huginn-mind: a follow-up closes Recorded{reason}, as a finding and a run do
Ruling eureka-body:ruling:brief-closure-recorded.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 16:30:28 +01:00
Meta Vens
75dcf45f53 self-session-live tests: the hook test claims the spool once
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 16:22:58 +01:00
Meta Vens
4decf9e79c self-session-live tests: a stale spool is wiped at start; the pre-compact block says why
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 16:18:46 +01:00
Meta Vens
94ab5115ba self-session-live: the journal's decision line carries the inputs the decision was made on
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 16:14:07 +01:00
Meta Vens
6d210bd3f2 self-session-live tests: the journal's idle seconds and the wake for a waiting brief
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 16:09:23 +01:00
Meta Vens
a00642524a self-session-live tests: a claimed brief is told once; a raced tell writes nothing
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 15:54:11 +01:00
Meta Vens
9f0c4824fb mind-body: the committed public surface follows the memory reply
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 15:26:10 +01:00
Meta Vens
b9fdb4900e mind-self-run inject: a binary-level test of the hook; the container-lane test waits for the flush's own result
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 15:21:51 +01:00
Meta Vens
6272c2244b persona: she writes what she must keep into her mind, and reads it back every turn
A Persona reply gains `remember` (memories of seven sorts, about the
batch's people), `settle` (close an open ask: done is Recorded, declined and
wrong Withdrawn, with her reason) and `start_self_run.for_ask` (take an ask on
by id or as `new:<i>`). The organ fills where a memory was learned, whether it
was direct and its event ids; the model cannot write them. One admission per
turn carries the memories, the settles and the Pulse after the says, then the
Self run (follow-up and the ask's Deferred in one admission), then the ack. A
refusal fails the turn as Failure::Memory with the says sent and no ack.
admit_pulse is gone.

recall.rs reads only her own mind: open asks first on every turn including a
wake, memory about the batch's other senders, the nearest memory, follow-up
and ruling by MindPort::query_near, and the newest memory; de-duplicated and
capped at 20 items and 16 KiB. render_input gains "What you remember" after
the goals section; follow-ups and rulings that section already lists are not
repeated.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 15:15:41 +01:00
Meta Vens
152e315e5d memory: a persistent kind for what a Mind keeps (eureka-pipeline, huginn-mind)
epiphany.pipeline.memory.v2, instance-rooted `<instance>:memory:<label>`:
PipelineMemory with seven sorts (Asked, Decided, Committed, Learned, Did,
Idea, Rapport), her own text, who it is about, where it was learned, whether
directly, what it rests on, a salience that only ranks, and the memories a
consolidating one replaces.

Admission refuses a foreign instance and resolves a memory only Deferred to a
follow-up (an ask taken on), Recorded, Withdrawn or Superseded by a memory.
Memories have their own lineage so supersession stays within one mind. The
read side selects by sort, about (multi-valued) and direct; the index carries
the text; `consolidates` is a citation role.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 15:15:40 +01:00
Meta Vens
e7097fde2c self-session-live tests: spools in tempfile directories (clippy disallows temp_dir)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 15:04:32 +01:00
Meta Vens
9f5e83e6c1 self-session-live: her Self session stays open across turns; briefs are derived from her mind and told between tool calls
A result ends a turn and marks the session idle; it no longer closes stdin
(decide.rs: Result => CloseStdin deleted). The session ends where its prompt
cache would be evicted (ruling live-session-floor-cache-evicts: the flush is
asked at the last request's TTL less 60 s, stdin closes after the flush's own
result), at an idle rotation deadline under the run cap, mid-turn at the cap's
flush margin, and at the context ceiling. PreCompact blocks auto-compaction
and asks the same flush.

self_run/inbox.rs derives her inbox from the mind (in-force follow-ups with
owner self-run that no closed run claims), spools them, and claims by rename
so the PostToolBatch hook and the actuator's idle tell deliver each once.
mind-self-run inject is the hook. Brief closure is not in this commit: the
mind refuses a Recorded resolution of a follow-up (question admitted).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 15:03:14 +01:00
Meta Vens
ffb379d18d Merge remote-tracking branch 'origin/eureka-body/persona-goals-in-turn' 2026-10-31 14:17:18 +01:00
Meta Vens
b9770565ff persona-goals-in-turn: the follow-up heading appears with follow-ups and only then
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 14:03:14 +01:00
Meta Vens
c33884fe7a minds-wake-each-other: a message from another Mind that names her launches a Mind off the beat, once per message; a Mind naming herself does not
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 13:52:27 +01:00
Meta Vens
62f0894778 persona-goals-in-turn: the junk-token check reads the rulings list, not the item text
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 13:48:55 +01:00