Commit graph Huginn/crates
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
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
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
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
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
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
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
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
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
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
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
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
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