Briefs and skill: summary/wait verify, call budgets, range dump, Forgejo contributions
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
60a09dc17c
commit
506680c262
3 changed files with 57 additions and 22 deletions
6
SKILL.md
6
SKILL.md
|
|
@ -531,8 +531,10 @@ and reconciles the target doc with the Body.
|
|||
Scripts that agents share live in this repo under `tools/`. `tools/INDEX.md`
|
||||
lists each script, its consumer and the brief that names it; briefs name the
|
||||
exact script they want and agents do not browse. Contributions come by branch
|
||||
and pull request, never a push to main. A script that verdicts depend on gets
|
||||
a Soul pass before merge. A script whose brief no longer names it is pruned.
|
||||
and Forgejo pull request (this repo lives on Yggdrasil's Forgejo), never a push
|
||||
to main. A script that verdicts depend on gets a Soul pass before merge, and
|
||||
`bash tools/test-tools.sh` passes first. The summary and wait modes of
|
||||
`tools/stopgap/ygg-verify.sh` and `tools/mutation-table.sh` are such scripts. A script whose brief no longer names it is pruned.
|
||||
Scripts that know a project's layout stay in that project.
|
||||
|
||||
## Git and tooling rules (scars)
|
||||
|
|
|
|||
|
|
@ -98,7 +98,8 @@ path>. Do not map cuts, do not write code, do not commit; the root agent
|
|||
commits.
|
||||
|
||||
Rehydrate (recipes: target in force, rulings in force, open questions and
|
||||
follow-ups). Read enough of the Body to enumerate the persistent kinds.
|
||||
follow-ups). Read enough of the Body to enumerate the persistent kinds. Orient
|
||||
and probe through scripts, one call per question, output at most 150 lines.
|
||||
|
||||
Give one table, a row per persistent kind:
|
||||
- Identity: what names it. Is the namespace stated? Is the name injective? Can
|
||||
|
|
@ -127,7 +128,8 @@ prose map at <path>, edit body facts and rationale. Also edit the model page
|
|||
whenever a probe changes a row's identity, lifecycle or authority. Imagination
|
||||
wrote that page in 0b, and a model a cut contradicts is stale steering text.
|
||||
Do not commit; the root agent commits. Do not change code in any repo. Scratch probes in
|
||||
<scratchpad> are fine.
|
||||
<scratchpad> are fine. Orient and probe through scripts: one call per question,
|
||||
output at most 150 lines. Budget 40-80 calls and about 250k context.
|
||||
|
||||
Rehydrate (recipes: target in force, rulings in force, open questions and
|
||||
follow-ups, specs with no report, one cut's record for <cuts that constrain
|
||||
|
|
@ -258,7 +260,15 @@ one head (SKILL.md, step 3); keep it fitting:
|
|||
|
||||
- **Verify once, at the end.** Not after every edit. A full mutation sweep and
|
||||
a batchmode compile per edit is most of a long run's spend and proves nothing
|
||||
the final sweep will not.
|
||||
the final sweep will not. One job carries the build, the scoped tests and the
|
||||
mutation run, so the queue and the compile are paid once.
|
||||
- **Orient in one script.** One Bash call prints git status, the base and the
|
||||
spec's anchor ranges (`sed -n`) for every file the spec names. Independent
|
||||
reads, views and greps go in one parallel message.
|
||||
- **Bound every observation.** No command prints more than about 150 lines.
|
||||
Logs go to a file; read `tail -n 60` or `grep -n -m`, and read windows of a
|
||||
file, never the whole of anything over about 300 lines. Reading a file twice
|
||||
is a smell: write what you need to keep to a scratch notes file.
|
||||
- **Read the spec by id, not the map.** The cut_spec is bounded and holds only
|
||||
this cut; a worker that reads 900 lines of map to find 60 has spent its
|
||||
budget before it starts.
|
||||
|
|
@ -278,13 +288,16 @@ one head (SKILL.md, step 3); keep it fitting:
|
|||
|
||||
Long jobs: wait for them and finish, and never end your turn before your
|
||||
report. Each turn end reaches Self as a notification and costs a read of its
|
||||
whole context. Start the job as one background shell whose command exits only
|
||||
when the job does. Then wait in the foreground, one call at a time, each at
|
||||
most 270 s so that your cache stays warm: `timeout 270 bash -c 'until [ -e
|
||||
<done-file> ]; do sleep 60; done'`, then read the result or call again. A call
|
||||
whole context. Start the job as one background shell (run_in_background) with
|
||||
`SUMMARY=<scratchpad>/<job>.log` in front of `tools/stopgap/ygg-verify.sh`, a
|
||||
fresh log path per job. Then wait in the foreground, one call at a time:
|
||||
`tools/stopgap/ygg-verify.sh wait <scratchpad>/<job>.log` blocks for at most
|
||||
270 s, so your cache stays warm, and prints the bounded summary when the job is
|
||||
done. If it prints `RUNNING <n>s` (exit 99), call it again. Exit 98 means the
|
||||
launcher is gone with no verdict: rerun the job, do not guess its outcome. A call
|
||||
longer than 5 minutes rewrites your whole context. Never run a second watcher
|
||||
on the same job, never use a timer shorter than 60 s, and send no interim
|
||||
message.
|
||||
on the same job, never use a timer shorter than 60 s in a loop of your own, and
|
||||
send no interim message.
|
||||
Mutation tools run on schemata or copies and never edit the tree. A Soul
|
||||
probe that mutates by hand works on a scratch copy: the stopgap's container
|
||||
or a throwaway clone, never the working tree.
|
||||
|
|
@ -310,7 +323,10 @@ Commits:
|
|||
- Say in the message which commits don't build.
|
||||
|
||||
Verification: <exact builds, tests, captures, negative greps>.
|
||||
- Verify through `tools/stopgap/ygg-verify.sh`; read its output tail, and open the full log only at a named failing test, with `grep -n -A 40`.
|
||||
- Verify through `tools/stopgap/ygg-verify.sh` with `SUMMARY=<log>` (above):
|
||||
read the summary, and open the full log only at a named failing test, with
|
||||
`grep -n -A 40`. Hand mutants go in one list to `tools/mutation-table.sh`,
|
||||
one job for all of them.
|
||||
- Revert incidental asset churn.
|
||||
|
||||
Budget: if the cut can't land coherently, stop at a pushed, building commit
|
||||
|
|
@ -335,8 +351,8 @@ revised spec first. Its fields:
|
|||
- landed_names, undone, and promises: each thing you claim the cut now
|
||||
guarantees, labelled, for Soul to measure
|
||||
|
||||
Report to Self, and nothing else: the cut_report id and receipt, then any raw
|
||||
verification output too long for an evidence line, pasted, not summarised. No
|
||||
Report to Self, and nothing else: the cut_report id and receipt, and, for
|
||||
output too long for an evidence line, the scratch path that holds it. No
|
||||
narrative of the pass, no restating the brief or the report.
|
||||
```
|
||||
|
||||
|
|
@ -352,11 +368,15 @@ Admit one verdict and its findings, and nothing else.
|
|||
afterwards.
|
||||
- Do not run <expensive runtime> unless told.
|
||||
- Long jobs: wait for them and finish, and never end your turn before your
|
||||
report. Run the job as one background shell whose command exits only when the
|
||||
job does, and wait in the foreground in calls of at most 270 s (`timeout 270
|
||||
bash -c 'until [ -e <done-file> ]; do sleep 60; done'`). No second watcher,
|
||||
no timer under 60 s, and no interim message: each turn end is a paid wake of
|
||||
Self.
|
||||
report. Run the job as one background shell with `SUMMARY=<scratchpad>/<job>.log`
|
||||
in front of `tools/stopgap/ygg-verify.sh` (a fresh log path per job), and wait
|
||||
in the foreground with `tools/stopgap/ygg-verify.sh wait <that log>`: it blocks
|
||||
at most 270 s and prints the bounded summary when the job is done, or `RUNNING
|
||||
<n>s` (exit 99) and you call it again. Exit 98 means no verdict: rerun, do not
|
||||
guess. No second watcher, no timer under 60 s in a loop of your own, and no
|
||||
interim message: each turn end is a paid wake of Self.
|
||||
- Bound every observation: no command prints more than about 150 lines, logs go
|
||||
to files, and you read windows of them.
|
||||
|
||||
Scope: <cut_report id>. Rehydrate (recipes: target in force, rulings in force,
|
||||
one cut's record for <cut>), then view the report (its range and its promises), the cut_spec it
|
||||
|
|
@ -401,7 +421,10 @@ specifically:
|
|||
mutation run where you can, since that job pays for the build anyway. Batch
|
||||
probes into one job script rather than one job each. Run the mutation tool
|
||||
in parallel (`--jobs 3`), and skip by name any test that a follow-up records
|
||||
as flaky, so that its flakes cannot count a surviving mutant as killed
|
||||
as flaky, so that its flakes cannot count a surviving mutant as killed.
|
||||
Dump the range once (`git diff <base>..<head> > <scratchpad>/range.diff` plus
|
||||
`--stat`) and grep that file instead of re-running `git show` per file. Hand
|
||||
mutants go in one list to `tools/mutation-table.sh`, never one job each.
|
||||
|
||||
Before recommending a mechanism as the fix direction, check that it was not
|
||||
already built and deleted. Run `git log -S '<distinctive identifier>'` and
|
||||
|
|
@ -448,7 +471,8 @@ the campaign's mind and the prose map and target doc; don't edit those, and
|
|||
admit nothing. Rehydrate (recipes: rulings in force, open questions and
|
||||
follow-ups) to check memory against the mind.
|
||||
|
||||
Surfaces: <memory dirs and files>.
|
||||
Surfaces: <memory dirs and files>. Budget at most 25 calls: inventory the
|
||||
surfaces in one script, then make the edits.
|
||||
|
||||
Candidates for durable memory: <ruling ids, scars>. Check each against its
|
||||
owner first, the mind included, and don't duplicate what the owner records. A
|
||||
|
|
@ -474,7 +498,8 @@ what was missing and what it would have prevented.
|
|||
|
||||
```
|
||||
You are Eyes. Read only. Write findings to <scratchpad>/<name>.md and return a
|
||||
short summary. You read the campaign's mind with query and view only, through
|
||||
short summary. Budget at most 40 calls: transcripts by script, never whole
|
||||
reads, and fetches batched in parallel. You read the campaign's mind with query and view only, through
|
||||
the Rehydrate block (recipes: <as needed>); you never admit.
|
||||
|
||||
Sources:
|
||||
|
|
|
|||
|
|
@ -2,6 +2,14 @@
|
|||
|
||||
Record each change to the skill together with the evidence that motivated it.
|
||||
|
||||
## 2026-10-01: verify summaries, a wait mode and a kill table
|
||||
|
||||
Campaign `eureka-substrate`, cut `tool-calling-s5` (map `references/tool-calling-cut.md`, sections 3 and 5). Operator go: "go with 2 and 3; we're spending tokens to save tokens."
|
||||
|
||||
Evidence: Hands spent 3,852 observation calls (poll, read log, monitor, stop) on 1,443 launches, 2.7 per job, and Soul 1,800 on 813, 2.2 per job; eight ad-hoc harnesses (`runmut.sh`, `mutrun.sh`, `strykrun.sh` and others) were reinvented across agents.
|
||||
|
||||
What changed. `ygg-verify.sh` gains `SUMMARY=<log>` (full log to a file, bounded summary out: verdict, counts per framework, `ZERO TESTS RAN`, failing tests, failure sections and tail for a red job, and a `MISMATCH` line when the exit is 0 but the log shows failures) and `wait <log>` (blocks at most 270 s, returns the summary once, `RUNNING` exit 99, exit 98 for a launcher that died or never started). `tools/mutation-table.sh` runs a list of hand mutants in one job and returns a kill table with the killing test per mutant; it aborts on a red or zero-test baseline and never counts a build error as a kill. `tools/testparse.sh` is the one parser both read, with fixtures under `tools/fixtures` and `tools/test-tools.sh`. Briefs now name them, add orient-in-one-script and bounded-observation rules for Hands and Soul, call budgets for Imagination (40-80), Eyes (40) and Life (25), the range-dump rule for Soul, one job for build, tests and mutation, and the scratch-path form of the Hands report. Contribution text says Forgejo pull request.
|
||||
|
||||
## 2026-10-01: the skill follows the mind's correctness core
|
||||
|
||||
Campaign `eureka-substrate`, cut `skill-recipes`, after the Huginn admission-rule and `eureka-state` client cuts (cut `ops-mind-upgrade`). Evidence: a census of the live mind found 6 findings that could not be closed and 39 resolutions that could not be withdrawn, from key locals over the bound.
|
||||
|
|
|
|||
Loading…
Reference in a new issue