Native-assetslaag reproduceerbaar pinnen (webbundel-repro over machines heen) #1033
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1033
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Voortgekomen uit #1027 (reproduceerbare builds). Vastgelegd zodat het aangewezen sluitstuk niet wegzakt.
Stand
De webbundel is met #1027 content-reproduceerbaar binnen een vaste bouwomgeving: van 2854 bestanden was de enige intrinsieke bouw-tot-bouw-variatie het willekeurige
serviceWorkerVersion-getal, en dat is nu genormaliseerd (tool/pack_web_release.dart). Toolchain (Flutter,make check-toolchain) en afhankelijkheden (pubspec.lock,--enforce-lockfile) zijn gepind.Eén variabele is dat niet: de native-assetslaag. Tijdens het onderzoek sprong
main.dart.jséénmaal naar een tweede, daarna stabiele waarde, samenvallend met een gelijktijdige host-build — een gevoeligheid van dedartcv4/OpenCV-build via CMake, geen per-build-willekeur.flutter cleanzette die staat niet terug.Doel
Nagaan of
dartcv4's native-assets-hook (OpenCV via CMake) bij identieke bron én toolchain over machines heen hetzelfde oplevert, en zo niet, of en hoe dat te pinnen valt (CMake-/compilerversie, deterministische native build). Mogelijk upstream-rakend (dartcv4).Waarom
Het sluitstuk voor "de gebruiker bouwt uit de bron, verifieerbaar identiek" over machines heen. Zonder dit is de herbouw-en-vergelijk-route (
docs/BUILD.md§"Reproducible builds (web)") het meest conclusief in dezelfde bouwomgeving; een cross-machine-mismatch is dan niet-conclusief i.p.v. bewijs van manipulatie.Verwant
Sluitstuk onder #520 (veilige distributie), naast #1027. Weging en context in
assurance/reproduceerbare-builds.md.Onderzocht — en de premisse van dit issue is empirisch weerlegd. Afgehandeld op main (PR #1035, merge
f26eae1f).Dit issue vroeg de native-assetslaag (dartcv4/OpenCV via CMake) te pinnen, op grond van een waarneming in #1027 dat
main.dart.jseen tweede, stabiele waarde aannam. Gecontroleerd nagebouwd in een geïsoleerde, schone werkkopie op de ongewijzigde bron:main.dart.js = 23ca67d6…, mét de host-native-assets-hook (dart run pack) die élke cyclus draaide → dart2js is deterministisch, en die hook raakt de web-uitvoer niet.lib/-edit (preview_panel.dart) toepassen en opnieuw bouwen gaff04ac94e…— exact de "tweede waarde" uit #1027.De sprong was dus bronvervuiling: een parallelle sessie bewerkte
lib/in de gedeelde werkmap tussen builds door. Niet de native-assetslaag — die kán de web-uitvoer architectonisch ook niet raken (host-FFI, en web heeft geendart:ffi).De #1027-conclusie is ingetrokken en gecorrigeerd (
assurance/reproduceerbare-builds.md,docs/BUILD.md,enisa-sbd-mapping.md), mét de fout zichtbaar en gedateerd. Bewaker-review (publieke belofte): akkoord. De les — reproduceerbaarheidstoetsen horen in een geïsoleerde werkkopie — staat in het dossier.De echte, smalle restrand (reproduceerbaarheid over een andere bouwomgeving: vooral een ander OS) valt samen met "de Linux-tak meten" en blijft belegd onder #520. Er is dus geen native-assets-werk nodig; sluit dit als niet-een-defect.