[
  {
    "title": "[EP-5715ce] Offline Mode for the Field Inspections App",
    "body": "Field inspectors use the mobile app at construction sites and rural facilities where signal is unreliable. When the connection drops, the app shows a spinner and inspectors lose notes and photos. Inspectors fall back to paper and re-type reports later.\n\n### Stories\n- [ ] [ST-c3081d] Download assigned inspections for offline use before leaving coverage\n- [ ] [ST-e3f064] Fill in checklists, add notes and capture photos while offline\n- [ ] [ST-5199d9] Sync queued changes to the server automatically in the background\n- [ ] [ST-327858] Sync must resume after interruption without duplicating photos\n- [ ] [ST-bc70e9] Detect the conflict and let the inspector choose which version of each...\n- [ ] [ST-7d05f0] Show a clear offline indicator and the number of changes waiting to sync\n- [ ] [ST-0d2dcf] Pre-fetch map tiles for assigned sites",
    "labels": [
      "epic"
    ]
  },
  {
    "title": "[EP-bfd533] Offline Mode for the Field Inspections App: non-functional requirements",
    "body": "Requirements under \"Offline Mode for the Field Inspections App > Non-functional requirements\".\n\n### Stories\n- [ ] [ST-8aae2b] Offline storage must support at least 50 inspections and 2 GB of photos per...\n- [ ] [ST-34651f] Local data must be encrypted with a key stored in the platform keystore\n- [ ] [ST-6fe87c] Sync of a 20-photo inspection should complete within 3 minutes on a 3G...",
    "labels": [
      "epic"
    ]
  },
  {
    "title": "[ST-c3081d] Download assigned inspections for offline use before leaving coverage",
    "body": "As a field inspector, I want to download assigned inspections for offline use before leaving coverage, so that it supports the goal \"Inspectors can complete a full inspection with no connectivity\".\n\n### Acceptance criteria\n- [ ] **Given** a field inspector, **when** the field inspector downloads assigned inspections for offline use before leaving coverage, **then** the download includes checklists, prior findings and site documents\n\n### Traceability\n- REQ-c3081d (examples/mobile-offline-mode.md:27): Inspectors must be able to download assigned inspections for offline use before leaving coverage.\n\n### Estimate\n3 points. base 1; +2 distributed-state complexity (offline) = score 3 -> 3 pts\n\nEpic: EP-5715ce",
    "labels": [
      "story",
      "priority:must",
      "benefit-inferred"
    ]
  },
  {
    "title": "[ST-e3f064] Fill in checklists, add notes and capture photos while offline",
    "body": "As a field inspector, I want to fill in checklists, add notes and capture photos while offline, so that it supports the goal \"Inspectors can complete a full inspection with no connectivity\".\n\n### Acceptance criteria\n- [ ] **Given** a field inspector, **when** the field inspector fills in checklists, add notes and capture photos while offline, **then** all offline changes are stored locally and encrypted at rest\n\n### Traceability\n- REQ-e3f064 (examples/mobile-offline-mode.md:30): The app must let inspectors fill in checklists, add notes and capture photos while offline.\n\n### Estimate\n5 points. base 1; +2 distributed-state complexity (offline); +1 security or compliance (encrypted) = score 4 -> 5 pts\n\nEpic: EP-5715ce",
    "labels": [
      "story",
      "priority:must",
      "benefit-inferred"
    ]
  },
  {
    "title": "[ST-5199d9] Sync queued changes to the server automatically in the background",
    "body": "As a field inspector, I want the system to sync queued changes to the server automatically in the background, so that it supports the goal \"Inspectors can complete a full inspection with no connectivity\".\n\n### Acceptance criteria\n- [ ] **Given** a field inspector, **when** connectivity returns, **then** the app must sync queued changes to the server automatically in the background\n\n### Traceability\n- REQ-5199d9 (examples/mobile-offline-mode.md:33): When connectivity returns, the app must sync queued changes to the server automatically in the background.\n\n### Estimate\n3 points. base 1; +2 distributed-state complexity (sync, queued, background) = score 3 -> 3 pts\n\nEpic: EP-5715ce",
    "labels": [
      "story",
      "priority:must",
      "benefit-inferred"
    ]
  },
  {
    "title": "[ST-327858] Sync must resume after interruption without duplicating photos",
    "body": "As a field inspector, I want sync to resume after interruption without duplicating photos, so that it supports the goal \"Inspectors can complete a full inspection with no connectivity\".\n\n### Acceptance criteria\n- [ ] **Given** a field inspector, **when** the behaviour is exercised, **then** sync must resume after interruption without duplicating photos\n\n### Traceability\n- REQ-327858 (examples/mobile-offline-mode.md:33): Sync must resume after interruption without duplicating photos.\n\n### Estimate\n3 points. base 1; +2 distributed-state complexity (sync, resume) = score 3 -> 3 pts\n\n### Blocked by\n- [ST-5199d9] Sync queued changes to the server automatically in the background\n\nEpic: EP-5715ce",
    "labels": [
      "story",
      "priority:must",
      "benefit-inferred"
    ]
  },
  {
    "title": "[ST-bc70e9] Detect the conflict and let the inspector choose which version of each...",
    "body": "As a field inspector, I want the system to detect the conflict and let the inspector choose which version of each conflicting field to keep, so that it supports the goal \"Inspectors can complete a full inspection with no connectivity\".\n\n### Acceptance criteria\n- [ ] **Given** a field inspector, **when** the same inspection was edited on the server while the inspector was offline, **then** the app must detect the conflict and let the inspector choose which version of each conflicting field to keep\n\n### Traceability\n- REQ-bc70e9 (examples/mobile-offline-mode.md:36): If the same inspection was edited on the server while the inspector was offline, the app must detect the conflict and let the inspector choose which version of each conflicting field to keep.\n\n### Estimate\n3 points. base 1; +2 distributed-state complexity (offline, conflict, conflicting) = score 3 -> 3 pts\n\nEpic: EP-5715ce",
    "labels": [
      "story",
      "priority:must",
      "benefit-inferred"
    ]
  },
  {
    "title": "[ST-7d05f0] Show a clear offline indicator and the number of changes waiting to sync",
    "body": "As a field inspector, I want the system to show a clear offline indicator and the number of changes waiting to sync, so that it supports the goal \"Inspectors can complete a full inspection with no connectivity\".\n\n### Acceptance criteria\n- [ ] **Given** a field inspector, **when** the system shows a clear offline indicator and the number of changes waiting to sync, **then** the app should show a clear offline indicator and the number of changes waiting to sync\n\n### Traceability\n- REQ-7d05f0 (examples/mobile-offline-mode.md:39): The app should show a clear offline indicator and the number of changes waiting to sync.\n\n### Estimate\n3 points. base 1; +2 distributed-state complexity (offline, sync) = score 3 -> 3 pts\n\nEpic: EP-5715ce",
    "labels": [
      "story",
      "priority:must",
      "benefit-inferred"
    ]
  },
  {
    "title": "[ST-0d2dcf] Pre-fetch map tiles for assigned sites",
    "body": "As a field inspector, I want to pre-fetch map tiles for assigned sites, so that directions work offline.\n\n### Acceptance criteria\n- [ ] **Given** a field inspector, **when** the field inspector pre-fetches map tiles for assigned sites, **then** inspectors could pre-fetch map tiles for assigned sites so directions work offline\n\n### Traceability\n- REQ-0d2dcf (examples/mobile-offline-mode.md:43): Inspectors could pre-fetch map tiles for assigned sites so directions work offline.\n\n### Estimate\n3 points. base 1; +2 distributed-state complexity (offline) = score 3 -> 3 pts\n\nEpic: EP-5715ce",
    "labels": [
      "story",
      "priority:could"
    ]
  },
  {
    "title": "[ST-8aae2b] Offline storage must support at least 50 inspections and 2 GB of photos per...",
    "body": "As a field inspector, I want offline storage to support at least 50 inspections and 2 GB of photos per device, so that it supports the goal \"Inspectors can complete a full inspection with no connectivity\".\n\n### Acceptance criteria\n- [ ] **Given** a field inspector, **when** the behaviour is exercised, **then** offline storage must support at least 50 inspections and 2 GB of photos per device\n\n### Traceability\n- REQ-8aae2b (examples/mobile-offline-mode.md:47): Offline storage must support at least 50 inspections and 2 GB of photos per device.\n\n### Estimate\n3 points. base 1; +2 distributed-state complexity (offline) = score 3 -> 3 pts\n\nEpic: EP-bfd533",
    "labels": [
      "story",
      "priority:must",
      "non-functional",
      "benefit-inferred"
    ]
  },
  {
    "title": "[ST-34651f] Local data must be encrypted with a key stored in the platform keystore",
    "body": "As a field inspector, I want local data to be encrypted with a key stored in the platform keystore, so that it supports the goal \"No inspection data is lost because of connectivity\".\n\n### Acceptance criteria\n- [ ] **Given** a field inspector, **when** the behaviour is exercised, **then** local data must be encrypted with a key stored in the platform keystore\n\n### Traceability\n- REQ-34651f (examples/mobile-offline-mode.md:48): Local data must be encrypted with a key stored in the platform keystore.\n\n### Estimate\n2 points. base 1; +1 security or compliance (encrypted, keystore) = score 2 -> 2 pts\n\nEpic: EP-bfd533",
    "labels": [
      "story",
      "priority:must",
      "non-functional",
      "benefit-inferred"
    ]
  },
  {
    "title": "[ST-6fe87c] Sync of a 20-photo inspection should complete within 3 minutes on a 3G...",
    "body": "As a field inspector, I want sync of a 20-photo inspection to complete within 3 minutes on a 3G connection, so that it supports the goal \"Inspectors can complete a full inspection with no connectivity\".\n\n### Acceptance criteria\n- [ ] **Given** a field inspector, **when** the behaviour is exercised, **then** sync of a 20-photo inspection should complete within 3 minutes on a 3G connection\n\n### Traceability\n- REQ-6fe87c (examples/mobile-offline-mode.md:49): Sync of a 20-photo inspection should complete within 3 minutes on a 3G connection.\n\n### Estimate\n5 points. base 1; +2 distributed-state complexity (sync); +1 measurable performance target (within 3 minutes) = score 4 -> 5 pts\n\n### Blocked by\n- [ST-5199d9] Sync queued changes to the server automatically in the background\n\nEpic: EP-bfd533",
    "labels": [
      "story",
      "priority:should",
      "non-functional",
      "benefit-inferred"
    ]
  }
]
