CLAUDE.md importierte USER.md/SOUL.md/ENVIRONMENT.md nur auf Claude Code - eine Harness-Drift #81
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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.