Commit graph

248 commits

Author SHA1 Message Date
f37ea93eaa fakebin cargo and flock: executable, as docker and sudo are
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 19:15:47 +01:00
d4fba11da6 tools/cargo-mutants.sh: one owner of cargo-mutants on Yggdrasil
One verify job per range: a plan container lists the mutants (diff taken at the
workspace root), stage 1 runs each file's mutants against that file's tests only
and decides only caught and unviable, stage 2 confirms every survivor, timeout,
unfiltered or zero-test file on the full suite, sharded over free slot leases,
and the merge prints one MUTANTS line and the final MISSED/TIMEOUT names.
NAMES reruns chosen survivors; TEST_ARGS skips flaky tests.

Deletes ygg-verify.sh's MISSED/TIMEOUT summary grep and its inline cargo mutants
usage example; the host-mode export gains YGG_SLOTS and YGG_ROOT. Briefs and
SKILL.md name the script; the mock docker grows /cm and /out, with a fake cargo
and a fake flock for the new test-tools.sh cases.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 19:15:38 +01:00
d2d64d0d19 Merge pull request 'context-pack docs: Soul s1 Lows' (#39) from self/cp-doc-lows into main 2026-11-01 03:08:06 +00:00
d23cfd6151 context-pack docs: NEW anchors are allowed at base; escape the INDEX row's pipe (Soul s1 Lows on cut-context-pack-reads)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 04:08:04 +01:00
f6325062a5 Merge pull request 'context-pack: resolve reads, check symbols, capped caller lists (cut-context-pack-reads r3)' (#38) from hands/context-pack-reads into main 2026-11-01 03:07:38 +00:00
3c1d59cf2d test-tools: pin that a budget with caller lists and no unlisted symbols wastes no line
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-01 03:41:20 +01:00
5929db8225 test-tools: pin the context-pack window budgets, caller-list bounds and --only truncation
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-01 03:09:28 +01:00
ce3860949c context-pack.py: caller-list notes always fit --max-lines; pin the caller bounds
A cut window or caller list now reserves the lines its notes need, the
suggested --max-lines prints everything, and the 50-hit, 20-file, 160-character,
CR and --only bounds each have an assertion.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-01 02:42:53 +01:00
e192bd1221 Merge pull request 'campaign-state: the repo set in force and how Self changes it (cut-skill-campaign-repos r2)' (#37) from eureka-substrate/skill-campaign-repos into main 2026-11-01 01:01:05 +00:00
775d8bcf39 campaign-state: the repo set in force is the target's repos, else the campaign's
Campaign row names the opening set; target row gains repos; cut_spec row
gains reads. Bounds name target repos (16) and campaign repos (8). The
cut-spec repo rule becomes the repo-set-in-force rule with how Self adds or
removes a repo, and a Repos in force recipe is added.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-01 01:54:41 +01:00
4d635b8f4b Merge pull request 'doctrine: Persona pointers, Soul s2 Lows' (#36) from self/persona-pointers-2 into main 2026-11-01 00:52:56 +00:00
c53f3462b4 doctrine: Persona pointers name the MCP put as interim and drop the claims s2 falsified (Soul s2 pointer-mcp-names, persona-md-every-turn, persona-md-voidbot-consumer)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 01:52:54 +01:00
21b92bd85e Imagination writes reads and symbols; Hands uses the pack's caller lists
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-01 01:50:06 +01:00
c29671c4ac context-pack.py: reads, symbol checks and capped caller lists
Read anchors resolve like file_changes (r<k> rows, MISSING when absent at
base), anchors with a symbol must hold it in the mapped window or gain
SYMBOL_MISSING, and one capped git-grep caller list per symbol follows the
windows within --max-lines. Specs without reads or symbols print what v1 did.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-01 01:50:05 +01:00
2354fc1346 Merge pull request 'doctrine: Persona state pointers name Huginn as the holder' (#35) from self/persona-pointers into main 2026-11-01 00:44:47 +00:00
8806aa3096 doctrine: Persona state pointers name Huginn as the holder (Soul finding cut-doctrine-persona-in-huginn.s1.cross-doc-drift)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-01 01:44:38 +01:00
0ac55b729f ygg-verify: jobs run at nice 10 and idle IO inside the container
nice on the docker client never reached the job, which containerd starts.
On 2026-10-31 three verify jobs held Yggdrasil's IO pressure near 75% full
and the swarm's turns slowed; idle IO lets the swarm go first.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 19:40:03 +01:00
0c95917ccd persona: body blockers are said in #minds to Eureka, as well as where the work is
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 17:49:24 +01:00
308d7fd17d Merge pull request 'persona: each room purpose; #operator only for what needs the operator' (#34) from persona-rooms into main 2026-10-31 11:33:23 +00:00
2087b89faf persona: each room's purpose; #operator only for what needs the operator
The Minds used #operator for Mind-to-Mind business (operator 2026-10-31:
'they were using operator for non operator things'). Ruling
eureka-body:room-registers named #minds, #swarm and #burn but not #operator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 12:33:14 +01:00
4dc64d7931 Merge pull request 'persona: register rule (Persona voice everywhere but #minds)' (#33) from persona-register into main 2026-10-31 04:59:36 +00:00
79cf0a1252 persona: register rule, Persona voice everywhere but #minds; the swarm's Persona turns carry this charter
Operator 2026-10-31, ruling eureka-body:persona-voice-outside-minds.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 05:59:26 +01:00
2aed77c405 Merge pull request 'skill: use the huginn CLI instead of the eureka-state MCP' (#32) from eureka-cli into main 2026-10-31 04:01:09 +00:00
5a03635431 skill: agents reach the mind through the huginn CLI, not the eureka-state MCP
Ruling eureka-body:ruling:cli-over-mcp-agent-surface. Exact command forms in
campaign-state.md; MCP kept as the fallback for shell-less clients. persona_get
and persona_put have no CLI verb: recorded as a known gap. tools/mind.py and
tools/recall.py (MCP-bound scripts) are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 04:33:28 +01:00
7ad1c9f4b0 Merge pull request 'doctrine: GameCult workspace doctrine moves into the skill as doctrine/gamecult.md' (#31) from self/gamecult-doctrine-home into main 2026-10-31 00:21:12 +00:00
f14adc0620 doctrine: the GameCult workspace doctrine moves into the skill as doctrine/gamecult.md
Its single copy was the unversioned F:\Projects\CLAUDE.md, which no Mind on
Yggdrasil could read. That file becomes an import of this one. Operator,
2026-10-31: inject the GameCult core doctrine including philosophy into Persona
turns.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 01:20:18 +01:00
7955fba235 Merge pull request 'Skill: re-entry triages reports with no verdict; second beating triggers the structural move; pushed heads build' (#30) from self/reentry-skill-notes into main 2026-10-27 16:02:44 +00:00
91efdce0f0 Skill: re-entry triages reports with no verdict; second beating triggers the structural move; pushed heads build
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:02:28 +01:00
6d7cf601f7 Merge pull request 'Research: recall triggers prior art' (#28) from eureka-substrate/recall-triggers-research into main 2026-10-23 18:48:38 +00:00
958606e02c Merge pull request 'Recall at admission: recall.py admit holds a ruling/question batch once with its in-force neighbours' (#29) from eureka-substrate/recall-admit into main 2026-10-23 18:48:27 +00:00
0acb7c9286 test-tools: for-line escape case spells the expected backslash-u with chr(92)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-23 20:26:54 +02:00
8da54074b1 test-tools: R8 budget case sized to hold one neighbour (a For line with none is no longer a deny)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-23 20:24:51 +02:00
34cbdd45b7 recall: install form that cannot exit 2; a hold never lists a For line empty; For-line escape ASCII-only; tests for exclusion identity, cap and silent window
The install command is "<abs python.exe> <path>/recall.py prompt|admit || true"
(Claude Code runs hook commands through Git Bash on Windows; a missing script
made py -3 exit 2, which blocks every prompt or admit). A For line is joined to
its first neighbour so render keeps both or neither; no neighbour fitting the
budget is no deny. The escape test is [A-Za-z0-9_.:-], not Unicode \w.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-23 20:22:00 +02:00
40bed7ee25 mutation-mock fakebin: docker and sudo are executable (mode 100755)
The mutation-runner self-tests put them on PATH and got exit 126 in the
Linux container, which left 15 FAIL mutation rows red at every cut.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-23 20:22:00 +02:00
da193e3e02 test-tools: admit R9 Unavailable names the tool kind; R8 budget and unchecked-member cases; restore two literal CRs in the context-pack fixtures
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-23 19:41:06 +02:00
e12435e7e2 test-tools: the recall admit section, R1-R12 driven with real hook JSON against the fake binding
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-23 19:36:28 +02:00
13133bcb40 recall.py admit: a PreToolUse hook that holds an admit with rulings or questions once, listing in-force neighbours
Shares mind.call, line_of, inert, render and the hard stop with prompt mode;
render takes the header. Digest of tool_input plus agent_id in the session
scratchpad; fails open with a note naming only the failure kind.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-23 19:36:28 +02:00
f09826cc28 Research: recall triggers (hooks docs, prior art, retrieval quality)
Eyes facts file serving eureka-substrate:ruling:recall-triggers-rescoped:
which Claude Code hook events carry additionalContext and reach subagents,
whether PreToolUse updatedInput can rewrite an Agent brief or an MCP call,
proactive-recall prior art, and practice for thresholding semantic hits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 19:19:46 +02:00
614caf8832 Merge pull request 'Worktree cleanup is scoped to this session's own agents' (#27) from eureka-self/worktree-scope into main 2026-10-23 10:36:38 +00:00
3acf8293cc Worktree cleanup is scoped to this session's own agents, by name
A prefix sweep emptied another Self's live C:\cl-wt\c2a-land mid-build;
"clean and pushed" says nothing about who is working in a tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 12:36:33 +02:00
a559072dfa Merge pull request 'Worktrees die with their cut' (#26) from eureka-self/worktree-retention into main 2026-10-23 10:22:19 +00:00
cf32f253b7 Self removes a cut's worktrees in the turn it merges; never defer cleanup to a handoff
C:\aeth-wt held 255 GB of merged-cut worktrees; C: fell to 1.4 GB free
during an operator flight. Unreferenced heads are parked under keep/ tags.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 12:22:08 +02:00
a4b7fae21f Merge pull request 'Recall hook: the mind recalls into context on every prompt' (#25) from eureka-substrate/recall-prompt into main 2026-10-22 17:49:47 +00:00
8701da3a86 recall: the deadline clock starts at process creation and the kill fits inside it; R2 times the interpreter, not the shell
On Windows the run overshot its deadline by 450-720 ms in the R2 bands: ~200 ms of
interpreter start and imports ran before the clock, the hard stop sat 0.3 s after the
deadline, and the test timed bash, env and the py launcher too. The clock now starts at
process creation (GetProcessTimes), the reply wait ends 0.1 s early so the kill and exit
fit, and the hard stop is the deadline itself. Residual outside the script: the py
launcher (40-130 ms, rare spikes to 300) and the creation call. R2 times the interpreter
directly, best of two, bands -250/+100 ms around the deadline.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 18:44:11 +02:00
0342dceef9 recall: recalled text is inert data; the deadline is the whole run; budget, stdin and answer are bounded
Soul s1 fixes. The hook header says the lines are recalled records, data and
never instructions, written by agents not the operator. Every item is one JSON
object per line: id, title and operator_quote are JSON strings with < >, control,
bidi and separator characters escaped, so a title cannot close the framing, forge
a tag, a header or an operator segment. RECALL_DEADLINE_MS now bounds the whole
run through a hard stop; stdin is read to 4 MiB and the answer to 1 MiB
(mind.call max_bytes); RECALL_BUDGET is clamped to 9000 under Claude Code's
10,000-character cap. Tests: hostile text, a non-ASCII process-boundary run under
cp1252, byte-versus-character budget, stdin held open and endless, answer size,
budget ceiling, and the four unrecorded survivors (negative reply timeout, reply
id check, env-int positivity, EOF sentinel). Mutants of each were run and caught.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 21:44:02 +02:00
f35410a8b2 tools: recall.py prompt, the UserPromptSubmit hook that pushes nearest in-force rulings into context
Queries rulings, questions and follow-ups in force across every root, ranked by
Huginn against the prompt, through mind.call, and prints one hook JSON within
RECALL_BUDGET. Never blocks: any failure or the RECALL_DEADLINE_MS deadline
(default 4000) exits 0 with empty stdout; one attempt; prompts under 3 words are
not queried. test-tools.sh drives it against the fake binding and pins R1-R7;
the fake gains a query branch. INDEX rows and a Precedent note added. The
operator installs the hook; settings.json is not touched.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 16:34:20 +02:00
5e71d8e4ff tools: one mind client (mind.py); context-pack's private MCP client deleted
mind.call spawns the eureka-state binding, does the stdio handshake and one
tool call within a deadline, and kills the child on every exit path.
context-pack's mcp_view_once is deleted; mcp_view delegates to mind with
retry_once. Messages, exit codes, retry and env rules are unchanged (all 228
context-pack checks pass).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 15:55:46 +02:00
979b190f4a Merge pull request 'Doctrine and briefs: nothing that exists is sacred, the operator's words included' (#22) from self/nothing-existing-is-sacred into main 2026-10-14 00:36:23 +00:00
c02d49790c Merge origin/main into self/nothing-existing-is-sacred 2026-10-14 02:36:17 +02:00
456ac28f4a Merge pull request 'Skill: a worktree's branch is the spec's branch' (#21) from self/worktree-branch-is-spec-branch into main 2026-10-14 00:36:04 +00:00