Commit graph

312 commits

Author SHA1 Message Date
Meta Vens
35c5b7ac24 Merge origin/main (f003801) into eureka-body/mind-launch
Mechanical adaptation: testkit's PipelineCutSpec builder gains the new reads field.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 06:50:46 +02:00
Meta Vens
5ce103d2b2 huginn tests: pin the build sha, the batch bound, blank-line paging, list paths and fact tokens
Kills the seven survivors of the first mutation run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 06:48:46 +02:00
Meta Vens
8f59d4850a Persona: a put may rewrite identity fields, and every change lands
Pins identity-write-all-visible: publicName, publicDescription, presentation
and values change through put_persona with no per-field rule and no rate
limit beyond the monotone updatedAt.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 06:35:25 +02:00
Meta Vens
ef7c5e5f2f Persona: the view's receipt is the newest one that wrote the document
The match on type, key and bytes was three conditions for one fact; the
newest receipt writing the persona identity is that fact. Tests pin the
declared-name walk and the receipt of each of five consecutive puts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 06:09:42 +02:00
Meta Vens
bf32a4955e Restore LF line endings in the files this cut touched
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 06:06:01 +02:00
Meta Vens
3d4049cf10 mind-body queue: drop the same-batch question test (the mutant it aimed at is equivalent)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 06:05:24 +02:00
Meta Vens
055b73e8f8 huginn door: report every lost key across the batch, accept only objects
The strict decode stopped at the first document with a lost key and let
serde read a struct from a JSON array. It now names every lost path in the
batch and refuses a non-object document or selection.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 06:04:43 +02:00
Meta Vens
78773a2a13 Docs: eureka-state's huginn binary is the agents' CLI
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 06:01:01 +02:00
Meta Vens
02cb3dadcd huginn CLI over HuginnClient: whoami, view, query, recipes, admit with read-back, schema
A new bin of eureka-state, crates/eureka-state/src/bin/huginn/: the agents'
shell door to the mind. Text out, typed exit codes, strict decode of
agent-written JSON (unknown key paths refused, never values), the named
campaign-state recipes, and a read-back after every committed admission.
lib.rs, main.rs and tests/mcp.rs are untouched.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 06:01:01 +02:00
Meta Vens
6bcec91bbc mind-body queue test: a run admitted in the question's batch is not after it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:56:19 +02:00
Meta Vens
f003801138 Merge eureka-substrate/clippy-pin: Rust 1.95.0 pinned, clippy clean
eureka-substrate:cut_report:cut-clippy-pin.h1, held by Soul
(eureka-substrate:verdict:cut-clippy-pin.s1). View is boxed in
HuginnMindResponse; the wire form is unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:47:26 +02:00
Meta Vens
6fde91fe0a Persona: compile fixes and the regenerated wire schemas
The jsonschema error kind lives in jsonschema::error; the eureka-state tool
closures own their input; huginn.mind_request/response.v1 carry the persona
operations (derived by the existing published_wire_schemas test).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:47:00 +02:00
Meta Vens
c50521191e mind-body launch test: the forged-holder test asserts only the refusal
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:46:25 +02:00
Meta Vens
e426ef33c1 mind-body launch: AlreadyLive's holder is viewed before it answers Busy; huginn-mind pins the holder by its literal key
The holder RunId is grammar-checked only, so the launch asks the mind for its
in-force Self-run holders and refuses a name the mind does not show as this
instance's own. One reader of the slot serves step 0 and this check. The
admission test compares the refusal's run to the literal run key.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:46:16 +02:00
Meta Vens
e623e7e249 mind-body queue: citing builds the citation both breaker and step 0 select by
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:40:25 +02:00
Meta Vens
6206fdd85d mind-body launch: units are named by instance and turn only (ruling mind-unit-names)
mind-persona@<instance>.service and mind-self@<instance>.service; the run
label no longer enters the unit name, and only the instance is validated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:38:22 +02:00
Meta Vens
ca687b6ec2 Map: the mind units' identity, lifecycle and authority (mind-units-install)
Authority table for her templated units, users, the brake check verb and
Idunn's view of one-shot units, from the Imagination pass that admitted
cut-mind-unit-gate and cut-mind-units-install.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:35:41 +02:00
Meta Vens
4d02c50bc2 Target: prose knowledge made accessible to the mind
Model page per class of prose knowledge, the one earned kind (observation),
voidbot's index as the one retrieval path for prose, sequencing, and the
triage of the census's 49 unmapped items (eureka-body:follow_up:
prose-knowledge-inventory, ruling prose-knowledge-into-mind).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:34:58 +02:00
Meta Vens
f624feec75 mind-body launch: dead runs closed in the opening batch, Busy from admission, breaker over the item's citations
open_and_launch takes a Grant by value. Step 0 reads the in-force runs of
hers of the request's turn on the instance (typed facts): a live unit or a
run inside START_GRACE_S answers Busy; a dead one is closed Recorded in the
same admission that opens the next run, so the in-force record is the one
owner of liveness. Admission's AlreadyLive maps to Busy. The alias Busy query
and the whole-mind breaker scan are deleted: the breaker counts the documents
that cite the item, starting after the newest question raised in it, and a
trip's question is keyed by the run label. SystemdLauncher holds no
instance; unit names are validated before systemctl sees them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:32:19 +02:00
Meta Vens
ed5fc195d2 mind-body control: Released carries a Grant only read_effective makes
The run cap and cadence leave the control reader only inside a Grant with
private fields, so a cap cannot exist without a released brake and an
in-bounds dial. effective() is private; its one caller is read_effective.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:32:19 +02:00
Meta Vens
dbdb4e86f8 Huginn holds an instance's persona document, validated and receipted
put_persona replaces the mind's gamecult.persona_state.v0 whole through the
commit primitive: schema-valid against the published file, personaId is the
instance, canonical provenance, CAS on updatedAt, monotone updatedAt. The
document is an opaque seventeenth stored type, one per mind. Wire operations
persona_get and persona_put, MindStatus.persona, HuginnClient methods and the
eureka-state persona tools. Published wire schemas follow in the next commit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:30:48 +02:00
Meta Vens
0c6f6cbb76 Map: a campaign's repo set lives on its target (cut-campaign-repos)
Step-0b table, authority map and rejected options for how a campaign gains
or loses repos, from the Imagination pass that admitted cut-campaign-repos
and cut-skill-campaign-repos.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:29:03 +02:00
Meta Vens
7375687188 Pin Rust 1.95.0 and clear the twelve clippy lints red at main
rust-toolchain.toml owns which rustc and clippy judge the tree. View in
HuginnMindResponse is boxed so the large_enum_variant allow on the wire
type is deleted; the PipelineDocument allow keeps a sharpened reason.
Type aliases, is_multiple_of, slice::from_ref and a literal refused()
clear the rest. Wire bytes and schemas are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:21:13 +02:00
Meta Vens
8f41db55e0 huginn-mind: published response schema carries RunId
Regenerated from schema_for!(HuginnMindResponse) as the wire test derives it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:18:38 +02:00
Meta Vens
228d1a8893 huginn-mind: name the run kind the live check asks about
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:17:43 +02:00
Meta Vens
5ef4f5eef6 huginn-mind: refusals name a holder by a typed RunId; a run born closed owes no live slot
AlreadyLive and AlreadyClaimed carry RunId, which parses as a run key on
every door, so a peer cannot fill it with an arbitrary string. The live
check applies only to a run the batch leaves in force. Tests pin a holder
that differs in start, host and budget, a born-closed run, and the second
live Persona turn's admission refusal in mind-body.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:17:11 +02:00
Meta Vens
a7cc2ff069 Map: huginn CLI replaces the eureka-state MCP server
Identity, lifecycle and authority of the huginn CLI, with probes and
rationale, from the Imagination pass that admitted cut-huginn-cli and its
four dependent cuts (eureka-substrate).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 05:15:21 +02:00
Meta Vens
180b08a944 Research: what is left of the old personas and the swarm
Eyes pass 2026-10-10: 15 repo Face state files, intake projections,
Gjallar in Odin, the Epiphany body tarball as the only roster copy, the
swarm's last runtime shape, and what is lost.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 03:08:43 +02:00
Meta Vens
08a4e66170 Target draft: reviving the swarm of minds, Eureka leading
Imagination imagination-swarm, session self-2026-10-09-eureka: identity,
lifecycle and authority table for N minds, one daemon per mind, one-shot
swarm waker on the FFX-style timeline, first slice (Weksa) and order of
work. Seven questions admitted in eureka-body. Draft for operator review.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 03:04:45 +02:00
Meta Vens
3b15c39f83 mind-body launch test: end each Persona turn before the next opens
Admission now holds one live run of hers per turn, so the budget test that
launched three Persona turns in a row without ending any is refused at the
second. It ends each turn; mind-launch r3 rewrites this test next.
7ef8669 does not pass this test; this commit does.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 23:11:20 +02:00
Meta Vens
7ef8669037 huginn-mind: published response schema indents AlreadyLive like its siblings
ff259a1 and 11af610 carry the schema block one indent level too deep, so
published_wire_schemas_match_derivation fails on them; this commit fixes it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 23:01:30 +02:00
Meta Vens
11af610871 huginn-mind tests: import RunTurn for the one-live tests
The previous commit (ff259a1) does not build its tests: RunTurn was not in
scope in admission.rs's test module. This commit builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 22:50:41 +02:00
Meta Vens
441b1fc637 Merge eureka-substrate/leaf-read-anchors: CodeLocation.symbol and CutSpec.reads, additive at epoch v2
Soul held (eureka-substrate:verdict:cut-leaf-read-anchors.s1): every
pre-existing golden line byte-identical, 24/24 mutants and 23 hand
mutants on the macro's serde attributes killed. Findings deferred to
leaf-refusal-hygiene and huginn-upgrade-daemon-first. Not deployed:
the live daemon must be upgraded first (ops-read-anchors-upgrade).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 22:50:36 +02:00
Meta Vens
ff259a16bb huginn-mind: admission refuses a second live run of hers of one turn (AlreadyLive)
Ruling one-live-self-run, decided where batches are serialized: run_rule
(was run_claims_rule) now also refuses an opening or reinstated run whose
instance and turn already have an in-force operated_by Mind run. The
fixture run() is an operator's run; mind_run() is hers. Unverified: this
commit has not been built when written; verification follows.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 22:48:01 +02:00
Meta Vens
b81d7842e4 Map: one live run decided in admission, the brake grant, what the breaker counts (mind-launch r3)
Imagination imagination-launch-r3, session self-2026-10-09-eureka, from
Soul verdict eureka-body:verdict:cut-mind-launch.s1: fact F21, the run,
Repetition breaker, Brake and Units rows, two rationale sections.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 22:45:53 +02:00
Meta Vens
821bab62ac Clippy at the base: allow large_enum_variant on two huginn-mind enums, drop a let-and-return
cargo clippy -D warnings failed at df7507b on PipelineDocument (masking these downstream); the two enums
are returned once per commit or request, and admission.rs resolution matrix returned a let binding. Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 22:17:41 +02:00
Meta Vens
12cda03e98 rustup component add clippy 2>&1 | tail -1
cargo clippy --locked --workspace --all-targets -- -D warnings 2>&1 | tail -30
echo "CLIPPY-RC ${PIPESTATUS[0]}"
cargo test --locked --workspace 2>&1 | grep -E "^test result" | awk '{p+=$4; f+=$6} END {print "TOTAL passed", p, "failed", f}'
EOS
S=$(pwd); (SUMMARY=$S/v4.log nohup bash C:/Users/Meta/.claude/skills/eureka/tools/stopgap/ygg-verify.sh /f/Projects/Huginn-leaf-anchors HEAD rust "$(tr -d '\r' < v4.sh)" > v4.launch 2>&1 &); sleep 1; echo ok
Allow clippy::large_enum_variant on PipelineDocument

CutSpec.reads grows the largest variant past clippy's 200-byte gap to the next; boxing a variant would change every construction site, and a document is a transient wrapper around one value. Builds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 21:40:57 +02:00
Meta Vens
8dee875153 Launch primitive: drop a duplicated test attribute
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 21:30:50 +02:00
Meta Vens
6e44095615 Launch primitive: a call seam on the daemon port and tests for the mutation survivors
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 21:18:31 +02:00
Meta Vens
ae12b0cb6a Golden lines and published schemas derived for CodeLocation.symbol and CutSpec.reads
Two golden lines appended (dumped by golden_dump on Yggdrasil at 44c010c; numstat 3 added, 0 deleted
against the base) and the six schemas regenerated from the types. Builds; with 44c010c the
workspace tests are expected to pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 21:12:25 +02:00
Meta Vens
92c193c965 Launch primitive: test-name and import fixes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:55:49 +02:00
Meta Vens
cfbecd307f Cargo.lock: mind-body gains cultnet-rs, eureka-state and huginn-mind
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:51:20 +02:00
Meta Vens
ea9c324663 Launch primitive: queue, breaker, open_and_launch and the run aliases
Adds the turn and operated_by aliases on the run kind, and in mind-body the
Launcher port with SystemdLauncher, the work queue, the repetition breaker and
open_and_launch. Not yet built: this commit may not compile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:51:07 +02:00
Meta Vens
f6b3ec5e78 Map: who stops her units when the brake is held (mind-launch r2, brake-stop r1)
Imagination imagination-brake-stop, session self-2026-10-09-eureka: body
facts F18-F20, model rows for run, Brake and Units, and the rationale for
a synchronous stop owned by `mind-control brake hold`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:38:44 +02:00
Meta Vens
44c010c9da Leaf: CodeLocation.symbol and CutSpec.reads, additive at epoch v2 through the value_types! = absent marker
Adds Absent, Symbol, ReadAnchor and read_window_is_bounded, the marker in
value_types!, the workspace fixtures and the reads admission test. The
golden file and the six published schemas are not regenerated yet, so the
golden, schema and wire-schema tests fail at this commit (it builds).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:29:53 +02:00
Meta Vens
df7507b6aa Merge eureka-substrate/run-kind: the run kind, AlreadyClaimed and one claim rule for opening and reinstatement
Soul s1-s3 hold (eureka-substrate:verdict:cut-run-kind.s3). Additive on the wire; the live upgrade must be daemon-first (follow-up huginn-upgrade-daemon-first).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:02:29 +02:00
Meta Vens
378f4d7749 Merge eureka-body/mind-control-store: the operator's brake and burn-rate dial in a root-owned CultCache store, its CLI, and one fail-closed reader
Soul s1-s4 hold (eureka-body:verdict:cut-mind-control-store.s4). Nothing installed on Yggdrasil yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 17:01:09 +02:00
Meta Vens
cc66193961 mind-body: drop a stale line from the control test header
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:55:51 +02:00
Meta Vens
a50b25c08e mind-body: mind-control takes --root <dir>; the window probe runs in a tempdir
Soul s3: the window probe wrote a window-probe-<pid> instance under the real
/etc/gamecult/minds. A leading --root argv flag (argv, because sudo -E carries
the environment) replaces the default root; the probe points the real binary at
a tempdir, whose drop removes whatever a failed assert leaves. No test names
/etc/gamecult any more; the path-derivation test uses CONTROL_ROOT.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:53:27 +02:00
Meta Vens
e1b0a5c6ff Runs: reinstatement shares the opening claim rule, liveness included
run_claims_rule is the one check for a run's claims (in force, held by no
other live run), called by opening and by the withdrawal that reinstates.
Tests: contested second claim on reinstatement, resolved claim refused and
live claims allowed, a repeated non-first claim refused at validate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:47:10 +02:00