Commit graph

228 commits

Author SHA1 Message Date
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
f7aea15419 Doctrine and briefs: nothing that exists is sacred, the operator's words included
Deference now covers content, canon, data and her own words; rulings say
whether her words decide, illustrate or sketch; creative passes develop and
challenge their inputs. Ruling aetheria-fauna:ruling:fauna-bestiary-open.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 02:35:54 +02:00
bbd9e61a52 Skill: a worktree's branch is the spec's branch, spelled exactly
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 01:47:29 +02:00
4f6b9a8a5e Merge pull request 'Briefs: no test run of any size on Starfire' (#19) from self/no-tests-on-starfire into main 2026-10-12 01:59:15 +00:00
7877581e21 Briefs: no test run of any size on Starfire
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:59:07 +02:00
e4121abd6e Merge pull request 'Skill: map only what is about to run' (#18) from self/map-only-what-runs into main 2026-10-12 01:38:11 +00:00
96ee66ff37 Skill: map only what is about to run; later cuts are lines in the prose map's cut sequence
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:37:56 +02:00
4d85eb6044 Merge pull request 'References: dated tool-calling map; two admission notes' (#17) from self/dated-map-and-admit-notes into main 2026-10-12 01:29:26 +00:00
bdb3284b51 References: date the tool-calling map against SKILL.md's threshold; two admission refusals in Notes from use
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:16:36 +02:00
9a7ef84109 Merge pull request 'Skill: Self rotates at about 400k' (#16) from self/self-rotation-400k into main 2026-10-12 01:14:19 +00:00
7c1feec80f Skill: Self rotates at about 400k; its context is long-lived and mostly cached
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 03:14:12 +02:00
1b1ee718ac Merge pull request 'Skill: every campaign in force has an area' (#15) from self/rotation-accounts-every-campaign into main 2026-10-11 06:58:32 +00:00
5f26ed50a6 Merge main into self/rotation-accounts-every-campaign
# Conflicts:
#	references/changelog.md
2026-10-11 08:58:27 +02:00
0719215f54 Merge pull request 'Briefs: Stryker offsets come from the job checkout' (#14) from self/stryker-offsets-from-job-checkout into main 2026-10-11 06:58:04 +00:00
c02790cdec Skill: every campaign in force has exactly one area; rotation and re-entry reconcile against the campaigns recipe
Operator, 2026-10-11: four campaigns in force had no Self.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 08:26:52 +02:00
f8c61bf592 Briefs: Stryker offsets index the file in the job's checkout, whose line endings follow .gitattributes
cut-bls-input-field.s3: LF offsets on CultMath's eol=crlf sources missed the
code under test. Changelog entry records the evidence.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 04:28:28 +02:00
278b881ebe Merge pull request 'Skill: name Self handoffs per area' (#12) from life/handoff-per-area into main 2026-10-09 20:42:22 +00:00
b4d41ea2ae Merge remote-tracking branch 'origin/main' into pr12-fix
# Conflicts:
#	references/changelog.md
2026-10-09 22:42:12 +02:00
ac2620b6dc Merge pull request 'Skill: research is always kept' (#13) from self/research-is-kept into main 2026-10-09 20:41:35 +00:00
6d05feacf7 Skill: research is always kept
A prior-art or literature pass is committed to docs/research before the
fork goes to the operator (operator 2026-10-09: "Research should always
be kept"). SKILL.md step 2, the Eyes brief template, and the changelog.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:36:32 +02:00
5f2b23258f Skill: name handoffs per area, not per day
Operator 2026-10-09 split the Self handoff by area; the rotation bullet now
names handoffs HANDOFF-eureka-self-<area>-<date>.md, one per Self area.

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