{
  "original_zip_sha256": "d6155e3a2968e6880a99b626be9528a4671a03e34209df480022d0231087fa04",
  "read_only_no_execution": true,
  "source_files": {
    "frontend/public/service-worker.js": {
      "sha256": "24830e9cf50473e79ce5664c9cb320548e86975dfea9a27188a63daf86d40dd3",
      "lines": 157
    },
    "frontend/src/index.js": {
      "sha256": "cba9318f462420fdba71ab38512c21291261f12a33afbc4303e1f0ed1be69524",
      "lines": 48
    },
    "frontend/public/index.html": {
      "sha256": "c483b7329526b1335dbaa1272f3552d99731b244e926fa0187c48fc87416f3e9",
      "lines": 392
    },
    "frontend/src/hooks/useOfflineQueue.js": {
      "sha256": "97c86194d27c8216bc1d598e4671ab83db51bd045b760c5f51fa73e7e427d171",
      "lines": 111
    }
  },
  "referenced_manifest_present": false,
  "referenced_static_icons_present": false,
  "source_observations": [
    "service-worker.js caches admin navigations and successful arbitrary non-API GET responses, immediately skips waiting, claims clients, and deletes every other cache name.",
    "index.js automatically requests waiting-worker activation and reloads on controller change, including long-lived pages.",
    "useOfflineQueue.js uses a single localStorage key, reads the whole pending queue and overwrites it with failures, using current auth headers on reconnect. No account scope or stable idempotency key is shown.",
    "Manifest, icon files and wider deployment configuration are missing from this filtered archive. Referenced metadata is not proof of installation."
  ],
  "reference_links": [
    "https://www.w3.org/TR/service-workers/",
    "https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerGlobalScope/skipWaiting",
    "https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/controllerchange_event",
    "https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest/Reference/scope"
  ]
}
