Commit graph

262 commits

Author SHA1 Message Date
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
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
d7b748ca4a Briefs: Aetheria verify jobs pass both the CultLib and CultMath pins
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 02:48:37 +02:00
764ee3aba0 Briefs: Aetheria Stryker passes cost ~86 minutes; one pass, report to a file
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 01:48:07 +02:00
dbcb41a046 context-pack tests: glob paths, straddles, --since boundaries, spec shapes, budgets, binding env
Real git repos in scratch: a src/[a] path beside src/a, pure deletions and
one-line replacements straddling either end of an anchor, edits on an
anchor's first and last line under --since, a --since commit with an
unreadable tree, thirteen wrong-typed spec variants with canaries, a
--max-lines below the table, --only truncation at the 7 and 6 line
thresholds and with a reserved not-expanded line, and the binding env block
with the caller's environment overriding it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-09 01:40:21 +02:00
459475f581 context-pack: literal pathspecs, typed spec-shape refusals, straddling deletions map to the first survivor
- git() is the one git call and passes --literal-pathspecs, so a spec path
  with [ ] * ? names that file and no sibling.
- spec_from_json validates base, file_changes and deletes; a wrong type is
  Fail(4) naming the field and InvalidInput, never a traceback or the value.
- carry(): a deletion straddling an anchor start maps to c+1 and one
  straddling its end to c; the d>0 clamp is no longer special-cased.
- The header prints a non-hex base as "unresolvable"; --max-lines is
  documented as bounding windows, the table always listing every anchor.
- The fake eureka-state gains FAKE_MODE=needenv for the binding env test.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-09 01:40:21 +02:00
a474da7a5f context-pack tests: pin hunk clamps, boundaries, unsafe paths, protocol and error codes
Survivors of the first mutmut run (200 of 688) drove these: replaced-block
and pure-deletion hunks, --since boundaries, NEW windows, 70-column change
text, the stdio handshake the fake server now validates, every error code.

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