Commit graph

191 commits

Author SHA1 Message Date
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
d1184f2147 Briefs: Aetheria /lfs is content-addressed; pass the CultLib pin
The by-path copy left LFS pointers in place and cost three failed runs in
each of two jobs on 2026-10-08.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 23:09:24 +02:00
11f6526283 context-pack tests: pin error messages, retry condition, file-end and CRLF handling
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 22:13:13 +02:00
0266de28cc Briefs: Aetheria verify jobs copy Settings.asset from /lfs too
With only the catalog copied, 204 tests failed on an LFS pointer during the
pirates-record merge (2026-10-08).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 21:59:11 +02:00
aa6ce2b097 tools/context-pack.py: carry a cut_spec's file_changes anchors to the worktree
Anchors resolve through git diff hunks from the spec's base (working tree
included) into a status table plus bounded windows; --since re-prints only
edited windows. Spec by id through the eureka-state stdio binding, or a
saved view. Fixture section in test-tools.sh; INDEX row.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-08 21:35:42 +02:00
776cc54ccd Docs: the context-pack map (2026-10-08)
Body facts, model page and rationale for the context-pack cuts in
eureka-substrate. The cut specs are the typed record in the mind.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 21:18:49 +02:00
95d7f67c38 Imagination overlap check before fan-out; /pins mounts read-write
Two parallel Imagination passes made two owners of one decision twice on
2026-10-08. NuGet restore fails under a read-only /pins mount.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 21:18:00 +02:00
761c65f731 Merge pull request 'Tool-call relief: wait-on.sh, python, brief lessons, Life reads the mind' (#7) from hands/toolcall-relief into main 2026-10-08 13:25:51 +00:00
6ab91ead9c briefs: canonical wait block drops WAIT_FROM, states fresh log path and exit 3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:22:00 +02:00
d9e45c8740 wait-on: delete WAIT_FROM; reused log paths are forbidden instead
Truncating writers (`>`, Unity -logFile) rewrite below any offset, so an offset
turned a stale success into a silent hang. The option, the scan branch, its docs
and its fixtures are gone; the header states the fresh-log-path rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:21:58 +02:00
de35a72fc3 briefs: one canonical wait block, fresh/offset log paths, pid-form caveat, consistent scratch paths
F1/F2: Hands block says prefer log+WAIT_PID, pid form means gone not succeeded,
fresh log per job or WAIT_FROM at launch. F3: exact Aetheria DOCKER_ARGS mounts.
F8: Soul points at the Hands block instead of rewording it; Imagination and
Eyes templates name wait-on.sh, <scratchpad>/<agent>/ and py -3; all examples
use <scratchpad>/<agent>/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:04:22 +02:00
30e199cf55 wait-on: WAIT_FROM start marker, GONE line for pid form, regex validation, executable bit
F1: log form searches only bytes after WAIT_FROM, so a stale done line in a
reused log is ignored (also makes the per-check cost independent of log size).
F2: pid form prints GONE (no completion evidence). F4: invalid ERE is exit 3.
Mode 100755 recorded for wait-on.sh; other tools/ scripts are still 100644.
F5, F6, F7 recorded as known limitations in the header. Fixtures added.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 15:04:20 +02:00
df590aa2c7 Changelog: tool-call relief
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 14:15:55 +02:00
c28d928150 Life: read-only mind tools so it can rehydrate
whoami, view and query; no admit. Follow-up eureka-substrate:follow_up:gap-life-has-no-mind-tools.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 14:15:53 +02:00
ebc746e937 SKILL: a long-lived branch merge can break semantically with no conflict
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 14:15:51 +02:00
18b160c44f Briefs: wait through wait-on.sh, py -3, and the 2026-10-07 lessons
Hands and Soul long jobs name tools/wait-on.sh for every non-Yggdrasil wait and
forbid bare true/echo/sleep polling (974 idle calls, 324 sleeps). py -3 is the
Python that works from Git Bash and PowerShell (65 Store-stub hits). Lessons:
own scratchpad subdirectory, wait protocol pasted verbatim, Stryker character
offsets from LF content, Aetheria DOCKER_ARGS mounts, rulings quote only the
operator.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 14:15:48 +02:00
a886d4524a Add tools/wait-on.sh: one waiter for pids, logs and files
Same contract as ygg-verify.sh wait (270 s cap, bounded tail, RUNNING exit 99,
exit 98 for a thing gone with no completion evidence). Windows PIDs are found
through tasklist, since kill -0 only knows Git Bash's own. Fixtures in
tools/test-tools.sh; INDEX row added.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 14:15:45 +02:00
0bb414d927 Merge pull request 'Self loads Eureka; Hands, Eyes and Life default to Sonnet; handoffs are pointers' (#6) from self/eureka-ambient-cheap-tier into main 2026-10-03 20:15:41 +00:00
0966a22277 Merge pull request 'Hands template: no resolutions; fix batches name their commits' (#5) from hands-never-close into main 2026-10-03 20:15:31 +00:00
e3f202f72d Self loads Eureka; Hands, Eyes and Life default to Sonnet; handoffs are pointers
- Agent frontmatter: hands, eyes and life default to model: sonnet, so an
  omitted model can no longer spend the root's strong model. Soul and
  Imagination keep inherit (operator 2026-10-03: "Soul and Imagination get the
  smarter model, not Hands").
- Self output style: invoke the Eureka skill at session start and after every
  /clear. A skill loads only when invoked; a session that never loaded it
  dispatched every Hands on Opus.
- Rotation: the handoff carries only what the mind does not hold, and Self
  rehydrates from the mind before briefing. A handoff that restated campaign
  status hid that scenarios Cuts 2-4 had not landed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 22:15:15 +02:00
f8dc3a5319 Hands template: admit the cut_report and no resolution; a fix batch names the commit it believes fixes each finding
On 2026-10-03 Self's briefs told Hands to admit Fixed resolutions, and the
template's admission line was silent, so nothing contradicted them. Verdict
variants:verdict:cut-c2a-declared-apply.s1 found one such closure only partly
fixed. The rule already stands in SKILL.md section 5 and campaign-state.md; this
puts it where briefs are written.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 15:05:35 +02:00
352165d56b Merge pull request 'Doctrine explains instead of shouting' (#4) from doctrine-deshout into main 2026-10-03 10:04:40 +00:00