Commit graph

464 commits

Author SHA1 Message Date
Meta Vens
acee839b4b tempo-silence-is-abstention: the beat is the lower median of cast votes only; a Persona turn admits a Pulse only for a vote, a withdrawal or a nonzero urgency
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 12:41:44 +01:00
Meta Vens
743cbb8b43 self-run-result-in-rationale: pin each run's own rationale and the empty-result sentence (mutation survivors)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 11:39:17 +01:00
Meta Vens
f2e3805020 self-run-result-in-rationale: a Self run's result rides the closure's rationale (3800 B, cut on a character boundary), the reason says how it ended, and her run history shows the rationale
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 11:08:54 +01:00
Meta Vens
b69d02a4ce tests: an urgency in the same receipt as her turn is consumed, not pending (strictly after)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 10:17:08 +01:00
Meta Vens
1e861b578c mind-body tests: the swarm verb round trip releases the brake directly
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 10:05:52 +01:00
Meta Vens
baefb01c38 mind-body: clippy clean at -D warnings (poll iterates its rows, a identity map and the unused Recording::stop go)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 10:02:42 +01:00
Meta Vens
3148dbba43 tests: the withdrawal read test borrows the mind per call
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 09:56:52 +01:00
Meta Vens
18470e4cbd heartbeat: an urgency is consumed by admission order, and every newest read is pinned to one header (urgency-consumed-by-wall-clock, newest-limit-unpinned)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 09:55:27 +01:00
Meta Vens
ec2320443a persona: the reply schema tells the model that omitting the vote leaves it and null only withdraws (null-vote-habit-withdraws)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 09:54:51 +01:00
Meta Vens
5357e9d906 tests: a withdrawal pulse crosses encoding, admission and the read as a withdrawal (withdrawal-wire-unpinned)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 09:54:39 +01:00
Meta Vens
bc59cb9025 Merge remote-tracking branch 'origin/main' into eureka-body/heartbeat-joint-lever 2026-10-31 09:53:14 +01:00
Meta Vens
e5cd9d94e1 Merge eureka-body/self-run-scrub-knob: MIND_SELF_SCRUB=off lets a root-holding Self run use sudo
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 09:50:13 +01:00
Meta Vens
f1e8572ae2 mind-self-run: the scrub variable name is private; the public surface is unchanged
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 09:46:40 +01:00
Meta Vens
b3919f782d mind-self-run: MIND_SELF_SCRUB=off in the unit turns the child's subprocess scrub off; anything else keeps it on
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 09:44:19 +01:00
Meta Vens
e8db03e8a7 persona: mentions.contains (clippy manual_contains on rust 1.95)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 09:34:39 +01:00
Meta Vens
cf790b6142 index: take_search's doc comment back on take_search
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 09:21:42 +01:00
Meta Vens
19e53afe76 Merge main c7cd9ee (start brief) into source search
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 09:21:24 +01:00
Meta Vens
44b3bf5e91 Merge eureka-body/source-search-index-safety (cursor, catalog, retire, CLI e2e; report h3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 09:21:23 +01:00
Meta Vens
98e30de3fb tests: the surface carries the reply's vote key; a withdrawn vote is read on a later beat; an urgency in her turn's second is consumed
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 09:19:37 +01:00
Meta Vens
2f36f63e80 ollama: pin the batch bound's arithmetic (cargo-mutants survivor)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 09:17:55 +01:00
Meta Vens
715ec58180 sources: Refreshed::is_clean decides the exit, where a test reaches it
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 09:10:07 +01:00
Meta Vens
9c13a4291d persona tests: the out-of-bounds replies name their vote 2026-10-31 09:09:39 +01:00
Meta Vens
bc9e75debe schemas: the pulse, request and response schemas re-derived for tempo_vote_withdrawn
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 09:07:01 +01:00
Meta Vens
39decde8a2 embedder: connect bound, a read bound sized to the batch, one budget across retries; tests with endpoints that stall and refuse mid-batch
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 09:05:47 +01:00
Meta Vens
20fb808e7b tempo: an explicit null vote withdraws the standing one; the Pulse says so in its own field and the reply may omit the vote key
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 09:05:26 +01:00
Meta Vens
6a0ab4a7ab live source smoke: follow the Catalog the forge now answers
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 09:00:54 +01:00
Meta Vens
5b920371c5 eureka-state tests: huginn sources end to end through a daemon to a printed citation
The CLI binary asks a real in-process daemon over CultNet; the daemon answers
through sources::search against an in-memory source index and a flat embedder.
Pins the citation line, the repo filter and limit, and the refusal naming both
models when the daemon embeds under another digest (Soul test-gaps). common
serve takes any index sink.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:59:16 +01:00
Meta Vens
e47532c122 sources: a retire error skips that repo; a case-only rename keeps no stale points
Retirement aborted the run on the first repo whose delete failed; it now logs,
names the repo in Refreshed.failed and goes on, leaving that repo's cursor and
mirror to be found again. Names are compared as written, so a repo the forge
now spells in another case is retired under its old spelling instead of kept by
a case-insensitive match while its points carried the old name (Soul
retire-edge-cases).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:58:19 +01:00
Meta Vens
6c1cef8729 sources: retire nothing when the forge's catalog is empty or does not sum to its X-Total-Count
Retirement read the repo list as complete, so an empty or truncated answer
would have deleted every repo it failed to name (Soul catalog-shrink-retires).
The catalog now carries a shortfall: the pages summed before filtering are
checked against X-Total-Count, and a missing header counts as unvouched. The
run refuses to retire on a short or empty catalog, refreshes the repos it did
see, says so in Refreshed.retirement_withheld, and huginn-sources exits 1.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:57:38 +01:00
Meta Vens
3f380df0fe sources: drop a repo's cursor before its first delete, so a failed run is re-ingested whole
A failed run from A to B followed by a head C that reverts the files to A's
content diffed A..C as empty and kept the deleted chunks deleted (Soul
cursor-revert-hole: 32 of 40 chunks, cursor at C). With the cursor gone the
next run takes the whole-repo path whatever head it finds.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:56:21 +01:00
Meta Vens
ef218e3dab heartbeat: the cost test admits within the batch cap; the public surface drops the MindRead accessors
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:55:45 +01:00
Meta Vens
8b648c2140 huginn-mind tests: a pulse holds a vote or an urgency, never both
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:53:07 +01:00
Meta Vens
d16b21a2c8 heartbeat: her last turn, standing vote and declared urgency are one bounded read each, ordered by admission
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:51:53 +01:00
Meta Vens
6e91f1bf6a huginn-mind: ran, voted and urged index the runs and pulses a reader asks for newest-first
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:51:53 +01:00
Meta Vens
c57cc985d1 mind-body tests: delete the billing and dial helpers the teardown left unused
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:51:25 +01:00
Meta Vens
5cde349a09 pool tests: no waiting on reads that are not running; a failed read waits for its retry time
Closes the pool mutation survivors (reading, ready, judge's retry time).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:29:52 +01:00
Meta Vens
1fee2e434e pool: a read awaiting a model to adopt stays to be judged
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:12:26 +01:00
Meta Vens
3ce4b91b95 public surface: tally takes one optional vote per Mind (tempo-silent-means-default)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:05:22 +01:00
Meta Vens
1c0182195d tempo: every Mind of the roster votes; silence and an unreadable mind count as the default beat
Ruling eureka-body:ruling:tempo-silent-means-default: the tally is the lower median over all Minds, so one voter among silent Minds cannot move the beat. Addresses finding tempo-one-voter-decides. Also pins that the newest vote is found across pages of pulses.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 08:02:30 +01:00
Meta Vens
c74dd530de daemon: embeds through the endpoint pool, GPUs together and the CPU last
query-embed-on-cpu, follow-up daemon-embedder-gpu-pool: huginn-daemon takes
repeated --ollama-url (GPU hosts) and --reserve-ollama-url (CPU hosts) and
builds the same EmbedderPool as huginn-sources, through one ollama::pool
constructor. A lone --ollama-url is a pool of one.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 07:56:22 +01:00
Meta Vens
13647f9220 pool: identities are read off the batch's clock and held to the collection's model
pool-blackhole-stalls: each due endpoint's identity is read on its own thread
under a 5 s bound, and a batch waits for reads only while no healthy primary
exists to start on, so a dark endpoint never delays work a healthy one can do.
pool-pins-first-identity: the pool is told the model the collection was built
with (Embedder::built_under, called by reconcile and refresh before the
identity read) and never writes with an endpoint serving another; it adopts a
model only when there is no collection, in list order.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 07:54:57 +01:00
Meta Vens
12615fdc63 self_run tests: the claim tests read the start message at the lease's own instant
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 07:54:37 +01:00
Meta Vens
aef5decb11 self_run tests: main's claim tests read the start message on the plan-usage wire
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 07:51:42 +01:00
Meta Vens
46834c3dcd self_run: the imports the claims read needs, left out of the merge
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 07:50:31 +01:00
Meta Vens
497b3078d3 Merge origin/main (start-brief) into heartbeat-joint-lever: the claims and task section only, the run's budget stays unread
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 07:49:11 +01:00
Meta Vens
79a64c1256 heartbeat: a standing vote stands until she replaces it; a winner that cannot start passes the beat on
A Mind's vote is her newest pulse that carries one, read back through the pages of her pulses rather than the newest eight. The pick passes over a winner whose launch is refused to the next eligible Mind, and her last turn is her newest turn that ran, however many withdrawn launches follow it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 07:48:27 +01:00
Meta Vens
3ef5994385 persona tests: a vote alone or an urgency alone is still one pulse
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 07:05:35 +01:00
Meta Vens
99d3c05b09 pool: simpler admission guard (clippy)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 06:58:55 +01:00
Meta Vens
e3d289fec8 sources tests: the batch test belongs after the last test, not inside it
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 06:57:34 +01:00
Meta Vens
1cfb905306 tests for the mutation survivors: char bound and newline accounting, catalog paging, batch bound, a source search through the daemon, the shared queue bound and abandon by ticket
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-31 06:56:22 +01:00