Commit graph

285 commits

Author SHA1 Message Date
Meta Vens
cb6f1a5a4e mind-body dependency graph test: read every target, not the host's
cargo unifies features per target, so a target-specific line that restores
eureka-state's default features left a Linux graph clean while a Windows
build compiled the huginn CLI's parser. The test asks cargo tree for
--target all, for the control and for mind-body.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 20:15:18 +02:00
Meta Vens
7be2261d0c mind-body launch tests: a Persona request of every claim kind at once is refused
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:20:11 +02:00
Meta Vens
199790739d mind-body launch tests: case and suffix forgeries of the instance, Persona requests with several claims
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:19:14 +02:00
Meta Vens
5f38ac74be mind-body forge probe: a root from the environment, and the test seam in the library build
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:19:14 +02:00
Meta Vens
e9809d3134 mind-body: take eureka-state without its default features; a test pins clap out of the graph
Builds (merge head 5da8b06 is green; this commit adds the manifest change and
the cargo tree test).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 19:19:14 +02:00
Meta Vens
5da8b06a6d Merge remote-tracking branch 'origin/main' into eureka-body/mind-launch 2026-10-10 19:16:19 +02:00
Meta Vens
766cba4c3a Merge eureka-substrate/huginn-persona-state: Huginn holds an instance's Persona state
eureka-substrate:cut_report:cut-huginn-persona-state.h1-h3, held by Soul
(eureka-substrate:verdict:cut-huginn-persona-state.s3). Validated against the
published schema, replaced whole under CAS with a receipt. Not deployed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 12:44:28 +02:00
Meta Vens
126a914abb Restore LF line endings in the files my last three commits rewrote as CRLF
The repo stores LF; a scripted edit on Windows wrote CRLF. No content change:
git diff -w d5fddc3 shows only the three commits' real edits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 10:58:14 +02:00
Meta Vens
40fd220d16 mind-body: fix the moved tests' paths, the seam's comment and unused imports
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 10:21:25 +02:00
Meta Vens
6df2a684ef one_persona_per_mind test: a planted row is unreadable on status and door alike
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 10:20:39 +02:00
Meta Vens
27e8d58757 huginn CLI whoami prints the persona door state
One bounded line: absent, stored updatedAt=<stamp>, or unreadable; no value
of the document. Test over canned Whoami answers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 10:15:44 +02:00
Meta Vens
6f483bbe02 Persona status goes through persona(): one decision of readability
whoami's persona field derived from stored_updated_at, which ignores the
writing receipt, while persona_get requires one. Status now matches on
persona(), so a receiptless row is Unreadable on both. The test asserts
agreement for every planted row and for a put-written row (restoring the
is_err equality weakened in c5af029).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 10:15:44 +02:00
Meta Vens
d5fddc3a58 Merge origin/main (huginn CLI) into huginn-persona-state
Resolves the eureka-state Cargo.toml comment block to main's, regenerates
Cargo.lock from main's with cargo update -w, adds the Persona and PersonaPut
arms to the CLI's unexpected-answer match and the persona field to the CLI
test MindStatus literals.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 10:15:12 +02:00
Meta Vens
3fac90076d mind-body: the reader takes the instance only; the control root is a constant a caller cannot supply
read_effective(instance) reads CONTROL_ROOT/<instance>/control.cc. The root override is a thread-local under cfg(test) inside the crate; the reader tests and the Grant launch tests move in-crate to use it. The operator CLI's show derives its display line from the store it already read. An external forge probe and compile_fail examples pin the rule; the instance gate is pinned with same-length, prefix and extension forgeries, and the Persona refusal with a claim of every kind.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 09:05:22 +02:00
Meta Vens
c5af029d20 Tests follow PersonaStatus: the MCP whoami answers in it, a receipt-less planted row is not a door read
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 08:53:05 +02:00
Meta Vens
e968cf2e1e Merge eureka-substrate/huginn-cli: the huginn CLI over HuginnClient
eureka-substrate:cut_report:cut-huginn-cli.h1 and h2, held by Soul
(eureka-substrate:verdict:cut-huginn-cli.s2). Strict JSON in and out, read-back
after admit, exit codes per the map; clap behind the default cli feature.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 08:50:48 +02:00
Meta Vens
b759addf3e Regenerate the response wire schema for PersonaStatus; lock serde_path_to_error
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 08:38:42 +02:00
Meta Vens
ea28b8cbc0 Decoder reports field path and error class, never a caller value; status says Unreadable
The shared request decoder (envelope.rs) no longer quotes decoder text or
envelope fields: a refusal names the field path and the class. MindStatus.persona
is PersonaStatus {Absent, Stored, Unreadable}, so whoami answers in the persona
door's own terms.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 08:32:48 +02:00
Meta Vens
e95e2d57aa Merge origin/main (f003801) into huginn-persona-state
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 08:30:51 +02:00
Meta Vens
7d85db3af3 mind-body control test: the no-lock-file listing reads the instance's directory
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 08:14:02 +02:00
Meta Vens
36a9f47133 mind-launch tests: split the Persona step 0 test; admission allows one live Self holder
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 08:11:46 +02:00
Meta Vens
1db7ff3946 huginn CLI: decode errors report category and position, never serde's message; a refused read-back is the mind's no; clap behind a default cli feature
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 08:06:56 +02:00
Meta Vens
663a844e76 mind-launch: a Grant names its instance and its store, Persona runs take no claims, breaker bounds pinned
Grant carries the instance whose store was read; read_effective(root, instance)
derives the store path itself and no caller supplies a path or a source. The
launch refuses a Grant of another instance and a Persona request with claims,
both typed refusals that name no input. Launcher drops its dead label: liveness
is keyed by unit (instance, turn). Tests pin Persona step 0, the Operator-run
exclusion, the fiftieth ended run and the same-batch boundary.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-10 06:54:29 +02:00
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