docs(assurance): corrigeer #1027 — main.dart.js-sprong was bronvervuiling, niet native-assets (#1033) #1035

Merged
brenno merged 1 commit from feat/repro-native-assets-1033 into main 2026-07-31 22:26:33 +00:00
Owner

Pakt #1033 op — en trekt de premisse ervan in.

#1033 vroeg de native-assetslaag (dartcv4/OpenCV via CMake) te pinnen, als vermoedelijk sluitstuk voor web-reproduceerbaarheid over machines heen. Die premisse kwam uit een waarneming in #1027: main.dart.js nam een tweede, stabiele waarde aan. Een gecontroleerde toets weerlegt haar.

Wat #1033 empirisch vaststelde

In een geïsoleerde, schone werkkopie op de ongewijzigde origin/main-bron:

  • Determinisme. Drie schone build+pack-cycli gaven elke keer main.dart.js = 23ca67d6…, mét de host-native-assets-hook (dart run pack) die élke cyclus draaide. dart2js is dus deterministisch, en die hook raakt de web-uitvoer niet.
  • Contaminatie. Precies de parallelle lib/-edit (preview_panel.dart) toepassen en opnieuw bouwen gaf f04ac94e… — exact de "tweede waarde" uit #1027.

Conclusie: de #1027-sprong was bronvervuiling — een parallelle sessie bewerkte lib/ in de gedeelde werkmap tussen builds door — niet de native-assetslaag. En architectonisch kán die laag de web-uitvoer ook niet raken: het is een host-FFI-bibliotheek, en web heeft geen dart:ffi.

Wat dit corrigeert

Docs-only. De #1027-conclusie "de native-assetslaag is de resterende variabele / het aangewezen sluitstuk" is ingetrokken in assurance/reproduceerbare-builds.md (nieuwe §"Een tweede waarneming — en de correctie ervan", gedateerd), en meegetrokken in docs/BUILD.md §"Reproducible builds (web)" en de O1/playbook-14-verwijzingen in enisa-sbd-mapping.md. De fout blijft zichtbaar en gedateerd — niet weggepoetst.

De eerlijke restrand is nu smaller en van een andere orde: reproduceerbaarheid over een andere bouwomgeving (vooral een ander OS, strikt genomen ook een andere machine) is niet rechtstreeks gemeten; de grootste machine-specifieke invoer (het absolute bouwpad) is wél empirisch uitgesloten (#1027). Dat valt samen met "de Linux-tak meten", onder #520.

Waarborgen

  • Bewaker (publieke belofte in BUILD.md): akkoord — de correctie overbelooft niet naar de andere kant; het structurele argument (geen dart:ffi op web) is sterker en eerlijker dan de oude kanttekening; de fout blijft zichtbaar (just culture). Eén bevinding (de restrand strikt genomen breder dan "ander OS") is verwerkt.
  • Docs-only: geen Dart gewijzigd. docs_registration_test + docs_claims_match_code_test groen. Gerebased op de actuele origin/main (bca1212f) — raakt de Matrix-feature (#1034) niet.

Verwant: #1027 (waar dit uit voortkwam), #520.

Pakt **#1033** op — en trekt de premisse ervan in. #1033 vroeg de native-assetslaag (dartcv4/OpenCV via CMake) te pinnen, als vermoedelijk sluitstuk voor web-reproduceerbaarheid over machines heen. Die premisse kwam uit een waarneming in #1027: `main.dart.js` nam een tweede, stabiele waarde aan. Een gecontroleerde toets weerlegt haar. ## Wat #1033 empirisch vaststelde In een **geïsoleerde, schone werkkopie** op de ongewijzigde `origin/main`-bron: - **Determinisme.** Drie schone build+pack-cycli gaven **elke keer** `main.dart.js = 23ca67d6…`, mét de host-native-assets-hook (`dart run pack`) die élke cyclus draaide. dart2js is dus deterministisch, en die hook raakt de web-uitvoer niet. - **Contaminatie.** Precies de parallelle `lib/`-edit (`preview_panel.dart`) toepassen en opnieuw bouwen gaf `f04ac94e…` — exact de "tweede waarde" uit #1027. **Conclusie:** de #1027-sprong was **bronvervuiling** — een parallelle sessie bewerkte `lib/` in de gedeelde werkmap tussen builds door — **niet de native-assetslaag**. En architectonisch kán die laag de web-uitvoer ook niet raken: het is een host-FFI-bibliotheek, en web heeft geen `dart:ffi`. ## Wat dit corrigeert Docs-only. De #1027-conclusie "de native-assetslaag is de resterende variabele / het aangewezen sluitstuk" is ingetrokken in `assurance/reproduceerbare-builds.md` (nieuwe §"Een tweede waarneming — en de correctie ervan", gedateerd), en meegetrokken in `docs/BUILD.md` §"Reproducible builds (web)" en de O1/playbook-14-verwijzingen in `enisa-sbd-mapping.md`. De fout blijft zichtbaar en gedateerd — niet weggepoetst. De eerlijke restrand is nu smaller en van een andere orde: reproduceerbaarheid over een **andere bouwomgeving** (vooral een ander OS, strikt genomen ook een andere machine) is niet rechtstreeks gemeten; de grootste machine-specifieke invoer (het absolute bouwpad) is wél empirisch uitgesloten (#1027). Dat valt samen met "de Linux-tak meten", onder #520. ## Waarborgen - **Bewaker** (publieke belofte in BUILD.md): **akkoord** — de correctie overbelooft niet naar de andere kant; het structurele argument (geen `dart:ffi` op web) is sterker en eerlijker dan de oude kanttekening; de fout blijft zichtbaar (just culture). Eén bevinding (de restrand strikt genomen breder dan "ander OS") is verwerkt. - Docs-only: geen Dart gewijzigd. `docs_registration_test` + `docs_claims_match_code_test` groen. Gerebased op de actuele `origin/main` (`bca1212f`) — raakt de Matrix-feature (#1034) niet. Verwant: #1027 (waar dit uit voortkwam), #520.
Vervolgtoets op #1027. De daar aangewezen "resterende variabele" (de
native-assetslaag, dartcv4/OpenCV via CMake) is weerlegd. In een geïsoleerde
schone werkkopie op de ongewijzigde bron gaven drie schone build+pack-cycli élke
keer dezelfde main.dart.js (mét de host-native-assets-hook die elke cyclus
draaide); precies de parallelle lib/-edit (preview_panel.dart) toepassen gaf de
"tweede waarde" uit #1027. De sprong was dus bronvervuiling — een parallelle
sessie bewerkte lib/ in de gedeelde werkmap tussen builds — niet de
native-assetslaag, die de web-uitvoer architectonisch ook niet raakt (host-FFI,
geen dart:ffi op web).

Correcties: BUILD.md §"Reproducible builds (web)" (de restrand is cross-OS, niet
een ongepinde native-assetslaag), assurance/reproduceerbare-builds.md (§"Een
tweede waarneming — en de correctie ervan", per-platform, besluit, vervolg) en de
O1/playbook-14-verwijzingen in enisa-sbd-mapping.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit f26eae1f87 into main 2026-07-31 22:26:33 +00:00
Sign in to join this conversation.
No description provided.