{
  "archive": "/Users/sandyrestall/Documents/Emergent/SHS-code-review.zip",
  "archive_sha256": "d6155e3a2968e6880a99b626be9528a4671a03e34209df480022d0231087fa04",
  "source_is_filtered": true,
  "source_executed": false,
  "files": [
    {
      "path": "frontend/src/hooks/useOfflineQueue.js",
      "bytes": 3057,
      "sha256": "97c86194d27c8216bc1d598e4671ab83db51bd045b760c5f51fa73e7e427d171"
    },
    {
      "path": "frontend/src/components/admin/SiteModeTab.jsx",
      "bytes": 41893,
      "sha256": "6306cea77470fc9093b0273dd60ee8569522af510becc78c28225032b1a7f98d"
    },
    {
      "path": "backend/routers/site_mode.py",
      "bytes": 21326,
      "sha256": "6523bd9a47451ee307169f5f999b4b1c5e2de257f527266e9f2860aec85a3ac2"
    }
  ],
  "consumers": [
    {
      "path": "frontend/src/components/admin/SiteModeTab.jsx",
      "lines": "204-241",
      "purpose": "Materials logs with quantities/cost; OPEN for durable device retention"
    },
    {
      "path": "frontend/src/components/admin/SiteModeTab.jsx",
      "lines": "245-274",
      "purpose": "Text note; bounded v0.22 implementation"
    },
    {
      "path": "frontend/src/components/admin/SiteModeTab.jsx",
      "lines": "315-334",
      "purpose": "Team-size changes; OPEN, not replayed by this slice"
    }
  ],
  "old_queue_risks": [
    "single plaintext localStorage array shared across identities",
    "arbitrary endpoint/method/body replay using current authentication",
    "automatic reconnect submission",
    "no durable server operation identity",
    "whole-snapshot replacement can erase concurrent enqueues; per-tab busy flag is not a cross-tab claim"
  ],
  "maintained_paths": [
    "backend/device_notes.py",
    "backend/fieldwork.py",
    "backend/identity.py",
    "backend/access_policy.py",
    "frontend/src/device-note-store.js",
    "frontend/src/device-notes.js",
    "frontend/src/device-notes.jsx",
    "frontend/src/api.js",
    "frontend/src/fieldwork.jsx",
    "frontend/src/update-activity.js"
  ],
  "new_routes": 4,
  "route_policy_total": 211,
  "lifecycle_extension": {
    "release": "0.23.0",
    "guide": "DEVICE-NOTE-LIFECYCLE.md",
    "checks": "device-note-lifecycle-checks.json",
    "additional_routes": 4,
    "route_policy_total": 215,
    "old_consumers_still_open": [
      "materials",
      "team size"
    ]
  }
}
