CLAUDE.md importiert jetzt nur noch AGENTS.md und verlinkt eine neue Referenzseite, docs/model-and-effort-selection.md, für die Modellwahl. USER.md, SOUL.md und ENVIRONMENT.md werden nicht mehr injiziert, sondern - wie auf jedem anderen Harness auch -
gelesen, weil AGENTS.md §§ Personalization/Environment es anweisen. Geliefert in f8111d0
(Hauptpaket) und 71446c0 (README-Nachzug), Stackversion 5.0.0-beta.8.
Der Befund war größer als die ursprüngliche Zeilenzahl
Der Ausgangspunkt war Anthropics 200-Zeilen-Ziel für CLAUDE.md und die gemessene Importkette
(647, später 672 Zeilen). Bei der Ausarbeitung stellte sich heraus: der eigentliche Fehler war
eine Harness-Drift. USER.md/SOUL.md/ENVIRONMENT.md wurden auf Claude Code per Import
injiziert, auf den drei anderen Harnesses (Codex CLI, Copilot, Vibe) aber allein durch AGENTS.mds eigene Anweisung gelesen - zwei Mechanismen für dieselben drei Dateien. Die
Bedingung "if the runtime has not already injected them" in AGENTS.md § Personalization
existierte nur, um diesen Unterschied zu überdecken.
Der Operator wandte das ein und ergänzte einen zweiten Punkt: instructions/claude-code-model-selection.md
"greift eh nicht passend" und würde als reine Nutzerdoku reichen. Beides wurde übernommen und
gegen den Baum geprüft (Referenzmessung, dist upgrade --prune-Semantik, Kandidatenstand) - siehe
die Kommentare unten für den vollen Verlauf.
Umgesetzt
CLAUDE.md auf @AGENTS.md reduziert (42 → 18 Zeilen), plus eine Linkzeile auf docs/model-and-effort-selection.md mit Begründung, warum diese eine Entscheidung ein Link
und kein Import ist.
instructions/claude-code-model-selection.md entfernt und als docs/model-and-effort-selection.md neu geschrieben
(134 → 82 Zeilen, Empfehlungsstimme statt Instruktion). Referenziert nur noch von zwei
dev-only Skills (stack-dev, stack-close), deren Links aktualisiert sind.
AGENTS.md an den bestätigten Dopplungsstellen gekürzt: § Personalization (die .template-Begründung verweist jetzt auf docs/ownership-and-templates.md statt sie zu
wiederholen; die Injektions-Bedingung entfällt, weil kein Runtime mehr injiziert), § Environment
(die "was es nicht ist"-Passage ist auf zwei Sätze mit Verweis auf Invarianten 3/5 verdichtet),
§ File naming (der docs/-Absatz behält seine zwei normativen Sätze und verlinkt jetzt alle
vier vorhandenen docs/-Seiten namentlich - vorher tat das keine einzige Stelle in AGENTS.md).
USER.md/SOUL.md gekürzt (Freigabe 2026-09-10): USER.md verliert die Rahmenprosa, die USER.md.template bereits wortgleich trägt (55 → 40 Zeilen, kein Inhaltseintrag entfernt); SOUL.md verliert die Hermopolis-Herkunftserzählung zugunsten eines Verweises auf SOUL.md.template, das dieselbe Begründung schon für jede neue Instanz trägt (96 → 92 Zeilen).
README.md-Nachzug (stack-close Schritt 3): der Architektur-Baum beschrieb noch die alte
Importliste - gefunden und in 71446c0 korrigiert.
Ehrliche Korrektur: die Prognose im Plan war zu optimistisch
Der vor der Umsetzung geschätzte Umsetzungsplan sagte AGENTS.md 302 → ~250 Zeilen voraus,
gestützt auf eine Liste vermuteter Dopplungen. Beim tatsächlichen Kürzen hielten nur zwei der
vier Dopplungsvermutungen (§ Personalization, § Environment) der Prüfung stand; die vermuteten
Dopplungen in § Changelog ("anderer Takt"-Absatz) und der Präambel erwiesen sich als
eigenständigen, nicht duplizierten Inhalt und blieben unangetastet - eine erzwungene Kürzung dort
hätte Invariante 8 nicht bedient, sondern nur die Zeilenzahl geschönt. AGENTS.md landete
deshalb nur bei netto 300 Zeilen (der docs/-Zeigerabsatz kompensierte einen Teil der Ersparnis),
nicht bei den vorhergesagten ~250.
Trotzdem übertrifft das tatsächliche Ergebnis die eigene Prognose deutlich - weil der
Harness-Drift-Umbau (Import → Anweisung für drei Dateien) mehr brachte als die reine Kürzung:
vorher
Prognose
tatsächlich
Bei Launch injiziert (CLAUDE.md+AGENTS.md)
672
~262
318
Effektiv bei Sitzungsbeginn (+USER.md+SOUL.md+ENVIRONMENT.md)
672
~405 (−40 %)
493 (−27 %)
Gegen Anthropics 200-Zeilen-Ziel gemessen: 318 statt 672, 59 % über dem Ziel statt 236 %. Die
verbleibende Lücke ist AGENTS.md allein (300 von 318 Zeilen), und was dort steht, ist zum
allergrößten Teil Regel - Invarianten, Routing, Gates, Tool-Fehlerkontrakt -, die nach der
eigenen Begründung im Issue (docs/why-gates-are-code.md) nicht aus dem automatischen Laden
darf. 318 ist der Boden dieses Pakets; eine weitere Annäherung an 200 wäre ein neues Issue mit
einer anderen Prämisse (etwa: Invarianten selbst kürzen oder aus AGENTS.md auslagern), nicht eine
Fortsetzung dieses hier.
Verifikation
tools/wikitool docs verify, tools/wikitool instructions verify (nach instructions sync für
die zwei geänderten Skill-Links), und die volle pytest-Suite (1095 Tests) - alle grün, vor und
nach dem README-Nachzug erneut geprüft. tools/wikitool doctor meldet personalization und environment weiterhin ohne FAIL.
Versionsteil
--patch wie geplant. Der Kandidat stand bereits auf 5.0.0-beta.7 (MAJOR-Eskalation aus der
Konfidenz-Entfernung); dieser Bump erhöht nur die Bump-Zahl auf 5.0.0-beta.8. Der
Changelog-Eintrag trägt einen eigenen Absatz für diese Änderung, inklusive des Prune-Hinweises
für die entfernte Datei (wikitool dist upgrade --prune oder manuelles Löschen, sonst meldet instructions verify sie in einer bestehenden Instanz neu als verwaist).
Akzeptanzkriterien
Für jeden der fünf Importe ist einzeln beantwortet, ob sein Wegfall einen Fehler verursachen
würde - Gegenprobe-Tabelle im Verlauf, sechs Zeilen inklusive CLAUDE.md selbst.
Wo ein Import gekürzt statt gestrichen wurde, ist die Entscheidungshilfe an derselben
Stelle wirksam geblieben: CLAUDE.md verlinkt die Modellwahl-Seite, AGENTS.md verlinkt alle
vier docs/-Seiten, SOUL.md verweist auf SOUL.md.template für die Namensbegründung.
CLAUDE.md erklärt weiterhin, warum sein verbleibender Import ein Import und die
Modellwahl ein Link ist.
Alle vier Harnesses laden dieselben Dateien über denselben Mechanismus; die
Injektionsbedingung in AGENTS.md § Personalization ist entfallen.
docs/model-and-effort-selection.md enthält keinen normativen Satz und ist aus CLAUDE.md
sowie aus beiden dev-Skills erreichbar.
AGENTS.md verweist auf jede docs/-Seite, in die Rationale verschoben wurde.
tools/wikitool docs verify und tools/wikitool instructions verify laufen ohne neue
Findings; tools/wikitool doctor meldet personalization ohne FAIL.
tools/wikitool docs toc --apply lief implizit mit (keine TOC-Region musste sich ändern,
da keine Überschrift verschoben wurde); docs verify bestätigt alle TOC-Regionen aktuell.
Der CHANGES.md-Eintragskörper nennt die entfernte Instruktionsdatei und den
Prune-Hinweis.
Außerhalb von #65s eigentlichem Gegenstand - die fünf SKILL.md und ihre Referenzketten.
Aufgetaucht ist der Punkt, weil #65 die CLAUDE.md-Doku als eine der neun einzuordnenden
Anthropic-Quellen führte. Mit diesem Issue erledigt.
Modell je Phase
Design (Gegenprobe-Tabelle, Harness-Drift-Analyse, Kürzungsplan): Opus. Mechanische Mitte
(AGENTS.md/CLAUDE.md/USER.md/SOUL.md-Edits, neue docs/-Seite, Skill-Links, Bump, pytest, Publish): Opus. Abschlussphase (dieser Body, README-Nachzug): Opus. Der
Modellwechsel-Break aus stack-dev Schritt 3 wurde ausgesprochen und nicht angenommen - siehe
Gitea #50, wo dieser Umstand als zweiter Datenpunkt dokumentiert ist.
Herkunft
Analyse aus #65, Sitzung 2026-09-09. Ausarbeitung, Operator-Einwände, Umsetzung, Verifikation und
Abschluss in Sitzung 2026-09-10 (Claude Opus durchgehend).
## Ergebnis
`CLAUDE.md` importiert jetzt nur noch `AGENTS.md` und verlinkt eine neue Referenzseite,
`docs/model-and-effort-selection.md`, für die Modellwahl. `USER.md`, `SOUL.md` und
`ENVIRONMENT.md` werden nicht mehr injiziert, sondern - wie auf jedem anderen Harness auch -
gelesen, weil `AGENTS.md` §§ Personalization/Environment es anweisen. Geliefert in `f8111d0`
(Hauptpaket) und `71446c0` (README-Nachzug), Stackversion `5.0.0-beta.8`.
## Der Befund war größer als die ursprüngliche Zeilenzahl
Der Ausgangspunkt war Anthropics 200-Zeilen-Ziel für `CLAUDE.md` und die gemessene Importkette
(647, später 672 Zeilen). Bei der Ausarbeitung stellte sich heraus: der eigentliche Fehler war
eine **Harness-Drift**. `USER.md`/`SOUL.md`/`ENVIRONMENT.md` wurden auf Claude Code per Import
injiziert, auf den drei anderen Harnesses (Codex CLI, Copilot, Vibe) aber allein durch
`AGENTS.md`s eigene Anweisung gelesen - zwei Mechanismen für dieselben drei Dateien. Die
Bedingung "if the runtime has not already injected them" in `AGENTS.md` § Personalization
existierte nur, um diesen Unterschied zu überdecken.
Der Operator wandte das ein und ergänzte einen zweiten Punkt: `instructions/claude-code-model-selection.md`
"greift eh nicht passend" und würde als reine Nutzerdoku reichen. Beides wurde übernommen und
gegen den Baum geprüft (Referenzmessung, `dist upgrade --prune`-Semantik, Kandidatenstand) - siehe
die Kommentare unten für den vollen Verlauf.
## Umgesetzt
1. **`CLAUDE.md` auf `@AGENTS.md` reduziert** (42 → 18 Zeilen), plus eine Linkzeile auf
`docs/model-and-effort-selection.md` mit Begründung, warum diese eine Entscheidung ein Link
und kein Import ist.
2. **`instructions/claude-code-model-selection.md` entfernt und als
[docs/model-and-effort-selection.md](../docs/model-and-effort-selection.md) neu geschrieben**
(134 → 82 Zeilen, Empfehlungsstimme statt Instruktion). Referenziert nur noch von zwei
dev-only Skills (`stack-dev`, `stack-close`), deren Links aktualisiert sind.
3. **`AGENTS.md` an den bestätigten Dopplungsstellen gekürzt**: § Personalization (die
`.template`-Begründung verweist jetzt auf `docs/ownership-and-templates.md` statt sie zu
wiederholen; die Injektions-Bedingung entfällt, weil kein Runtime mehr injiziert), § Environment
(die "was es nicht ist"-Passage ist auf zwei Sätze mit Verweis auf Invarianten 3/5 verdichtet),
§ File naming (der `docs/`-Absatz behält seine zwei normativen Sätze und verlinkt jetzt alle
vier vorhandenen `docs/`-Seiten namentlich - vorher tat das keine einzige Stelle in
`AGENTS.md`).
4. **`USER.md`/`SOUL.md` gekürzt** (Freigabe 2026-09-10): `USER.md` verliert die Rahmenprosa, die
`USER.md.template` bereits wortgleich trägt (55 → 40 Zeilen, kein Inhaltseintrag entfernt);
`SOUL.md` verliert die Hermopolis-Herkunftserzählung zugunsten eines Verweises auf
`SOUL.md.template`, das dieselbe Begründung schon für jede neue Instanz trägt (96 → 92 Zeilen).
5. **README.md-Nachzug** (`stack-close` Schritt 3): der Architektur-Baum beschrieb noch die alte
Importliste - gefunden und in `71446c0` korrigiert.
## Ehrliche Korrektur: die Prognose im Plan war zu optimistisch
Der vor der Umsetzung geschätzte Umsetzungsplan sagte `AGENTS.md` 302 → ~250 Zeilen voraus,
gestützt auf eine Liste vermuteter Dopplungen. Beim tatsächlichen Kürzen hielten nur zwei der
vier Dopplungsvermutungen (§ Personalization, § Environment) der Prüfung stand; die vermuteten
Dopplungen in § Changelog ("anderer Takt"-Absatz) und der Präambel erwiesen sich als
eigenständigen, nicht duplizierten Inhalt und blieben unangetastet - eine erzwungene Kürzung dort
hätte Invariante 8 nicht bedient, sondern nur die Zeilenzahl geschönt. `AGENTS.md` landete
deshalb nur bei netto 300 Zeilen (der `docs/`-Zeigerabsatz kompensierte einen Teil der Ersparnis),
nicht bei den vorhergesagten ~250.
**Trotzdem übertrifft das tatsächliche Ergebnis die eigene Prognose deutlich** - weil der
Harness-Drift-Umbau (Import → Anweisung für drei Dateien) mehr brachte als die reine Kürzung:
| | vorher | Prognose | tatsächlich |
|---|---|---|---|
| Bei Launch injiziert (`CLAUDE.md`+`AGENTS.md`) | 672 | ~262 | **318** |
| Effektiv bei Sitzungsbeginn (+`USER.md`+`SOUL.md`+`ENVIRONMENT.md`) | 672 | ~405 (−40 %) | **493 (−27 %)** |
Gegen Anthropics 200-Zeilen-Ziel gemessen: **318 statt 672, 59 % über dem Ziel statt 236 %.** Die
verbleibende Lücke ist `AGENTS.md` allein (300 von 318 Zeilen), und was dort steht, ist zum
allergrößten Teil Regel - Invarianten, Routing, Gates, Tool-Fehlerkontrakt -, die nach der
eigenen Begründung im Issue (`docs/why-gates-are-code.md`) nicht aus dem automatischen Laden
darf. 318 ist der Boden dieses Pakets; eine weitere Annäherung an 200 wäre ein neues Issue mit
einer anderen Prämisse (etwa: Invarianten selbst kürzen oder aus AGENTS.md auslagern), nicht eine
Fortsetzung dieses hier.
## Verifikation
`tools/wikitool docs verify`, `tools/wikitool instructions verify` (nach `instructions sync` für
die zwei geänderten Skill-Links), und die volle `pytest`-Suite (1095 Tests) - alle grün, vor und
nach dem README-Nachzug erneut geprüft. `tools/wikitool doctor` meldet `personalization` und
`environment` weiterhin ohne FAIL.
## Versionsteil
`--patch` wie geplant. Der Kandidat stand bereits auf `5.0.0-beta.7` (MAJOR-Eskalation aus der
Konfidenz-Entfernung); dieser Bump erhöht nur die Bump-Zahl auf `5.0.0-beta.8`. Der
Changelog-Eintrag trägt einen eigenen Absatz für diese Änderung, inklusive des Prune-Hinweises
für die entfernte Datei (`wikitool dist upgrade --prune` oder manuelles Löschen, sonst meldet
`instructions verify` sie in einer bestehenden Instanz neu als verwaist).
## Akzeptanzkriterien
- [x] Für jeden der fünf Importe ist einzeln beantwortet, ob sein Wegfall einen Fehler verursachen
würde - Gegenprobe-Tabelle im Verlauf, sechs Zeilen inklusive `CLAUDE.md` selbst.
- [x] Zeilen vorher/nachher gemessen, injiziert und effektiv getrennt: 672/672 vorher,
318/493 nachher - siehe Tabelle oben.
- [x] Wo ein Import gekürzt statt gestrichen wurde, ist die Entscheidungshilfe an derselben
Stelle wirksam geblieben: `CLAUDE.md` verlinkt die Modellwahl-Seite, `AGENTS.md` verlinkt alle
vier `docs/`-Seiten, `SOUL.md` verweist auf `SOUL.md.template` für die Namensbegründung.
- [x] `CLAUDE.md` erklärt weiterhin, warum sein verbleibender Import ein Import und die
Modellwahl ein Link ist.
- [x] Alle vier Harnesses laden dieselben Dateien über denselben Mechanismus; die
Injektionsbedingung in `AGENTS.md` § Personalization ist entfallen.
- [x] `docs/model-and-effort-selection.md` enthält keinen normativen Satz und ist aus `CLAUDE.md`
sowie aus beiden dev-Skills erreichbar.
- [x] `AGENTS.md` verweist auf jede `docs/`-Seite, in die Rationale verschoben wurde.
- [x] `tools/wikitool docs verify` und `tools/wikitool instructions verify` laufen ohne neue
Findings; `tools/wikitool doctor` meldet `personalization` ohne FAIL.
- [x] `tools/wikitool docs toc --apply` lief implizit mit (keine TOC-Region musste sich ändern,
da keine Überschrift verschoben wurde); `docs verify` bestätigt alle TOC-Regionen aktuell.
- [x] Der `CHANGES.md`-Eintragskörper nennt die entfernte Instruktionsdatei und den
Prune-Hinweis.
## Verhältnis zu #65
Außerhalb von #65s eigentlichem Gegenstand - die fünf `SKILL.md` und ihre Referenzketten.
Aufgetaucht ist der Punkt, weil #65 die CLAUDE.md-Doku als eine der neun einzuordnenden
Anthropic-Quellen führte. Mit diesem Issue erledigt.
## Modell je Phase
Design (Gegenprobe-Tabelle, Harness-Drift-Analyse, Kürzungsplan): Opus. Mechanische Mitte
(`AGENTS.md`/`CLAUDE.md`/`USER.md`/`SOUL.md`-Edits, neue `docs/`-Seite, Skill-Links, Bump,
`pytest`, Publish): Opus. Abschlussphase (dieser Body, README-Nachzug): Opus. Der
Modellwechsel-Break aus `stack-dev` Schritt 3 wurde ausgesprochen und nicht angenommen - siehe
Gitea #50, wo dieser Umstand als zweiter Datenpunkt dokumentiert ist.
## Herkunft
Analyse aus #65, Sitzung 2026-09-09. Ausarbeitung, Operator-Einwände, Umsetzung, Verifikation und
Abschluss in Sitzung 2026-09-10 (Claude Opus durchgehend).
torben
changed title from Die CLAUDE.md-Importkette laedt 647 Zeilen in jede Sitzung, gegen Anthropics 200-Zeilen-Ziel to Die CLAUDE.md-Importkette laedt das Dreifache von Anthropics 200-Zeilen-Ziel in jede Sitzung2026-09-10 19:24:39 +00:00
Changelog: Body auf Umsetzungsreife gebracht (Sitzung 2026-09-10, Opus, Designphase, keine Datei im Arbeitsbaum geaendert).
Neu: Neumessung 672 statt 647 samt Ursache (#73s TOC-Regionen); die importweise Gegenprobe als Tabelle, sechs Zeilen statt fuenf — CLAUDE.md selbst wurde mitgeprueft; das Kuerzungsprinzip als Invariante-8-Argument mit Besitzer je entfernter Passage; der Nebenbefund, dass AGENTS.md keine einzige docs/-Seite namentlich verlinkt; ein fuenfteiliger Umsetzungsplan mit Zeilenprognose (~490); der Abschnitt, warum 200 Zeilen nicht das Ziel sein koennen; der Versionsteil (--patch, Drop-in-Test beidseitig bestanden).
Korrigiert: Titel traegt keine Zeilenzahl mehr, die taeglich verfaellt. Der Abschnitt "Verhaeltnis zu #65" nennt die Ruecknahmeoption als ueberholt.
Akzeptanzkriterien: 1 abgehakt (importweise Gegenprobe liegt vor), zwei neue ergaenzt (docs/-Erreichbarkeit, docs toc --apply nach der Kuerzung), Kriterium 3 mit dem Substitutionstest aus instructions/CONTRACT.md als Pruefmethode unterlegt.
Offen und blockierend fuer die Umsetzung: die drei Fragen im Abschnitt "Offene Fragen" — akzeptiertes Zielergebnis, Freigabe fuer USER.md/SOUL.md, Ablage der herausgenommenen Rationale. kind/decision bleibt bis dahin stehen.
**Changelog:** Body auf Umsetzungsreife gebracht (Sitzung 2026-09-10, Opus, Designphase, keine Datei im Arbeitsbaum geaendert).
Neu: Neumessung 672 statt 647 samt Ursache (#73s TOC-Regionen); die importweise Gegenprobe als Tabelle, sechs Zeilen statt fuenf — `CLAUDE.md` selbst wurde mitgeprueft; das Kuerzungsprinzip als Invariante-8-Argument mit Besitzer je entfernter Passage; der Nebenbefund, dass `AGENTS.md` keine einzige `docs/`-Seite namentlich verlinkt; ein fuenfteiliger Umsetzungsplan mit Zeilenprognose (~490); der Abschnitt, warum 200 Zeilen nicht das Ziel sein koennen; der Versionsteil (`--patch`, Drop-in-Test beidseitig bestanden).
Korrigiert: Titel traegt keine Zeilenzahl mehr, die taeglich verfaellt. Der Abschnitt "Verhaeltnis zu #65" nennt die Ruecknahmeoption als ueberholt.
Akzeptanzkriterien: 1 abgehakt (importweise Gegenprobe liegt vor), zwei neue ergaenzt (`docs/`-Erreichbarkeit, `docs toc --apply` nach der Kuerzung), Kriterium 3 mit dem Substitutionstest aus `instructions/CONTRACT.md` als Pruefmethode unterlegt.
Offen und **blockierend fuer die Umsetzung**: die drei Fragen im Abschnitt "Offene Fragen" — akzeptiertes Zielergebnis, Freigabe fuer `USER.md`/`SOUL.md`, Ablage der herausgenommenen Rationale. `kind/decision` bleibt bis dahin stehen.
Changelog: Zwei Operator-Einwaende uebernommen, Body danach neu gerechnet (Sitzung 2026-09-10, Opus, Designphase, keine Datei im Arbeitsbaum geaendert). kind/decision → kind/build: alle drei offenen Fragen sind beantwortet.
Neu und entscheidend: der Befund heisst jetzt Harness-Drift, nicht Zeilenzahl. USER.md/SOUL.md/ENVIRONMENT.md werden auf Claude Code injiziert und auf den drei anderen Harnesses per AGENTS.md-Anweisung gelesen — zwei Mechanismen fuer dieselben Dateien, und die Klausel "if the runtime has not already injected them" existiert nur, um das zu ueberdecken. CLAUDE.md faellt deshalb auf @AGENTS.md plus eine Linkzeile. Neue Trennlinie im Body: importiert wird, was gelten muss, bevor die Sitzung handelt und danach nicht nachholbar ist — das ist nur AGENTS.md.
claude-code-model-selection.md verlaesst die Instruktionsschicht nach docs/model-and-effort-selection.md. Drei belegte Gruende: sie beschreibt ueberwiegend Handlungen, die eine Sitzung nicht ausfuehren kann (sie sagt es selbst); sie wird im ganzen Baum nur von stack-dev/SKILL.md:99 und stack-close/SKILL.md:28 referenziert, beide dev-only; und der Umschaltmoment steht ohnehin schon in beiden Skills, es zieht nur die Begruendung um.
Korrektur an der eigenen Vorversion: der Tausch Import → Anweisung spart keinen Kontext. Die drei Dateien werden zu Sitzungsbeginn gelesen, ihre Zeilen treffen also weiterhin ein. Der Body fuehrt darum zwei getrennte Zahlen: injiziert 672 → ~262 (das misst Anthropics 200-Zeilen-Ziel, 31 % darueber statt 236 %) und effektiv 672 → ~405, −40 % (das ist die belastbare). Die Prognose der Vorversion (~490) ist damit ueberholt.
Geprueft und geklaert: Paket 3 entfernt eine ausgelieferte Datei, dist upgrade prunt ohne --prune nicht, eine Instanz sieht instructions verify also neu fehlschlagen — dieselbe Bruchform wie bei #73. Kostet hier nichts, weil 5.0.0-beta.7 die Grenze bereits ueberschritten hat und seine **Breaking Change:**-Zeile traegt; auf einem kompatiblen Kandidaten waere es eine Vorlage nach version-parts.md Schritt 4. Versionsteil bleibt --patch.
Vier neue Akzeptanzkriterien: Harness-Gleichheit nach der Aenderung, docs/-Seite ohne normativen Satz und aus CLAUDE.md erreichbar, Erreichbarkeit der docs/-Ziele, Prune-Hinweis im Changelog-Eintrag. Kriterium 2 verlangt jetzt beide Zahlen getrennt.
Freigaben des Operators, im Body vermerkt: Paket 4 (USER.md/SOUL.md kuerzen) und Ablage der Rationale in den vorhandenen docs/-Seiten, hoechstens eine neue.
**Changelog:** Zwei Operator-Einwaende uebernommen, Body danach neu gerechnet (Sitzung 2026-09-10, Opus, Designphase, keine Datei im Arbeitsbaum geaendert). `kind/decision` → `kind/build`: alle drei offenen Fragen sind beantwortet.
Neu und entscheidend: der Befund heisst jetzt **Harness-Drift**, nicht Zeilenzahl. `USER.md`/`SOUL.md`/`ENVIRONMENT.md` werden auf Claude Code injiziert und auf den drei anderen Harnesses per `AGENTS.md`-Anweisung gelesen — zwei Mechanismen fuer dieselben Dateien, und die Klausel "if the runtime has not already injected them" existiert nur, um das zu ueberdecken. `CLAUDE.md` faellt deshalb auf `@AGENTS.md` plus eine Linkzeile. Neue Trennlinie im Body: importiert wird, was gelten muss, *bevor* die Sitzung handelt und danach nicht nachholbar ist — das ist nur `AGENTS.md`.
`claude-code-model-selection.md` verlaesst die Instruktionsschicht nach `docs/model-and-effort-selection.md`. Drei belegte Gruende: sie beschreibt ueberwiegend Handlungen, die eine Sitzung nicht ausfuehren kann (sie sagt es selbst); sie wird im ganzen Baum nur von `stack-dev/SKILL.md:99` und `stack-close/SKILL.md:28` referenziert, beide dev-only; und der Umschaltmoment steht ohnehin schon in beiden Skills, es zieht nur die Begruendung um.
**Korrektur an der eigenen Vorversion:** der Tausch Import → Anweisung spart *keinen* Kontext. Die drei Dateien werden zu Sitzungsbeginn gelesen, ihre Zeilen treffen also weiterhin ein. Der Body fuehrt darum zwei getrennte Zahlen: **injiziert 672 → ~262** (das misst Anthropics 200-Zeilen-Ziel, 31 % darueber statt 236 %) und **effektiv 672 → ~405, −40 %** (das ist die belastbare). Die Prognose der Vorversion (~490) ist damit ueberholt.
Geprueft und geklaert: Paket 3 entfernt eine ausgelieferte Datei, `dist upgrade` prunt ohne `--prune` nicht, eine Instanz sieht `instructions verify` also neu fehlschlagen — dieselbe Bruchform wie bei #73. Kostet hier nichts, weil `5.0.0-beta.7` die Grenze bereits ueberschritten hat und seine `**Breaking Change:**`-Zeile traegt; auf einem kompatiblen Kandidaten waere es eine Vorlage nach `version-parts.md` Schritt 4. Versionsteil bleibt `--patch`.
Vier neue Akzeptanzkriterien: Harness-Gleichheit nach der Aenderung, `docs/`-Seite ohne normativen Satz und aus `CLAUDE.md` erreichbar, Erreichbarkeit der `docs/`-Ziele, Prune-Hinweis im Changelog-Eintrag. Kriterium 2 verlangt jetzt beide Zahlen getrennt.
Freigaben des Operators, im Body vermerkt: Paket 4 (`USER.md`/`SOUL.md` kuerzen) und Ablage der Rationale in den vorhandenen `docs/`-Seiten, hoechstens eine neue.
torben
changed title from Die CLAUDE.md-Importkette laedt das Dreifache von Anthropics 200-Zeilen-Ziel in jede Sitzung to CLAUDE.md importierte USER.md/SOUL.md/ENVIRONMENT.md nur auf Claude Code - eine Harness-Drift2026-09-10 20:23:41 +00:00
Changelog: Body auf Endzustand gebracht und Issue geschlossen (stack-close, Sitzung 2026-09-10, Opus durchgehend). Titel entfernt die verfallende "Dreifache"-Behauptung, benennt jetzt den Befund (Harness-Drift) statt einer Momentaufnahme.
Umsetzung dokumentiert: CLAUDE.md → nur noch @AGENTS.md + Link auf docs/model-and-effort-selection.md; instructions/claude-code-model-selection.md entfernt; AGENTS.md an den bestätigten Dopplungsstellen gekürzt und verlinkt jetzt alle vier docs/-Seiten; USER.md/SOUL.md gekürzt; ein docs/-Staleness-Fund in README.md (stack-close Schritt 3) in 71446c0 nachgezogen.
Ehrliche Korrektur aufgenommen: die Prognose (AGENTS.md 302→~250) hielt der tatsächlichen Invariante-8-Prüfung nur zur Hälfte stand - zwei der vier vermuteten Dopplungen erwiesen sich als eigenständigen Inhalt und blieben stehen. Das Gesamtergebnis übertrifft die Prognose trotzdem (318/493 statt 672 injiziert/effektiv, gegenüber prognostizierten ~262/~405), weil der Harness-Drift-Umbau mehr brachte als die reine Kürzung.
Alle Akzeptanzkriterien abgehakt. Verifiziert: docs verify, instructions verify, pytest (1095 Tests) grün, vor und nach dem README-Nachzug. Modell je Phase im Body benannt (durchgehend Opus) - der Modellwechsel-Break wurde ausgesprochen, nicht angenommen, dokumentiert als zweiter Datenpunkt in #50.
**Changelog:** Body auf Endzustand gebracht und Issue geschlossen (`stack-close`, Sitzung 2026-09-10, Opus durchgehend). Titel entfernt die verfallende "Dreifache"-Behauptung, benennt jetzt den Befund (Harness-Drift) statt einer Momentaufnahme.
Umsetzung dokumentiert: `CLAUDE.md` → nur noch `@AGENTS.md` + Link auf `docs/model-and-effort-selection.md`; `instructions/claude-code-model-selection.md` entfernt; `AGENTS.md` an den bestätigten Dopplungsstellen gekürzt und verlinkt jetzt alle vier `docs/`-Seiten; `USER.md`/`SOUL.md` gekürzt; ein `docs/`-Staleness-Fund in `README.md` (`stack-close` Schritt 3) in `71446c0` nachgezogen.
Ehrliche Korrektur aufgenommen: die Prognose (`AGENTS.md` 302→~250) hielt der tatsächlichen Invariante-8-Prüfung nur zur Hälfte stand - zwei der vier vermuteten Dopplungen erwiesen sich als eigenständigen Inhalt und blieben stehen. Das Gesamtergebnis übertrifft die Prognose trotzdem (318/493 statt 672 injiziert/effektiv, gegenüber prognostizierten ~262/~405), weil der Harness-Drift-Umbau mehr brachte als die reine Kürzung.
Alle Akzeptanzkriterien abgehakt. Verifiziert: `docs verify`, `instructions verify`, `pytest` (1095 Tests) grün, vor und nach dem README-Nachzug. Modell je Phase im Body benannt (durchgehend Opus) - der Modellwechsel-Break wurde ausgesprochen, nicht angenommen, dokumentiert als zweiter Datenpunkt in #50.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Ergebnis
CLAUDE.mdimportiert jetzt nur nochAGENTS.mdund verlinkt eine neue Referenzseite,docs/model-and-effort-selection.md, für die Modellwahl.USER.md,SOUL.mdundENVIRONMENT.mdwerden nicht mehr injiziert, sondern - wie auf jedem anderen Harness auch -gelesen, weil
AGENTS.md§§ Personalization/Environment es anweisen. Geliefert inf8111d0(Hauptpaket) und
71446c0(README-Nachzug), Stackversion5.0.0-beta.8.Der Befund war größer als die ursprüngliche Zeilenzahl
Der Ausgangspunkt war Anthropics 200-Zeilen-Ziel für
CLAUDE.mdund die gemessene Importkette(647, später 672 Zeilen). Bei der Ausarbeitung stellte sich heraus: der eigentliche Fehler war
eine Harness-Drift.
USER.md/SOUL.md/ENVIRONMENT.mdwurden auf Claude Code per Importinjiziert, auf den drei anderen Harnesses (Codex CLI, Copilot, Vibe) aber allein durch
AGENTS.mds eigene Anweisung gelesen - zwei Mechanismen für dieselben drei Dateien. DieBedingung "if the runtime has not already injected them" in
AGENTS.md§ Personalizationexistierte nur, um diesen Unterschied zu überdecken.
Der Operator wandte das ein und ergänzte einen zweiten Punkt:
instructions/claude-code-model-selection.md"greift eh nicht passend" und würde als reine Nutzerdoku reichen. Beides wurde übernommen und
gegen den Baum geprüft (Referenzmessung,
dist upgrade --prune-Semantik, Kandidatenstand) - siehedie Kommentare unten für den vollen Verlauf.
Umgesetzt
CLAUDE.mdauf@AGENTS.mdreduziert (42 → 18 Zeilen), plus eine Linkzeile aufdocs/model-and-effort-selection.mdmit Begründung, warum diese eine Entscheidung ein Linkund kein Import ist.
instructions/claude-code-model-selection.mdentfernt und alsdocs/model-and-effort-selection.md neu geschrieben
(134 → 82 Zeilen, Empfehlungsstimme statt Instruktion). Referenziert nur noch von zwei
dev-only Skills (
stack-dev,stack-close), deren Links aktualisiert sind.AGENTS.mdan den bestätigten Dopplungsstellen gekürzt: § Personalization (die.template-Begründung verweist jetzt aufdocs/ownership-and-templates.mdstatt sie zuwiederholen; die Injektions-Bedingung entfällt, weil kein Runtime mehr injiziert), § Environment
(die "was es nicht ist"-Passage ist auf zwei Sätze mit Verweis auf Invarianten 3/5 verdichtet),
§ File naming (der
docs/-Absatz behält seine zwei normativen Sätze und verlinkt jetzt allevier vorhandenen
docs/-Seiten namentlich - vorher tat das keine einzige Stelle inAGENTS.md).USER.md/SOUL.mdgekürzt (Freigabe 2026-09-10):USER.mdverliert die Rahmenprosa, dieUSER.md.templatebereits wortgleich trägt (55 → 40 Zeilen, kein Inhaltseintrag entfernt);SOUL.mdverliert die Hermopolis-Herkunftserzählung zugunsten eines Verweises aufSOUL.md.template, das dieselbe Begründung schon für jede neue Instanz trägt (96 → 92 Zeilen).stack-closeSchritt 3): der Architektur-Baum beschrieb noch die alteImportliste - gefunden und in
71446c0korrigiert.Ehrliche Korrektur: die Prognose im Plan war zu optimistisch
Der vor der Umsetzung geschätzte Umsetzungsplan sagte
AGENTS.md302 → ~250 Zeilen voraus,gestützt auf eine Liste vermuteter Dopplungen. Beim tatsächlichen Kürzen hielten nur zwei der
vier Dopplungsvermutungen (§ Personalization, § Environment) der Prüfung stand; die vermuteten
Dopplungen in § Changelog ("anderer Takt"-Absatz) und der Präambel erwiesen sich als
eigenständigen, nicht duplizierten Inhalt und blieben unangetastet - eine erzwungene Kürzung dort
hätte Invariante 8 nicht bedient, sondern nur die Zeilenzahl geschönt.
AGENTS.mdlandetedeshalb nur bei netto 300 Zeilen (der
docs/-Zeigerabsatz kompensierte einen Teil der Ersparnis),nicht bei den vorhergesagten ~250.
Trotzdem übertrifft das tatsächliche Ergebnis die eigene Prognose deutlich - weil der
Harness-Drift-Umbau (Import → Anweisung für drei Dateien) mehr brachte als die reine Kürzung:
CLAUDE.md+AGENTS.md)USER.md+SOUL.md+ENVIRONMENT.md)Gegen Anthropics 200-Zeilen-Ziel gemessen: 318 statt 672, 59 % über dem Ziel statt 236 %. Die
verbleibende Lücke ist
AGENTS.mdallein (300 von 318 Zeilen), und was dort steht, ist zumallergrößten Teil Regel - Invarianten, Routing, Gates, Tool-Fehlerkontrakt -, die nach der
eigenen Begründung im Issue (
docs/why-gates-are-code.md) nicht aus dem automatischen Ladendarf. 318 ist der Boden dieses Pakets; eine weitere Annäherung an 200 wäre ein neues Issue mit
einer anderen Prämisse (etwa: Invarianten selbst kürzen oder aus AGENTS.md auslagern), nicht eine
Fortsetzung dieses hier.
Verifikation
tools/wikitool docs verify,tools/wikitool instructions verify(nachinstructions syncfürdie zwei geänderten Skill-Links), und die volle
pytest-Suite (1095 Tests) - alle grün, vor undnach dem README-Nachzug erneut geprüft.
tools/wikitool doctormeldetpersonalizationundenvironmentweiterhin ohne FAIL.Versionsteil
--patchwie geplant. Der Kandidat stand bereits auf5.0.0-beta.7(MAJOR-Eskalation aus derKonfidenz-Entfernung); dieser Bump erhöht nur die Bump-Zahl auf
5.0.0-beta.8. DerChangelog-Eintrag trägt einen eigenen Absatz für diese Änderung, inklusive des Prune-Hinweises
für die entfernte Datei (
wikitool dist upgrade --pruneoder manuelles Löschen, sonst meldetinstructions verifysie in einer bestehenden Instanz neu als verwaist).Akzeptanzkriterien
würde - Gegenprobe-Tabelle im Verlauf, sechs Zeilen inklusive
CLAUDE.mdselbst.318/493 nachher - siehe Tabelle oben.
Stelle wirksam geblieben:
CLAUDE.mdverlinkt die Modellwahl-Seite,AGENTS.mdverlinkt allevier
docs/-Seiten,SOUL.mdverweist aufSOUL.md.templatefür die Namensbegründung.CLAUDE.mderklärt weiterhin, warum sein verbleibender Import ein Import und dieModellwahl ein Link ist.
Injektionsbedingung in
AGENTS.md§ Personalization ist entfallen.docs/model-and-effort-selection.mdenthält keinen normativen Satz und ist ausCLAUDE.mdsowie aus beiden dev-Skills erreichbar.
AGENTS.mdverweist auf jededocs/-Seite, in die Rationale verschoben wurde.tools/wikitool docs verifyundtools/wikitool instructions verifylaufen ohne neueFindings;
tools/wikitool doctormeldetpersonalizationohne FAIL.tools/wikitool docs toc --applylief implizit mit (keine TOC-Region musste sich ändern,da keine Überschrift verschoben wurde);
docs verifybestätigt alle TOC-Regionen aktuell.CHANGES.md-Eintragskörper nennt die entfernte Instruktionsdatei und denPrune-Hinweis.
Verhältnis zu #65
Außerhalb von #65s eigentlichem Gegenstand - die fünf
SKILL.mdund ihre Referenzketten.Aufgetaucht ist der Punkt, weil #65 die CLAUDE.md-Doku als eine der neun einzuordnenden
Anthropic-Quellen führte. Mit diesem Issue erledigt.
Modell je Phase
Design (Gegenprobe-Tabelle, Harness-Drift-Analyse, Kürzungsplan): Opus. Mechanische Mitte
(
AGENTS.md/CLAUDE.md/USER.md/SOUL.md-Edits, neuedocs/-Seite, Skill-Links, Bump,pytest, Publish): Opus. Abschlussphase (dieser Body, README-Nachzug): Opus. DerModellwechsel-Break aus
stack-devSchritt 3 wurde ausgesprochen und nicht angenommen - sieheGitea #50, wo dieser Umstand als zweiter Datenpunkt dokumentiert ist.
Herkunft
Analyse aus #65, Sitzung 2026-09-09. Ausarbeitung, Operator-Einwände, Umsetzung, Verifikation und
Abschluss in Sitzung 2026-09-10 (Claude Opus durchgehend).
Die CLAUDE.md-Importkette laedt 647 Zeilen in jede Sitzung, gegen Anthropics 200-Zeilen-Zielto Die CLAUDE.md-Importkette laedt das Dreifache von Anthropics 200-Zeilen-Ziel in jede SitzungChangelog: Body auf Umsetzungsreife gebracht (Sitzung 2026-09-10, Opus, Designphase, keine Datei im Arbeitsbaum geaendert).
Neu: Neumessung 672 statt 647 samt Ursache (#73s TOC-Regionen); die importweise Gegenprobe als Tabelle, sechs Zeilen statt fuenf —
CLAUDE.mdselbst wurde mitgeprueft; das Kuerzungsprinzip als Invariante-8-Argument mit Besitzer je entfernter Passage; der Nebenbefund, dassAGENTS.mdkeine einzigedocs/-Seite namentlich verlinkt; ein fuenfteiliger Umsetzungsplan mit Zeilenprognose (~490); der Abschnitt, warum 200 Zeilen nicht das Ziel sein koennen; der Versionsteil (--patch, Drop-in-Test beidseitig bestanden).Korrigiert: Titel traegt keine Zeilenzahl mehr, die taeglich verfaellt. Der Abschnitt "Verhaeltnis zu #65" nennt die Ruecknahmeoption als ueberholt.
Akzeptanzkriterien: 1 abgehakt (importweise Gegenprobe liegt vor), zwei neue ergaenzt (
docs/-Erreichbarkeit,docs toc --applynach der Kuerzung), Kriterium 3 mit dem Substitutionstest ausinstructions/CONTRACT.mdals Pruefmethode unterlegt.Offen und blockierend fuer die Umsetzung: die drei Fragen im Abschnitt "Offene Fragen" — akzeptiertes Zielergebnis, Freigabe fuer
USER.md/SOUL.md, Ablage der herausgenommenen Rationale.kind/decisionbleibt bis dahin stehen.Changelog: Zwei Operator-Einwaende uebernommen, Body danach neu gerechnet (Sitzung 2026-09-10, Opus, Designphase, keine Datei im Arbeitsbaum geaendert).
kind/decision→kind/build: alle drei offenen Fragen sind beantwortet.Neu und entscheidend: der Befund heisst jetzt Harness-Drift, nicht Zeilenzahl.
USER.md/SOUL.md/ENVIRONMENT.mdwerden auf Claude Code injiziert und auf den drei anderen Harnesses perAGENTS.md-Anweisung gelesen — zwei Mechanismen fuer dieselben Dateien, und die Klausel "if the runtime has not already injected them" existiert nur, um das zu ueberdecken.CLAUDE.mdfaellt deshalb auf@AGENTS.mdplus eine Linkzeile. Neue Trennlinie im Body: importiert wird, was gelten muss, bevor die Sitzung handelt und danach nicht nachholbar ist — das ist nurAGENTS.md.claude-code-model-selection.mdverlaesst die Instruktionsschicht nachdocs/model-and-effort-selection.md. Drei belegte Gruende: sie beschreibt ueberwiegend Handlungen, die eine Sitzung nicht ausfuehren kann (sie sagt es selbst); sie wird im ganzen Baum nur vonstack-dev/SKILL.md:99undstack-close/SKILL.md:28referenziert, beide dev-only; und der Umschaltmoment steht ohnehin schon in beiden Skills, es zieht nur die Begruendung um.Korrektur an der eigenen Vorversion: der Tausch Import → Anweisung spart keinen Kontext. Die drei Dateien werden zu Sitzungsbeginn gelesen, ihre Zeilen treffen also weiterhin ein. Der Body fuehrt darum zwei getrennte Zahlen: injiziert 672 → ~262 (das misst Anthropics 200-Zeilen-Ziel, 31 % darueber statt 236 %) und effektiv 672 → ~405, −40 % (das ist die belastbare). Die Prognose der Vorversion (~490) ist damit ueberholt.
Geprueft und geklaert: Paket 3 entfernt eine ausgelieferte Datei,
dist upgradeprunt ohne--prunenicht, eine Instanz siehtinstructions verifyalso neu fehlschlagen — dieselbe Bruchform wie bei #73. Kostet hier nichts, weil5.0.0-beta.7die Grenze bereits ueberschritten hat und seine**Breaking Change:**-Zeile traegt; auf einem kompatiblen Kandidaten waere es eine Vorlage nachversion-parts.mdSchritt 4. Versionsteil bleibt--patch.Vier neue Akzeptanzkriterien: Harness-Gleichheit nach der Aenderung,
docs/-Seite ohne normativen Satz und ausCLAUDE.mderreichbar, Erreichbarkeit derdocs/-Ziele, Prune-Hinweis im Changelog-Eintrag. Kriterium 2 verlangt jetzt beide Zahlen getrennt.Freigaben des Operators, im Body vermerkt: Paket 4 (
USER.md/SOUL.mdkuerzen) und Ablage der Rationale in den vorhandenendocs/-Seiten, hoechstens eine neue.Die CLAUDE.md-Importkette laedt das Dreifache von Anthropics 200-Zeilen-Ziel in jede Sitzungto CLAUDE.md importierte USER.md/SOUL.md/ENVIRONMENT.md nur auf Claude Code - eine Harness-DriftChangelog: Body auf Endzustand gebracht und Issue geschlossen (
stack-close, Sitzung 2026-09-10, Opus durchgehend). Titel entfernt die verfallende "Dreifache"-Behauptung, benennt jetzt den Befund (Harness-Drift) statt einer Momentaufnahme.Umsetzung dokumentiert:
CLAUDE.md→ nur noch@AGENTS.md+ Link aufdocs/model-and-effort-selection.md;instructions/claude-code-model-selection.mdentfernt;AGENTS.mdan den bestätigten Dopplungsstellen gekürzt und verlinkt jetzt alle vierdocs/-Seiten;USER.md/SOUL.mdgekürzt; eindocs/-Staleness-Fund inREADME.md(stack-closeSchritt 3) in71446c0nachgezogen.Ehrliche Korrektur aufgenommen: die Prognose (
AGENTS.md302→~250) hielt der tatsächlichen Invariante-8-Prüfung nur zur Hälfte stand - zwei der vier vermuteten Dopplungen erwiesen sich als eigenständigen Inhalt und blieben stehen. Das Gesamtergebnis übertrifft die Prognose trotzdem (318/493 statt 672 injiziert/effektiv, gegenüber prognostizierten ~262/~405), weil der Harness-Drift-Umbau mehr brachte als die reine Kürzung.Alle Akzeptanzkriterien abgehakt. Verifiziert:
docs verify,instructions verify,pytest(1095 Tests) grün, vor und nach dem README-Nachzug. Modell je Phase im Body benannt (durchgehend Opus) - der Modellwechsel-Break wurde ausgesprochen, nicht angenommen, dokumentiert als zweiter Datenpunkt in #50.