importProject carries the DHCP client switch and server settings (hosts and home routers), a home router's port forwarding rows and a modem's pairing into the model; the core gains the types, ported from Swift. The Swift oracle writes them too, and they match on the 13 files Swift reads completely. Configuration text is now trimmed throughout, as Swift trims every value it reads (routes and firewall rules included). Outside those files Swift switches every DHCP server of the Internet examples off: their "aktiv" refers to a shared Boolean it cannot follow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Swift-Orakel
Der Swift-Kern von filius-ipad (Laufzeit, Modell, .fls, Berichte — alles
ohne Oberfläche) lässt sich unter Linux bauen. Dieses Werkzeug nutzt das als
Maßstab für die Übertragung: Ein Szenario wird einmal als JSON
beschrieben, in Swift abgespielt, und die TypeScript-Übertragung muss
dieselbe Ausgabe liefern — jedes einzelne Spurereignis, jede Antwort, den
Endzustand.
npm run oracle # = tools/swift-oracle/run.sh (braucht Docker)
npm test # vergleicht mit den geschriebenen *.swift.json
- Szenarien:
packages/core/test/scenarios/<name>.scenario.json - Ergebnis aus Swift:
<name>.swift.jsondaneben — wird eingecheckt, damit die Tests ohne Docker und ohne Swift laufen. - Vergleich:
packages/core/test/oracle.test.ts. Er meldet das erste abweichende Spurereignis mit Nummer.
Korpus
--corpus importiert jede .fls unter corpus/ und schreibt
corpus/corpus.swift.json: je Datei die Zählwerte und Warnungen des Imports
und unter state Swifts ganzes importiertes Modell ohne die zufälligen UUIDs
(Geräte, Ports und Kabel als Indizes, IP-Konfiguration, Doku-Elemente mit
ihren abgeleiteten IDs). Daran misst packages/fls/test/importProject.test.ts
den Umbau — auf den 13 Dateien, die Swift vollständig liest.
Wie es gebaut wird
fetch-upstream.sh holt filius-ipad am festen Stand 3b5ded0 und kopiert
die oberflächenfreien Quellen nach Sources/FiliusCore/ (nicht eingecheckt).
Apple-Module, die es unter Linux nicht gibt, sind auf das Nötige verkleinert:
| Modul | Ersatz |
|---|---|
CoreGraphics |
Foundation (hat CGPoint/CGFloat unter Linux) |
CryptoKit |
swift-crypto (gleiche Schnittstelle) |
Compression |
eine Funktion, compression_decode_buffer mit rohem DEFLATE über zlib |
Network |
entfällt: TopologyRemoteLinkLANController.swift wird nicht mitgebaut |
patches/linux-type-checker.patch teilt zwei lange Ausdrücke auf, an denen der
Linux-Compiler die Typprüfung abbricht. Das Verhalten ändert sich dadurch nicht.
Neue Schrittarten
Eine Schrittart gibt es zweimal — in Sources/Oracle/main.swift und in
packages/core/test/oracle.test.ts. Beide müssen dasselbe JSON schreiben.