-
v2.5.0 Stable
released this
2026-09-02 07:20:31 +00:00 | 93 commits to main since this release2.5.0 - 2026-09-02 - Versionsstelle: Kompatibilitaet statt Inhaltsmigration, Breaking-Change-Vermerk erzwungen
Author: Torben Nehmer
Die Doku des Stacks führte für die Wahl der Versionsstelle zwei Fragen zusammen, die nicht
dieselbe sind: muss der Korpus migriert werden? und ist die neue Version ein
Drop-in-Ersatz? An allen drei Stellen, die einer Session vor dem Bump begegnen - die Tabelle
instack-dev, der Modul-Docstring inversion.py,INSTALL.md§ Version und Updates -
stand nur die erste. Nurversion bump --helpformulierte es richtig, also ausgerechnet die
Stelle, die man erst liest, wenn die Entscheidung gefallen ist. Bei2.0.0hat genau diese
Lücke zu1.9.0geführt (Gitea #26; der Eintrag zu2.0.0trägt den Fall im Volltext).Die Regel, jetzt an einer Stelle. Neu ist
instructions/dev/version-parts.md: der Drop-in-Test in zwei Hälften - vorwärts (kopieren,
fertig, keine Handarbeit durch Nutzer oder Migrationsskript) und rückwärts (die alte Version
lässt sich noch zurückinstallieren) -, der Katalog der Brüche, die die Grenze bei völlig
unangetastetemkb/überschreiten (Update-Pfad, Artefaktname, Import-Name, Flags, Envvars,
Shape maschinengelesener Dateien), und der Fall2.0.0als Fallbeispiel.instructions/dev/,
also nicht in einer ausgelieferten Instanz - die Datei entscheidet, wer den Stack entwickelt.
Die ausgelieferten Artefakte tragen deshalb die Kurzform der Regel, aber keinen Verweis auf
sie:instructions verifymeldet einen solchen Verweis, weil er nachdist exportins Leere
zeigen würde.Breaking Changes sind teuer, also genehmigungspflichtig.
stack-devhat einen
Entscheidungspunkt bekommen: stellt sich eine Änderung als nicht drop-in heraus, wird nicht
aus eigener Initiative über die Grenze gebumpt. Vorgelegt werden der konkrete Bruch, was jede
bestehende Instanz von Hand tun muss, und die Alternativen - Bruch per Shim vermeiden,
aufschieben und mit dem nächsten bündeln, oder in einen kompatiblen und einen brechenden Teil
mit Deprecation-Fenster spalten -, dazu eine Empfehlung. Dann Freigabe abwarten.--breakingist neu und bei jedem Grenzübertritt Pflicht. Es schreibt eine
**Breaking Change:**-Zeile in den Eintrag, vor die Migrationszeile: das ist, was der Operator
einer bestehenden Instanz beim Lesen der Release-Notes zuerst braucht.docs verifyprüft den
neuesten grenzüberschreitenden Eintrag darauf, analog zu**Migration:** none requiredund aus
demselben Grund - eine Prosa-Regel driftet, ein Marker nicht. Auf einem kompatiblen Bump wird
--breakingverweigert, damit es keine Gewohnheit wird. Beide Prüfungen bleiben getrennt:
check_migration_for_boundaryfragt, ob der Inhalt sich bewegt,check_breaking_change_for_boundary,
ob dem Operator gesagt wurde, dass der Tausch keiner zum Drüberkopieren ist. Ein Rebranding
besteht die erste und fällt durch die zweite.Was ausdrücklich nicht passiert:
docs verifyprüft weiterhin nicht, ob die Stelle
richtig gewählt wurde. Kein Validator unterscheidet ein umbenanntes Flag von einem neuen; das
bleibt Urteil, und dieser Eintrag existiert, weil das Urteil eine Anleitung braucht, keinen
Automaten.Berührt:
instructions/dev/version-parts.md(neu),instructions/dev/stack-dev/SKILL.md,
tools/chemenu/version.py,tools/chemenu/commands/version_cmd.py,
tools/chemenu/commands/docs_verify.py,tools/CONTRACT.md,INSTALL.md. Sechs neue Tests.Downloads