refactor: AI- en netwerkpoort naar AppFoundation network_guard (Limi #16) #2309

Merged
brenno merged 3 commits from issue-16-network-guard into main 2026-10-06 02:02:52 +00:00
Owner

Samenvatting

Verhuist de productneutrale protocol- en beveiligingskern naar het
gedeelde AppFoundation-package network_guard (tag network_guard-v0.1.0,
resolved commit 7bdf600):

  • NetGuard (adrescontrole, DNS-pinning, connectPinned,
    certificaatpinning, remote-URL-gates) komt uit het package;
    lib/utils/net_guard.dart is een export-shim.
  • AiSecurityGate is een dunne adapter: AiSettings → AiEgressPolicy
    → AiEgressGate. Besluitregels ongewijzigd (dezelfde deny-redenen en
    strategieën).
  • PinnedAiHttpTransport, AiHttpTransport, AiHttpResult en
    AiRequestException komen uit het package; AiClientService en
    AiPrompts blijven lokaal productwerk.
  • isAllowedMediaUrl(Resolved) → isAllowedRemoteUrl(Resolved) (ook in
    SECURITY.md/audit-docs). AiBackendMode verhuist naar het package en
    wordt door ai_settings.dart geherexporteerd.
  • Sink-poort: ai_client_service.dart heeft geen HttpClient meer
    (telling 0). net_guard.dart staat als export-only file in de
    coverage-baseline.
  • SBOM (cdx/spdx/md) vernieuwd met git-herkomst, package-subpad en
    resolved commit; network_guard toegevoegd aan THIRD_PARTY_NOTICES.

Karakterisering: de bestaande net_guard/gate/transport-tests zijn
ongewijzigd groen tegen de package-API; de package draagt zelf 80
karakteriseringstests. Limi verbruikt dezelfde tag in PR brenno/Limi#33.

Testplan

  • make check volledig groen (13216 tests, dekkingsvloeren, goldens)
  • Consumers vooraf getest via lokale path-override, daarna op de tag
  • network_sink_guard_test bijgewerkt en groen

Generated with Devin

## Samenvatting Verhuist de productneutrale protocol- en beveiligingskern naar het gedeelde AppFoundation-package `network_guard` (tag `network_guard-v0.1.0`, resolved commit `7bdf600`): - `NetGuard` (adrescontrole, DNS-pinning, `connectPinned`, certificaatpinning, remote-URL-gates) komt uit het package; `lib/utils/net_guard.dart` is een export-shim. - `AiSecurityGate` is een dunne adapter: `AiSettings` → `AiEgressPolicy` → `AiEgressGate`. Besluitregels ongewijzigd (dezelfde deny-redenen en strategieën). - `PinnedAiHttpTransport`, `AiHttpTransport`, `AiHttpResult` en `AiRequestException` komen uit het package; `AiClientService` en `AiPrompts` blijven lokaal productwerk. - `isAllowedMediaUrl(Resolved)` → `isAllowedRemoteUrl(Resolved)` (ook in SECURITY.md/audit-docs). `AiBackendMode` verhuist naar het package en wordt door `ai_settings.dart` geherexporteerd. - Sink-poort: `ai_client_service.dart` heeft geen `HttpClient` meer (telling 0). `net_guard.dart` staat als export-only file in de coverage-baseline. - SBOM (cdx/spdx/md) vernieuwd met git-herkomst, package-subpad en resolved commit; `network_guard` toegevoegd aan THIRD_PARTY_NOTICES. Karakterisering: de bestaande net_guard/gate/transport-tests zijn ongewijzigd groen tegen de package-API; de package draagt zelf 80 karakteriseringstests. Limi verbruikt dezelfde tag in PR brenno/Limi#33. ## Testplan - [x] `make check` volledig groen (13216 tests, dekkingsvloeren, goldens) - [x] Consumers vooraf getest via lokale path-override, daarna op de tag - [x] `network_sink_guard_test` bijgewerkt en groen Generated with [Devin](https://devin.ai)
De productneutrale protocol- en beveiligingskern verhuist naar
`network_guard-v0.1.0` (Limi #16): host-/adrescontrole, DNS-resolutie met
socket-pinning, redirect- en responsegrenzen, de drie-tiers egresspoort
en het OpenAI-compatibele transportcontract.

- net_guard.dart, ai_security_gate.dart en ai_request.dart zijn nu
  re-exports + een dunne adapter van AiSettings naar AiEgressPolicy;
  PinnedAiHttpTransport komt uit het package.
- isAllowedMediaUrl(Resolved) heet nu isAllowedRemoteUrl(Resolved);
  alle call sites mee-hernoemd, ook in SECURITY.md en audit-docs.
- AiPrompts, AiSettings en AiClientService blijven productwerk en
  blijven hier.
- De sink-poort legt de winst vast: ai_client_service.dart bevat geen
  HttpClient meer; de export-shim net_guard.dart staat met reden in de
  coverage-baseline (geen uitvoerbare regels).
- SBOM bevat git-herkomst, package-subpad en resolved commit;
  THIRD_PARTY_NOTICES vermeldt network_guard.

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Signed-off-by: Brenno de Winter <brenno@brennodewinter.nl>
De analyzer daalt af in packages/ocideck_form_core/test, waar
`package:test` uit diens eigen pubspec komt. De workflows draaiden
alleen `flutter pub get` op de root, dus faalde elke gate-run op een
machine die test-packages nog niet had uitgevoerd — zichtbaar op de
static- en linux-gate van PR #2309 en de scheduled linux-gate op main.

Signed-off-by: Brenno de Winter <brennodewinter@users.noreply.github.com>
`chmod 555`/`000` houdt root niet tegen en de linux-gate-container draait
als root — daar slaagde de "mislukte" schrijfactie gewoon en twaalf
form-tests meldden vals-rood. Nieuwe probe `chmodLockHoudt` meet het
effect; werkt het slot niet, dan slaat de test over i.p.v. te falen.
Zelfde patroon als de bestaande onleesbare-submap-test in
image_carousel_picker_actions_test.

Signed-off-by: Brenno de Winter <brennodewinter@users.noreply.github.com>
brenno merged commit b8b402c6a3 into main 2026-10-06 02:02:52 +00:00
brenno deleted branch issue-16-network-guard 2026-10-06 02:02:52 +00:00
Sign in to join this conversation.
No description provided.