Migrationsweg der Einstellungen von 9.x zurückbauen: config migrate, legacy_settings.py und die Ignore-Einträge der vier Altdateien .wikitool-*.json
#211
Reference in new issue
Block a user
Befund (gegen den Baum geprüft, 2026-10-11)
.gitignoreZeilen 118-126 halten vier Einträge für die Altdateien/.wikitool-remotes.json,/.wikitool-telemetry.json,/.wikitool-upload.jsonund/.wikitool-tasks.json. Der Kommentar dort begründet sie: Bisconfig migrategelaufen ist, kann eine Altdatei noch ein Secret im Klartext tragen. Ohne den Eintrag nähmepublishsie mitgit add -Amit./.wikitool-tasks.d/ist nicht Teil dieses Pakets. Die Profile existieren weiter (#208 Entscheidung 4), und der Eintrag bleibt.publishendet nur bei.wikitool-remotes.jsonmit exit 42 (commands/git_publish.py,refuse_leftover("remotes")).task/review/new projecthalten bei.wikitool-tasks.jsonan, der MCP-Server bei.wikitool-upload.json,doctormeldet jede als FAIL. Eine verbliebene.wikitool-tasks.jsonmit Token im Klartext hältpublishalso nicht an; nur ihr Ignore-Eintrag hält den Token aus dem Commit..gitignorewird ausgeliefert (dist_cmd.py, Liste der Root-Dateien). Eine Änderung erreicht also jede Instanz mit ihrem Upgrade, auch einen Klon, derconfig migratenoch nicht ausgeführt hat (config migrateläuft pro Checkout, #208 Entwurf 1).instructions/migrations/hält alle Anleitungen seit 3.0.0. Einen Mechanismus, der ein Upgrade von einer zu alten Version verweigert, gibt es nicht (grepintools/chemenu/nach einer Mindestversion für das Upgrade ist leer).Entscheidungen des Betreibers (2026-10-11)
publishbei jeder der vier Altdateien mit exit 42 anhalten und die Einträge sofort entfernen: schützt nicht gegen einengit addvon Hand, und eine Altdatei erschiene ingit statusals unversionierte Datei;Offene Fragen
prio/waiting). Möglich wären etwa: die nächste MAJOR nach 10, ein Datum, oder wenn keine bekannte Instanz mehr auf 9.x steht. Das entscheidet der Betreiber.instructions/migrations/10.0.0-settings-tiers.mdals Hinweis bleibt oder geht. Das ist eine Designfrage fürstack-dev, sobald Frage 1 entschieden ist. Ein Vorschlag liegt noch nicht vor.Invariante
Kein Secret-Wert aus einer Altdatei gelangt in den Git-Index, auch nicht in einem Checkout, der vor dem Rückbau nicht migriert hat. Das gilt in jeder Version, die eine Instanz erreichen kann. Entweder hält der Ignore-Eintrag die Altdatei aus dem Index, oder ein Upgrade dorthin ist nicht möglich, solange eine Altdatei im Checkout liegt.
Betroffene Dateien
.gitignore(Zeilen 118-126 samt Kommentar)tools/chemenu/legacy_settings.py(entfällt),commands/config_cmd.py(config migratesamt Record),commands/doctor.py(check_legacy_settings),commands/_util.py(refuse_leftover),upload.py,tasks/config.py,mcp/__main__.py,commands/git_publish.pycommands/dist_cmd.pyund/oderversion.py(Sperre für ein zu altes Upgrade),instructions/upgrade-instance.mdinstructions/migrations/10.0.0-settings-tiers.md,instructions/migrate-corpus.md(Satz zuconfig migrateaus #208 Entwurf 1)docs/reference/configuration.md(Abschnitt zu den Altdateien),docs/how-to/update-an-instance.md(Absatz zur Migration pro Checkout),docs/reference/commands/undtools/CONTRACT.md(generiert),docs/explanation/version-model.md, falls die Mindestversion fürs Upgrade dort hingehörttest_config_cmd/Migrationstest,test_doctor.py,test_settings.py,test_tasks_config.py, die Tests der Sperre aus Frage 2Akzeptanzkriterien
.gitignoreenthält keinen der vier Einträge mehr;/.wikitool-tasks.d/bleibt.tools/wikitool config migrateexistiert nicht mehr, undgrepnach den vier Dateinamen intools/chemenu/außerhalb der Tests ist leer (bis auf eine Sperre aus Frage 2, falls sie die Namen braucht).kb_version< 10.0.0, oder eines Checkouts mit einer der vier Altdateien, auf diese Version endet vor jeder Änderung am Baum mit exit 42 und nennt den Weg über eine 10.x-Version (Test).wikitool-Kommando in den Git-Index (Test: Checkout mit.wikitool-tasks.jsonmit Token-Wert; Upgrade undpublish --no-pushenden ohne den Wert im Index,git grepfindet ihn nicht).docs verify,instructions verify,pytestgrün; CI grün.Versionsteil
--major.config migrateentfällt als Kommando, und ein Upgrade von 9.x ist nicht mehr direkt möglich (Katalog ininstructions/dev/version-parts.md). Ob dafür eine eigene Migrationsanleitung nötig ist oder die Sperre aus Frage 2 genügt, wird im Design zusammen mit Frage 2 festgelegt.Ignore-Einträge der vier Altdateien `.wikitool-*.json` entfernen, sobald keine unmigrierte Datei mehr ein Secret in `publish` tragen kannto Migrationsweg der Einstellungen von 9.x zurückbauen: `config migrate`, `legacy_settings.py` und die Ignore-Einträge der vier Altdateien `.wikitool-*.json`Changelog: Der Betreiber hat Option A gewählt (2026-10-11): Die Ignore-Einträge gehen erst mit dem Migrationsweg. B (Sperre in
publish, Einträge sofort weg) und C (Einträge dauerhaft) stehen als verworfen in Entscheidung 1. Der Umfang wächst damit auf den Rückbau vonconfig migrateundlegacy_settings.py; Titel, betroffene Dateien und Kriterien sind entsprechend neu. Neu sind zwei offene Fragen: der Auslöser (ab wann kein Upgrade von 9.x mehr) und die Sperre gegen ein direktes Upgrade von < 10.0.0, für die es im Stack noch keinen Mechanismus gibt. Labels:size/S→size/M;kind/decisionundprio/waitingbleiben bis zu Frage 1.