Dateien
VG-Environment/docs/architecture/vg-core-load-order.md
T

5.4 KiB

VG-Core Load Order

Manifest-Ladereihenfolge

Die Background-Scripts werden laut manifest.json in dieser Reihenfolge geladen:

Reihenfolge Script Einordnung
1 src/core/module-registry.js Core
2 src/modules/vg-observe/module.js Fachmodul
3 src/background/db/db-constants.js Core-Kandidat
4 src/background/db/db-core.js Core-Kandidat
5 src/background/gvl/gvl-vendor-normalizer.js Core-Kandidat
6 src/background/gvl/gvl-vendor-relationship-normalizer.js Core-Kandidat
7 src/background/gvl/gvl-catalog-normalizer.js Core-Kandidat
8 src/background/db/db-retention.js Core-Kandidat
9 src/background/db/db-record-locks.js Core-Kandidat
10 src/background/utils.js Core-Kandidat
11 src/background/settings.js Core-Kandidat
12 src/background/maintenance-guard.js Core-Kandidat
13 src/background/consent-memory.js Fachmodul
14 src/background/request-fingerprint.js Fachmodul
15 src/background/request-observer.js Fachmodul
16 src/background/gvl-service.js Fachmodul
17 src/background.js Fachmodul

Globale Abhängigkeiten

  • globalThis.VGCoreModuleRegistry: wird in src/core/module-registry.js gesetzt und in src/modules/vg-observe/module.js zur Registrierung von VGObserveModule verwendet.
  • globalThis.VGObserveModule: wird in src/modules/vg-observe/module.js gesetzt.
  • globalThis.VendorGetGvlService: wird in src/background/gvl-service.js gesetzt und in src/background.js für ingestGvlSnapshot verwendet.
  • globalThis.normalizeGvlVendorsFromSnapshot und globalThis.normalizeLatestGvlSnapshotVendors: werden in src/background/gvl/gvl-vendor-normalizer.js gesetzt.
  • globalThis.normalizeGvlVendorRelationshipsFromSnapshot und globalThis.normalizeLatestGvlVendorRelationships: werden in src/background/gvl/gvl-vendor-relationship-normalizer.js gesetzt.
  • globalThis.normalizeGvlCatalogsFromSnapshot und globalThis.normalizeLatestGvlCatalogs: werden in src/background/gvl/gvl-catalog-normalizer.js gesetzt.
  • browser.runtime.onMessage und browser.webRequest.onBeforeRequest: werden in src/background.js registriert.
  • browser.storage.local.get und browser.storage.local.set: werden in src/background/settings.js verwendet.
  • indexedDB.open und indexedDB.deleteDatabase: werden in src/background/db/db-core.js verwendet.
  • crypto.subtle.digest und TextEncoder: werden in src/background/utils.js und src/background/gvl-service.js verwendet.
  • fetch: wird in src/background.js für den offiziellen IAB-GVL-Abruf verwendet.
  • URL: wird in src/background/request-fingerprint.js und src/background/request-observer.js zur Request-Auswertung verwendet.
  • atob: wird in src/background.js beim Decoding von TC-String-Core-Metadaten verwendet.

Weitere implizite globale Funktionsabhängigkeiten entstehen durch nicht-modulare Script-Ladung:

  • src/background/db/db-core.js erwartet VENDORGET_DB_NAME und VENDORGET_DB_VERSION aus src/background/db/db-constants.js.
  • src/background/db/db-retention.js und src/background/db/db-record-locks.js erwarten VENDORGET_EVIDENCE_STORE_NAMES aus src/background/db/db-constants.js.
  • src/background/request-fingerprint.js erwartet sha256Hex und stableStringify aus src/background/utils.js.
  • src/background/request-observer.js erwartet isRequestMonitoringEnabled, isEvidenceWriteSuspended, buildObservedRequestFingerprint, buildObservedRequestFingerprintSource, getLatestConsentStateForRequest und persistObservedRequest.
  • src/background.js erwartet unter anderem handleObservedRequest, isConsentCaptureEnabled, rememberLatestTcfPing, getLatestTcfPing, sha256Hex, stableStringify, rememberLatestConsentState, openVendorGetDb, Retention-/Lock-Funktionen und VendorGetGvlService.

Core-relevante Risiken

  • Ladeordnungsrisiko: src/modules/vg-observe/module.js registriert sich nur, wenn globalThis.VGCoreModuleRegistry bereits existiert. Die aktuelle Reihenfolge erfüllt das, ist aber empfindlich gegen Manifest-Änderungen.
  • Implizite globale Abhängigkeiten: Viele Background-Scripts exportieren keine Module, sondern stellen Funktionen durch gemeinsame Script-Ausführung bereit. Verschiebungen können dadurch Laufzeitfehler erzeugen, ohne dass Imports brechen.
  • DB-Konstanten / DB-Version: src/background/db/db-constants.js definiert VENDORGET_DB_VERSION = 5 und die Store-Namen. src/background/db/db-core.js nutzt diese Werte direkt für indexedDB.open und Store-Anlage.
  • Kopplung zwischen Core-Kandidaten und VG-Observe: DB-, Retention-, Record-Lock-, Settings- und GVL-Normalizer-Dateien wirken infrastrukturell, enthalten aber Namen, Stores oder Datenflüsse aus Consent, Request, Evidence und GVL-Snapshot-Logik.
  • GVL-Kopplung: Normalizer können später Teil einer gemeinsamen Wissensbasis sein, sind aktuell aber an Snapshot-Stores und Background-DB-Zugriffe gekoppelt.

Nicht ändern

  • keine Script-Reihenfolge ändern
  • keine manifest.json ändern
  • keine DB-Version ändern
  • keine Dateien verschieben

Nächster risikoarmer Schritt

Als nächsten kleinen Schritt eine reine Dokumentations-Tabelle ergänzen, die je Background-Script die erwarteten vorausgehenden globalen Funktionen und die bereitgestellten globalen Funktionen beschreibt. Kein Refactor, keine Migration, keine Umbenennung.