@@ -89,17 +89,26 @@ Erweiterung von `_update_pyproject` in [src/mxdev/uv.py](../../../src/mxdev/uv.p
8989- Leeres Filterergebnis → Key nicht schreiben; ein bestehender, mxdev-verwalteter Key wird in
9090 dem Fall geleert/entfernt, damit kein veralteter Stand stehen bleibt.
9191
92- ### ⚠️ Technisches Hauptrisiko: tomlkit & Array-interne Kommentare
93-
94- Array-interne Kommentare über viele Zeilen sind die heikelste tomlkit-Stelle. ** Früh im Plan
95- verifizieren** (kleiner Spike), dass tomlkit interspersed comments in einem multiline-Array
96- korrekt ** und idempotent** serialisiert (zweiter Lauf = byte-identisch).
97-
98- Falls tomlkit das nicht sauber round-trippt, ** Fallback** (Reihenfolge bleibt erhalten):
99- Herkunft als ** Inline-Kommentar pro Eintrag** statt als eigene Kommentarzeile, z.B.
100- ` "Zope==6.0", # from <url> ` . Das unterstützt tomlkit zuverlässig. Die begin/end-Blockheader
101- werden dann zu einem Inline-` # from <url> ` -Suffix pro Eintrag verdichtet; die disabled-Marker
102- entfallen in diesem Fallback.
92+ ### Technisches Hauptrisiko: tomlkit & Array-interne Kommentare — ✅ durch Spike abgesichert
93+
94+ Array-interne Kommentare über viele Zeilen waren die heikelste tomlkit-Stelle. Ein Spike
95+ (tomlkit 0.15.0) hat den Hauptweg bestätigt:
96+
97+ - ` arr.add_line(comment="…") ` erzeugt eine eigenständige Kommentarzeile im multiline-Array;
98+ ` arr.add_line("Zope==6.0") ` einen Eintrag.
99+ - Quell-Gruppen mit ` # begin/end constraints from ` -Headern bleiben in Reihenfolge erhalten.
100+ - Environment-Markers bleiben erhalten (valides TOML; ` tomllib ` liest sie korrekt zurück).
101+ - Ersetzen eines bestehenden managed-Arrays entfernt alte Einträge; andere pyproject-Sektionen
102+ (` project ` , ` override-dependencies ` , ` [tool.uv.sources] ` ) bleiben unangetastet.
103+ - ** Idempotenz bestätigt:** zweiter Lauf ist byte-identisch zum ersten.
104+
105+ Implementierung: Array bei jedem Lauf komplett neu bauen und per
106+ ` doc["tool"]["uv"]["constraint-dependencies"] = arr ` ersetzen.
107+
108+ ** Fallback (nicht benötigt, nur als Notnagel dokumentiert):** Herkunft als Inline-Kommentar
109+ pro Eintrag (` "Zope==6.0", # from <url> ` ). Wird nur relevant, falls eine künftige
110+ tomlkit-Version die standalone-Kommentarzeilen brechen sollte; ein Idempotenz-Test im
111+ Test-Suite fängt das ab.
103112
104113### 3. Opt-out
105114
0 commit comments