Commit graph

217 commits

Author SHA1 Message Date
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
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
854d37a234 Merge pull request 'Briefs: Aetheria verify pins are git clones' (#11) from self/verify-git-pins into main 2026-10-09 13:36:30 +00:00
ec8fe51854 Briefs: Aetheria verify pins are git clones once the revision guard runs on Linux
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 15:36:18 +02:00
4b90ee0813 Merge pull request 'Briefs: a scratch subdirectory is named per dispatch' (#10) from self/scratch-dir-per-dispatch into main 2026-10-09 13:11:45 +00:00
ccad40e43e Briefs: a scratch subdirectory is named per dispatch, not per faculty
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 15:11:31 +02:00
21092b6cf3 Merge pull request 'Briefs: the context pack is how Hands reads a cut' (#9) from hands/context-pack-briefs into main 2026-10-09 12:19:51 +00:00
40e61f08ae Briefs: the --since sentence prints the full runnable command
Fixes Soul finding since-sentence-unrunnable: spec id and worktree are required positionals.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 14:18:34 +02:00
903794ca0c tools/INDEX.md: context-pack.py row names the briefs and SKILL.md step 1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 14:07:12 +02:00
15a6afe36f SKILL.md step 1: file_changes are also Hands' context pack
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 14:07:12 +02:00
ac3313b14b Briefs: Imagination writes file_changes as the context pack; Hands expands it first; Soul prints the sites
Replaces the sed -n anchor-range clause and the read-twice sentence in the Hands brief.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 14:07:11 +02:00
10d687a80b Merge pull request 'tools/context-pack.py: carry cut_spec anchors to the worktree' (#8) from hands/context-pack-tool into main 2026-10-09 12:06:07 +00:00
5bf88b80cb context-pack tests: pin the --only reserve and charge, the cut-window budget, header base, missing base
Targets the mutants that survived the first fix run: need arithmetic of cut
and full windows, the reserve for the not-expanded line at the budget edge,
the left-reserve >= 4 threshold with two windows, the exact more-lines
note, the blank line after the table, a non-sha base never echoed in the
header, and a spec without a base refused rather than crashing.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-09 02:50:19 +02:00