Upgrade-Pfad hat keine agentengerichtete Prozedur: instructions/upgrade-instance.md (manual: true) #108
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?
Erledigt mit
504149c, Version6.1.0-beta.1. Was gebaut wurde und was bewusst offen bleibt,steht unten.
Das Problem, das es gab
Der Upgrade-Pfad einer ausgelieferten Instanz stand nur in INSTALL.md § "Eine Instanz
aktualisieren" - einem Dokument fuer Menschen.
AGENTS.md§ File naming fuehrt dieREADME-foermigen Wurzeldateien ausdruecklich als "never by an agent as instruction". Ausgefuehrt
wurde der Upgrade aber von einem Agenten, jedes Mal.
Beleg aus dem Lauf in #107 (Sitzung
671c1b9a, Prompt woertlich: "aktualisiere den stack aufdie letzte version."): der erste Tool-Call des Laufs listete
instructions/mit - der Agentsuchte zuerst eine Instruktion. Er fand keine, oeffnete
instructions/private-instance.md(derfalsche Weg: Clone mit gemeinsamer History statt Tarball-Instanz), verwarf sie und griff auf
INSTALL.md zurueck. Drei Folgen im selben Lauf:
migrate verify --from <commit vor dem Tausch>- INSTALL.md Schritt 6, erster Pruefschritt -lief in 33 Werkzeugaufrufen kein einziges Mal.
AGENTS.mdim selben Commit +44/-3 bekommenhatte; die optionale Migration lief anschliessend unter dem alten Kontrollplan.
dist upgrade, und die tatsaechlich gelaufene. Der Lauf folgte der zweiten, was die erste zutoter Doku machte. Genau der Zustand, den Invariante 8 verbietet.
Was gebaut wurde
instructions/upgrade-instance.md,manual: true- dreizehn Schritte von der Sitzungs-Id biszum zweiten Publish. Die Tier-Wahl ist die aus
instructions/CONTRACT.md§ "Two forms, threereference tiers": ein Skill wuerde seine
descriptionfuer eine Prozedur, die einmal pro Releaselaeuft, in jede Sitzung legen; ein Linked-Tier waere ein Angebot, einen 69-Dateien-Lauf beilaeufig
aufzugreifen. Manual braucht keine Referenz und verbietet nur Links aus AGENTS.md/CLAUDE.md/einem
Skill - Erwaehnungen in
tools/CONTRACT.mdund INSTALL.md sind zulaessig.Entschieden und umgesetzt, was der Entwurf offengelassen hatte:
nicht ans Ende, wie beide alten Reihenfolgen es sagten. Dort faengt der neue Kontrollplan an zu
gelten, und genau dort hat der beobachtete Lauf ihn nicht gehabt.
migrate statusist derWiedereinstiegspunkt der neuen Sitzung, weil es zustandsbehaftet ist und keine Uebergabe
braucht.
benennt statt vermeidet (
.wikitool-kb.json), und er haelt einen 200-Dateien-Tausch ausdemselben Commit wie eine Inhaltsumschreibung heraus.
dist upgrade, der statt einer eigenenSchrittliste die Datei nennt und das Kommando, bei dem der Lauf weitergeht
(
instructions sync) - ein Zeiger statt einer dritten Kopie. Der Bericht nennt bewusst keineSchrittnummer: die wandert, der Kommandoname nicht.
Zwei Schritte sagen ausdruecklich, dass sie eine Werkzeugluecke umgehen, und was sie ueberfluessig
macht - in Worten, ohne Issue-Nummer, weil die Datei ausgeliefert wird:
version notes( Upgrade-Lauf 5.0.0 -> 6.0.0 auf ausgelieferter Instanz: Laufbericht, Telemetrie, sieben Befunde (#107)Befund 2).
Befund 3) - und der noetige Commit geht ueber
publish --no-push, nicht uebergit commit.Das ist im Review nachgetragen worden: der beobachtete Lauf hat fuer die Handreparatur
(
7fe8353) ein rohesgit commitabgesetzt und damit Invariante 5 verletzt, um dieSauberkeits-Vorbedingung des naechsten Kommandos herzustellen. Eine Werkzeugluecke hat dort eine
in Code gegossene Regel gebrochen, und nichts hat es gemeldet.
Mitgenommen, ausserhalb des urspruenglichen Schnitts:
instructions/session-setup.mdsagt jetzt, dass einexportnur traegt, solange die Shelltraegt, nennt die Inline-Form pro Aufruf und den Einzeiler, mit dem sich beantworten laesst,
welcher Fall vorliegt. Das gehoerte dorthin und nicht in die neue Instruktion (Invariante 8) und
hakt zugleich ein Akzeptanzkriterium aus #107 Befund 1 ab.
version notesdazu, dass der Befehl nur dortantwortet, wo eine gefuellte
CHANGES.mdliegt. Das nimmt der Entscheidung in #107 Befund 2(Feed-Fallback vs. Doku) nichts vorweg, beendet aber einen falschen Satz in einem Dokument, das
in derselben Sitzung ohnehin umgebaut wurde.
Akzeptanzkriterien
instructions/upgrade-instance.mdexistiert mitmanual: true;tools/wikitool instructions verifygruen (23 Instruktionen, 7 Skills, 14 publizierteKopien deckungsgleich) - also kein Link aus AGENTS.md, CLAUDE.md oder einem Skill.
tools/wikitool docs verifygruen, einschliesslichcheck_no_issue_referencesueber 73ausgelieferte Dokumente und Linkaufloesung ueber 58 Referenzdateien.
1 bis 6 sind weg, geblieben ist die Entscheidung davor und ein Verweis.
Mit einer benannten Ausnahme, die das Kriterium woertlich nicht erfuellt und die so
gewollt ist: der Block zum ersten Sprung auf
4.5.0nenntdist upgrade --dry-run, das dieInstruktion ebenfalls nennt. Er steht dort, weil in einer Instanz vor
4.5.0weder dasKommando noch die Instruktion existiert - ein Fall, den die Instruktion konstruktionsbedingt
nicht abdecken kann.
dist upgradenennt den Dateinamen der Instruktion;test_closing_report_points_at_the_upgrade_instructionintools/chemenu/tests/test_dist_upgrade.pyprueft Dateiname undWiedereinstiegskommando.
migrate verify --from <commit>(Schritt 13, gegen den in Schritt 7notierten Commit) und den Neustart der Agent-Session (Schritt 11), jeweils an der Stelle, an
der der Schritt faellt.
und verweist fuer alles Sprungspezifische auf die Release-Notes und die Migrationsdokumente
im Tarball. Der Constraint steht im Kopf der Datei, damit die naechste Aenderung ihn nicht
unwissentlich bricht.
tools/wikitool version bump --minor->6.1.0-beta.1mit ausgeschriebenemChangelog-Eintrag;
pytest1276 gruen (einer neu),docs verifyundinstructions verifygruen.
Was offen bleibt - bewusst
Die Instruktion ersetzt keinen der Werkzeugdefekte, sie fuehrt um sie herum. Offen in #107 und
weiterhin dort zu entscheiden:
version notesauf einer Instanz: Feed-Fallback oder Doku-Aenderung.--keep-local. Der Review hat das Argument dafuer verschaerft:ohne das Flag kostet der Fall nicht nur drei Handgriffe, er hat im beobachteten Lauf eine
Invariantenverletzung produziert.
Fallback-Kette und nicht der Join-Key der Telemetrie.
Verschwindet einer dieser Defekte, verschwindet der zugehoerige Schritt aus der Instruktion - beide
sagen selbst, wann.
Herkunft
Abgeleitet aus dem Review des Upgrade-Laufs in #107 (Review-Sitzung 2026-09-16), dort als Befund 7
gefuehrt. Gebaut, geprueft und publiziert in derselben Sitzung.
Changelog: Geschlossen mit
504149c(6.1.0-beta.1). Body auf den Endstand geschrieben: alle acht Akzeptanzkriterien abgehakt, eines davon mit benannter Ausnahme (der4.5.0-Sonderfall in INSTALL.md nennt weiterhindist upgrade --dry-run, weil dort weder Kommando noch Instruktion existieren). Aus dem Entwurf entschieden: Sitzungsneustart zwischen Maschinerie-Publish und Migrationskette statt am Ende,migrate statusals Wiedereinstiegspunkt, Abschlussbericht nennt Datei plus Wiedereinstiegskommando statt einer Schrittnummer. Zwei Dinge ausserhalb des Schnitts mitgenommen: die Inline-Form ininstructions/session-setup.md(hakt ein Kriterium aus #107 Befund 1 ab) und dieversion notes-Einschraenkung in INSTALL.md. Im Review nachgetragen und in Schritt 6 der Instruktion verarbeitet: der beobachtete Lauf hat fuer die Handreparatur ein rohesgit commitabgesetzt - Invariante 5 - um die Sauberkeits-Vorbedingung herzustellen.