## MODIFIED Requirements ### Requirement: Schreiben ist die Umkehrung des Lesens Das unveränderte Schreiben einer gelesenen Formularbeschreibung SHALL die Originaldatei bytegleich erhalten, einschließlich explizit geschriebener Vorgabewerte. Beim kanonischen Schreiben einer neuen oder geänderten Beschreibung SHALL nur geschrieben werden, was vom Vorgabewert abweicht. Für diese kanonische Ausgabe SHALL Reihenfolge und Einrückung festgelegt und dokumentiert sein, damit zwei Läufe dieselbe Datei erzeugen. Ein expliziter Control-Array-Index SHALL auch bei `Index = 0` erhalten bleiben; er ist eine Strukturangabe und kein auslassbarer Eigenschaftsdefault. #### Scenario: Rundlauf - **WHEN** eine Formulardatei gelesen und unverändert wieder geschrieben wird - **THEN** ist die geschriebene Datei byte-gleich zur gelesenen #### Scenario: Vorgabewerte werden nicht geschrieben - **WHEN** eine neue oder geänderte Beschreibung kanonisch geschrieben wird und ein Steuerelement nur Vorgabewerte trägt - **THEN** enthält sein Block außer `Begin`/`End` keine Eigenschaftszeile #### Scenario: Expliziter Default im unveränderten Original - **WHEN** eine gelesene Datei einen Vorgabewert ausdrücklich enthält und unverändert geschrieben wird - **THEN** bleibt auch diese Eigenschaftszeile bytegleich erhalten #### Scenario: Arrayelement mit Index null - **WHEN** ein Formular mit einem einzigen Control-Arrayelement `Index = 0` kanonisch geschrieben und erneut gelesen wird - **THEN** bleibt das Control ein Array und seine Indexangabe erhalten