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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Under the binary's umask 077 a first write would have left /etc/gamecult/minds
0700 and unreadable by the units. The attacker reports how much it swept.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Soul s2: under a permissive umask the store was group/world-writable between
CultCache's rename and the chmod, and an fd opened there survived it. The
mind-control binary now sets umask 077 first (the library never touches the
umask). The writer refuses to write through an existing directory, lock or store
that is not root's or is group/world-writable, with the typed UnsafeStore error
naming path, mode and owner. Tests: a non-root open-for-write probe against the
real binary under umask 000; refusals for 0777/0775 directories, 0666/0664
locks and stores, and a non-root-owned directory; accepted root installs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>