wiki-ingest: ein Lauf endet nach einer Quelle mit Stopp und /clear-Empfehlung - keine Schleife über mehrere Einträge im selben Kontext; Subagents für den Ingest verworfen, capture-session delegiert nicht mehr; gates.md: neuer Lauf auf ausdrücklichen Wunsch ist eine Einheitsgrenze (#219); 10.1.0-beta.13
CI / verify (push) Successful in 8m5s
CI / pwsh (push) Successful in 2m43s
Release / converters (push) Successful in 27s
Release / release (push) Successful in 36s
Release / wiki-mirror (push) Skipped

Files changed:
- CHANGES.md
- VERSION
- docs/how-to/capture-repository-docs.md
- docs/how-to/ingest-a-source.md
- instructions/capture-session.md
- instructions/gates.md
- instructions/wiki-ingest/SKILL.md

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2
This commit is contained in:
torbenandClaude Sonnet 5.5 committed 2026-10-15 23:32:11 +02:00
1 parent 52078bb4b0
commit 3197acfc6a
7 files changed
+57 -16

No files matched your search

+2 -1
View File
@@ -14,7 +14,7 @@ place only: `instructions/dev/version-parts.md` § The candidate model.
---
## 10.1.0-beta.12 - 2026-10-15 - export run: commit= im Marker je Seite statt je Ziel - ein Commit schreibt nur die Dateien der Seiten neu, die er berührt hat; der erste Lauf nach dem Update schreibt jede Datei einmal neu (#221)
## 10.1.0-beta.13 - 2026-10-15 - wiki-ingest: ein Lauf endet nach einer Quelle mit Stopp und /clear-Empfehlung - keine Schleife über mehrere Einträge im selben Kontext; capture-session delegiert wiki-ingest nicht mehr an Subagents (#219)
**Author:** Torben Nehmer
@@ -27,6 +27,7 @@ place only: `instructions/dev/version-parts.md` § The candidate model.
- Länge als dritte Größenachse beim Ingest: raw derive und raw fetch melden einen Text über der Längenschwelle mit einer CHECK-Zeile, raw pending markiert eine lange Textdatei; ingest-large-tree liest ihn in Teilen nach der Gliederung, mit einer Faktenliste je Teil (#226)
- wiki-query liest den Wortlaut geführt in der Rohdatei nach: über Seite, Source-Seite und Gliederung der Ableitung bis zum Zeilenbereich, nie freies Suchen in raw/; kb/CONTRACT.md präzisiert das Qualitätsziel auf die Substanz (#227)
- export run: commit= im Marker je Seite statt je Ziel - ein Commit schreibt nur die Dateien der Seiten neu, die er berührt hat; der erste Lauf nach dem Update schreibt jede Datei einmal neu (#221)
- wiki-ingest: ein Lauf endet nach einer Quelle mit Stopp und /clear-Empfehlung - keine Schleife über mehrere Einträge im selben Kontext; capture-session delegiert wiki-ingest nicht mehr an Subagents (#219)
**Low impact**
- instructions/dev: Konverter-Vergleich – eigene Ableitung gegen Referenzwerkzeuge am privaten Korpus, mit Grundlinie
+1 -1
View File
@@ -1 +1 @@
10.1.0-beta.12
10.1.0-beta.13
+2 -1
View File
@@ -43,7 +43,8 @@ Update the captured repositories
```
The agent checks every captured bundle. It takes one changed bundle per run into the wiki, replacing
the old edition as a whole, and tells you how many are still behind. Run it again for the next one.
the old edition as a whole, and tells you how many are still behind. For the next one, `/clear` and
say it again - each bundle is a run of its own in a fresh context.
`raw capture --update` and `raw accept --replaces-bundle` are the commands underneath. What each one
does is in the [command reference](../reference/commands/raw-material-and-uploads.md).
+6
View File
@@ -74,6 +74,12 @@ Ingest
A bare `Ingest` takes the oldest entry waiting in `incoming/`. `tools/wikitool raw pending` lists
what is waiting and names the entry the next bare `Ingest` will take.
One run takes one entry. When more are waiting, the agent says how many and ends with `/clear`,
then `ingest`: the next source belongs in a fresh context, because the previous one would otherwise
still be in view while its facts and citations are written for the next, and the iteration budget
fits about two runs. The agent does not start the next entry itself; if you ask it to go on in the
same context, it names that reason once and then does.
## Where the agent asks you
- **Before promoting the file into `raw/`**, the agent asks how faithful the capture is
+7 -6
View File
@@ -142,8 +142,9 @@ records the issue number, and the transcript stays what it is: evidence.
### 5. Ingest, one transcript at a time
Run `wiki-ingest` per transcript. **Sequentially. Never in parallel**, even when delegating to
subagents.
Run `wiki-ingest` per transcript, **each as a run of its own in a fresh context** - `/clear`
between two runs, as `wiki-ingest` step 12 ends every run. The transcripts are already in `raw/`
after step 3, so the reset loses nothing. **Sequentially. Never in parallel.**
Concurrent ingests of the same corpus collide in three places, and each collision is a silent
lost write rather than an error:
@@ -155,10 +156,10 @@ lost write rather than an error:
- **`publish`.** Two commits racing on one branch, and the Mass-Update Gate's `--confirm` token
digests a file list that the other run is still changing.
When delegating, give each subagent its own `WIKITOOL_SESSION_ID` so the budget is scoped per
transcript rather than shared - see [session-setup.md](session-setup.md). Several ingests are
several planned units, which is what makes a fresh id legitimate rather than a way around a
refusal ([gates.md](gates.md)).
**Not to subagents.** An ingest has stops only the user can answer - the key points and the
commitment in step 4, `fidelity` and `authority` in step 5, a name collision at `raw accept`, an
exit 42 - and a subagent cannot ask them. It would have to guess, which the skill forbids, or
abort.
Start the next one only after the previous has published and its tree is clean.
+6
View File
@@ -229,6 +229,12 @@ never in response to a gate refusal.** The plan is the human approval the gate w
have to ask for; a refusal means that approval has not been given yet. If you are tempted to
re-export the variable after an `ERROR` line, that is the gate working.
**A run the user explicitly asked to start in the same context is the other legitimate
boundary.** `wiki-ingest` ends every run after one source and recommends `/clear`; when the user
asks to go on in this context regardless, that request is the human approval, the finished run is
the unit boundary, and the new run takes a new id ([wiki-ingest](wiki-ingest/SKILL.md) § Decision
points). The agent never proposes this itself, and it is no way past a refusal.
**One tool takes a new id itself, for a fixed set of read commands.** `tools/bugreport.py`
([bug-report.md](bug-report.md)) runs `instructions verify` and `docs verify` under
`WIKITOOL_SESSION_ID=bugreport-<stamp>`, so that collecting a report neither spends the
+33 -7
View File
@@ -11,7 +11,8 @@ description: Processes a new source file into the LLM wiki - extracts entities a
directly into `raw/`, names a URL to ingest (step 1 fetches it into `incoming/` first), or
explicitly requests ingestion - with or without naming what (step 1 picks the entry when nothing
is named) - or asks to update the captured repositories (step 1 asks `raw status` which one moved).
**One run is one source:** one file, one bundle or one folder.
**One run is one source, in one context:** one file, one bundle or one folder. Step 12 ends the
run and says what comes next; the run never goes on to the next entry by itself.
**Before the first `wikitool` call:** `instructions/session-setup.md`.
@@ -100,10 +101,10 @@ validator complains - and the ticked list is the only record that they happened.
- **One bundle per run:** the one the user named, otherwise the first changed one in the output.
Announce it and carry on - which bundle, `old -> new` from its line, how many others changed,
and any error lines as above; an error on one repository never stops the run for another. Ask
nothing here - step 4 is the halt before anything is written. Each further bundle is a run of
its own, started by the same request, so every run stays within the iteration budget and has
its own `publish`. A bundle the user named that is unchanged, or on an error line, ends the
run with that said - no other bundle is taken in its place unasked.
nothing here - step 4 is the halt before anything is written. The other changed bundles are
not taken up in this run: step 12 names them, and each is a run of its own in a fresh context.
A bundle the user named that is unchanged, or on an error line, ends the run with that said -
no other bundle is taken in its place unasked.
- **Run the `raw capture --update <raw-bundle>` line printed under it.** `incoming/<bundle>/` is
this run's source from here on, and step 1 continues as for any folder, the size check below
included. A refusal - an `incoming/<bundle>` left over from an earlier run, for instance - is
@@ -466,8 +467,25 @@ validator complains - and the ticked list is the only record that they happened.
deterministic count behind the "every 10 sources" cadence. If the threshold is reached,
tell the user a full lint is due and offer to run `wiki-lint` next.
Then say how many entries still wait in `incoming/` (`tools/wikitool raw pending`), so the
user knows whether another run is due.
**Then the run ends - hard.** It ends here, not at the next entry. Count what still waits: the
entries `tools/wikitool raw pending` still lists, or, for a run that started from
`raw status`, the other changed bundles step 1 announced. If any wait, close with this one line
as the last thing you say, in the KB language (`AGENTS.md` § Conversation language), `N` being
that count:
> N more entries wait in `incoming/`. Next: `/clear`, then `ingest`.
For a captured-repository run:
> N more bundles changed. Next: `/clear`, then `update the captured repositories`.
If none wait, the line is left out. **Do not begin the next entry or bundle yourself**, and
take no "yes" or "go on" to the line above as the start of one without the decision point
below: the next source belongs in a fresh context, which only the user can open - `/clear`
does it, the same in every harness. Why: with this source still in context, the next run
writes its facts onto the other source's pages or cites them to the wrong raw file (no
validator sees that), and 20-35 `wikitool` calls per run put a second ingest in one context
against the 60-call budget.
## Decision points
@@ -509,6 +527,14 @@ validator complains - and the ticked list is the only record that they happened.
- **`publish` exited 42?** A single ingest is normally well under the Mass-Update Gate
threshold. If it trips - a source touching many entities - show the user the output and stop;
see `instructions/gates.md`.
- **The user asks to go on with the next entry in this context?** Their context is theirs to
decide, so this is not refused. Say once, in one or two sentences, that a fresh context is the
recommendation and why (the previous source stays in context and can leak into the next one's
pages and citations; the budget fits about two runs) - then follow. The new run is a planned
unit of its own with its own `WIKITOOL_SESSION_ID` (`instructions/session-setup.md`,
`instructions/gates.md` § Taking a new session id), and it ends with step 12 like the first.
The request, not a gate refusal, is what makes the new id legitimate: never take one to get
past a refusal.
- **A gate or the loop-breaker refuses anything?** Stop and follow `instructions/gates.md`.
A multi-tool ingest should land in roughly 20-35 `wikitool` calls; needing far more is a sign
the source should be split into several ingests - which is