{
  "generatedAt": "1970-01-01T00:00:00.000Z",
  "testcases": [
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C1-EDGE-005-session-crash-unsaved-not-persisted.md",
      "id": "DFMOD-C1-EDGE-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C1.3 edge case; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify a crash/interruption mid-edit leaves no unsaved state persisted.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P2",
      "product": "web",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C1.3",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "session-state",
        "edge-case",
        "pk141",
        "staging"
      ],
      "title": "Session interruption or crash does not persist unsaved changes",
      "type": "recovery"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C1-NEG-002-edit-partial-load-failure-fallback.md",
      "id": "DFMOD-C1-NEG-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C1.1 edge case; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify graceful handling when part of the form configuration (e.g. Step 2) fails to load on edit.",
      "preconditionRefs": [
        "PRE-DF-form-exists"
      ],
      "priority": "P2",
      "product": "web",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C1.1",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "negative",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Partial config load failure shows fallback state and redirects safely",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C1-POS-001-edit-preloads-all-saved-config.md",
      "id": "DFMOD-C1-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C1.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify opening Edit on an existing form routes into the Step 1–5 flow with all saved configuration prefilled.",
      "preconditionRefs": [
        "PRE-DF-form-exists"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C1.1",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "prefill",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Editing a form preloads all previously saved configuration across Step 1–5",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C1-POS-003-edited-state-persists-after-revert.md",
      "id": "DFMOD-C1-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C1.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify the form remains in an \"edited\" state and Save stays enabled even after a changed value is reverted to its original.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C1.2",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "edit-state",
        "revert",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Edited state stays active even after a value is reverted to its original",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C1-POS-004-temp-state-in-session-no-autosave.md",
      "id": "DFMOD-C1-POS-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C1.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify edits are retained across step navigation within the session but never persisted before a valid Save.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C1.3",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "session-state",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Temporary edits persist in session but are not auto-saved to backend",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C1-POS-006-unsaved-changes-protection.md",
      "id": "DFMOD-C1-POS-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C1.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify the unsaved-changes confirmation appears for both in-app navigation and browser exit, with Cancel and Leave behaving correctly.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C1.4",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "discard",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Unsaved changes protection appears on in-app navigation and browser exit",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C10-POS-001-compound-activity-log-timeline.md",
      "id": "DFMOD-C10-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C10.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify the compound activity log timeline, snapshots, and before→after change display.",
      "preconditionRefs": [
        "PRE-DF-compound-exists"
      ],
      "priority": "P2",
      "product": "web",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C10.1",
        "tsdSection": "C10"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "activity-log",
        "audit-log",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Compound activity log shows timeline, before-after, and immutable snapshots",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C10-POS-002-form-template-activity-log-all-layers.md",
      "id": "DFMOD-C10-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C10.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify the form template activity log captures snapshots and field-level deltas across all change types.",
      "preconditionRefs": [
        "PRE-DF-form-exists"
      ],
      "priority": "P2",
      "product": "web",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C10.2",
        "tsdSection": "C10"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "activity-log",
        "audit-log",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Form template activity log covers all impacted configuration layers",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C10-POS-003-activity-log-read-only-immutable.md",
      "id": "DFMOD-C10-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C10.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify existing activity log entries never change and the log is read-only.",
      "preconditionRefs": [
        "PRE-DF-form-exists"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C10.3",
        "tsdSection": "C10"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "activity-log",
        "audit-log",
        "snapshot",
        "pk141",
        "staging"
      ],
      "title": "Activity log is read-only and snapshots stay immutable after later changes",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C10-POS-004-activity-log-empty-and-long-content.md",
      "id": "DFMOD-C10-POS-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C10.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify the activity log empty state and long/complex content remain usable and read-only.",
      "preconditionRefs": [
        "PRE-DF-form-exists"
      ],
      "priority": "P3",
      "product": "web",
      "reviewedBy": null,
      "risk": "low",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C10.4",
        "tsdSection": "C10"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "activity-log",
        "see-more",
        "pk141",
        "staging"
      ],
      "title": "Activity log empty state and long-content handling stay usable",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C2-EDGE-002-save-scope-invalid-step-handling.md",
      "id": "DFMOD-C2-EDGE-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C2.1 edge cases; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify scoped-save behavior when a step is partially edited/invalid or not yet committed.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C2.1",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "save-scope",
        "edge-case",
        "pk141",
        "staging"
      ],
      "title": "Invalid or unsaved step handling during scoped save",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C2-EDGE-004-reverted-structural-no-version-mixed-one-version.md",
      "id": "DFMOD-C2-EDGE-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C2.2 edge cases; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify version evaluation for reverted structural edits and mixed structural + non-structural saves.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C2.2",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "versioning",
        "revert",
        "pk141",
        "staging"
      ],
      "title": "Reverted structural change creates no version; mixed changes increment once",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C2-NEG-006-invalid-training-material-blocks-save.md",
      "id": "DFMOD-C2-NEG-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C2.3 edge case; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify invalid training material input is blocked at save.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P2",
      "product": "web",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C2.3",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "training-material",
        "negative",
        "validation",
        "pk141",
        "staging"
      ],
      "title": "Invalid training material input blocks save with a validation error",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C2-NEG-008-deleted-reference-prevents-invalid-logic.md",
      "id": "DFMOD-C2-NEG-008",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C2.4 edge case; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify the system prevents an invalid logic configuration when a referenced page or question is deleted.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C2.4",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "logic-jump",
        "negative",
        "validation",
        "pk141",
        "staging"
      ],
      "title": "Deleting a referenced page/question is prevented from creating invalid logic",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C2-POS-001-save-scope-follows-button-location.md",
      "id": "DFMOD-C2-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C2.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify which steps are committed depends on the Save button used, not where edits occurred.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P0",
      "product": "web",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C2.1",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "save-scope",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Save scope follows the Save button location, not where edits were made",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C2-POS-003-step1-no-version-structural-creates-version.md",
      "id": "DFMOD-C2-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C2.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify versioning rules: non-structural Step 1 edits do not bump the version; structural Step 2/3 edits create exactly one new version per save.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P0",
      "product": "web",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C2.2",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "versioning",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Step 1 changes keep version; structural Step 2/3 changes create one new version",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C2-POS-005-training-material-is-structural.md",
      "id": "DFMOD-C2-POS-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C2.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify training material edits follow Form Builder save rules, are treated as structural in preview/runtime, and bump the version.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C2.3",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "training-material",
        "versioning",
        "pk141",
        "staging"
      ],
      "title": "Training material changes are treated as structural and bump the version",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C2-POS-007-logic-preview-sync-no-persistence.md",
      "id": "DFMOD-C2-POS-007",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C2.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify Preview shows the latest structure and logic (including unsaved changes) without persisting data.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C2.4",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "logic-jump",
        "preview",
        "pk141",
        "staging"
      ],
      "title": "Logic Jump and Preview reflect latest session state without persisting",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C2-POS-009-question-id-behavior.md",
      "id": "DFMOD-C2-POS-009",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C2.5; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify Question ID assignment on add, duplicate, and edit.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C2.5",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "question-id",
        "pk141",
        "staging"
      ],
      "title": "Question ID is new for added questions and stable for edited ones",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C3-EDGE-003-extreme-structure-change-ongoing-safe.md",
      "id": "DFMOD-C3-EDGE-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C3.2 edge case; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify an ongoing visit survives extreme structure changes (whole page/question deleted) without crashing or losing input.",
      "preconditionRefs": [
        "PRE-DF-mobile-assigned"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C3.2",
        "tsdSection": "C3"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "form-modification",
        "snapshot",
        "edge-case",
        "pk141",
        "staging"
      ],
      "title": "Extreme structure change (deleted page/question) keeps ongoing visit safe",
      "type": "recovery"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C3-POS-001-new-visit-uses-latest-version.md",
      "id": "DFMOD-C3-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C3.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify a newly started visitation receives the latest assigned form version after a modification.",
      "preconditionRefs": [
        "PRE-DF-mobile-assigned"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C3.1",
        "tsdSection": "C3"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "form-modification",
        "versioning",
        "visitation",
        "pk141",
        "staging"
      ],
      "title": "New visitation always uses the latest assigned form version",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C3-POS-002-ongoing-visit-keeps-old-snapshot.md",
      "id": "DFMOD-C3-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C3.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify an in-progress visitation continues on its original version when the form is modified mid-way.",
      "preconditionRefs": [
        "PRE-DF-mobile-assigned"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C3.2",
        "tsdSection": "C3"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "form-modification",
        "snapshot",
        "visitation",
        "pk141",
        "staging"
      ],
      "title": "Ongoing visitation keeps its old snapshot without sudden change",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C3-POS-004-history-reflects-submission-version.md",
      "id": "DFMOD-C3-POS-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C3.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify historical and task reports stay bound to the version used at submission, even after later modification.",
      "preconditionRefs": [
        "PRE-DF-submitted-report-exists"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C3.3",
        "tsdSection": "C3"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "form-modification",
        "history",
        "snapshot",
        "pk141",
        "staging"
      ],
      "title": "Historical reports reflect the form version at submission time",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C3-POS-005-history-entry-points-consistent.md",
      "id": "DFMOD-C3-POS-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C3.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify every history entry point renders the same submission-version context for one report.",
      "preconditionRefs": [
        "PRE-DF-submitted-report-exists"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C3.4",
        "tsdSection": "C3"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "form-modification",
        "history",
        "pk141",
        "staging"
      ],
      "title": "All history entry points show consistent context for the same report",
      "type": "integration"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C4-NEG-005-duplicate-validation-failure-does-not-touch-original.md",
      "id": "DFMOD-C4-NEG-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C4.4 edge case; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify a failed validation while saving a duplicate leaves the original form untouched.",
      "preconditionRefs": [
        "PRE-DF-form-exists"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C4.4",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "duplicate-form",
        "negative",
        "validation",
        "pk141",
        "staging"
      ],
      "title": "Validation failure on a duplicate never mutates the original form",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C4-POS-001-duplicate-opens-prefilled-setup.md",
      "id": "DFMOD-C4-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C4.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify duplicating a form opens the setup flow from Step 1 prefilled with the source's latest saved configuration.",
      "preconditionRefs": [
        "PRE-DF-form-exists"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C4.1",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "duplicate-form",
        "prefill",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Duplicate opens the setup flow prefilled from the source form",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C4-POS-002-duplicate-is-new-independent-entity.md",
      "id": "DFMOD-C4-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C4.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify a saved duplicated form is fully independent of the original.",
      "preconditionRefs": [
        "PRE-DF-form-exists"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C4.2",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "duplicate-form",
        "versioning",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Duplicated form becomes a new independent entity (new ID, Version 1)",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C4-POS-003-duplicate-naming-availability-editable-rules.md",
      "id": "DFMOD-C4-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C4.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify duplicate-specific rules for default naming, availability, and editable configuration.",
      "preconditionRefs": [
        "PRE-DF-form-exists"
      ],
      "priority": "P2",
      "product": "web",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C4.3",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "duplicate-form",
        "availability",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Duplicated form follows duplicate-specific naming, availability, and editable rules",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C4-POS-004-duplicate-same-validation-save.md",
      "id": "DFMOD-C4-POS-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C4.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify a duplicated form runs the same validation/save rules as creating a new form.",
      "preconditionRefs": [
        "PRE-DF-form-exists"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C4.4",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "duplicate-form",
        "validation",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Duplicated form follows the same validation and save behavior as new creation",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C5-NEG-004-compound-impact-cancel-no-propagation.md",
      "id": "DFMOD-C5-NEG-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C5.3 (cancel); pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify cancelling the impact confirmation makes no changes to affected forms.",
      "preconditionRefs": [
        "PRE-DF-compound-exists"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C5.3",
        "tsdSection": "C5"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "compound",
        "negative",
        "pk141",
        "staging"
      ],
      "title": "Cancelling the compound impact confirmation propagates nothing",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C5-POS-001-modify-compound-config-consistent.md",
      "id": "DFMOD-C5-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C5.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify compound editing behaves consistently with the form builder and warns on impactful changes.",
      "preconditionRefs": [
        "PRE-DF-compound-exists"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C5.1",
        "tsdSection": "C5"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "compound",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "CP user modifies compound config with form-builder-consistent behavior",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C5-POS-002-compound-version-on-meaningful-change.md",
      "id": "DFMOD-C5-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C5.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify compound versioning bumps only on meaningful change while the Compound ID is stable.",
      "preconditionRefs": [
        "PRE-DF-compound-exists"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C5.2",
        "tsdSection": "C5"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "compound",
        "versioning",
        "pk141",
        "staging"
      ],
      "title": "Compound version increments only on a meaningful change, ID stays",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C5-POS-003-compound-save-impact-confirm-propagates.md",
      "id": "DFMOD-C5-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C5.3 (confirm); pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify an impactful compound save shows scope and, on confirm, propagates versions to affected forms.",
      "preconditionRefs": [
        "PRE-DF-compound-exists"
      ],
      "priority": "P0",
      "product": "web",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C5.3",
        "tsdSection": "C5"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "compound",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Saving an impactful compound shows impact modal and confirm propagates",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C5-POS-005-updated-compound-new-visit-only.md",
      "id": "DFMOD-C5-POS-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C5.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify a saved compound update reaches new visits but ongoing visits keep their snapshot.",
      "preconditionRefs": [
        "PRE-DF-mobile-assigned"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C5.4",
        "tsdSection": "C5"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "form-modification",
        "compound",
        "snapshot",
        "pk141",
        "staging"
      ],
      "title": "Updated compound applies to new visitation only, not ongoing visits",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C5-POS-006-historical-compound-auditable.md",
      "id": "DFMOD-C5-POS-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C5.5; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify submitted reports keep their old compound structure and answers after the compound changes.",
      "preconditionRefs": [
        "PRE-DF-submitted-report-exists"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C5.5",
        "tsdSection": "C5"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "form-modification",
        "compound",
        "history",
        "pk141",
        "staging"
      ],
      "title": "Historical compound data stays audit-able after modification",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C6-EDGE-004-availability-extended-after-expiry-reappears.md",
      "id": "DFMOD-C6-EDGE-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C6.2 edge case; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify a previously expired availability that is extended makes the form available again for future visits.",
      "preconditionRefs": [
        "PRE-DF-mobile-assigned"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C6.2",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "form-modification",
        "availability",
        "edge-case",
        "pk141",
        "staging"
      ],
      "title": "Extending availability after expiry makes the form reappear for future visits",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C6-NEG-002-availability-invalid-period-blocked.md",
      "id": "DFMOD-C6-NEG-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C6.1 (validation); pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify invalid availability periods are blocked at save.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C6.1",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "availability",
        "negative",
        "validation",
        "pk141",
        "staging"
      ],
      "title": "Availability save blocked when end date is before current or period invalid",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C6-NEG-007-target-invalid-value-rejected.md",
      "id": "DFMOD-C6-NEG-007",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C6.4 (validation); pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify invalid target values are rejected when target is enabled.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C6.4",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "target",
        "negative",
        "validation",
        "pk141",
        "staging"
      ],
      "title": "Target rejects zero, negative, or invalid numeric values when enabled",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C6-POS-001-availability-change-latest-source-of-truth.md",
      "id": "DFMOD-C6-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C6.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify valid availability changes (permanent/temporary, extend/shorten) take effect with the latest saved config winning.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C6.1",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "availability",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Availability changes are accepted with latest config as source of truth",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C6-POS-003-new-visit-follows-latest-availability.md",
      "id": "DFMOD-C6-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C6.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify a new visit honors the latest availability window.",
      "preconditionRefs": [
        "PRE-DF-mobile-assigned"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C6.2",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "form-modification",
        "availability",
        "visitation",
        "pk141",
        "staging"
      ],
      "title": "New visitation follows the latest availability rule",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C6-POS-005-ongoing-history-unaffected-by-availability.md",
      "id": "DFMOD-C6-POS-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C6.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify an availability change does not block an ongoing visit or historical reports.",
      "preconditionRefs": [
        "PRE-DF-mobile-assigned"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C6.3",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "form-modification",
        "availability",
        "history",
        "pk141",
        "staging"
      ],
      "title": "Ongoing visit and history are unaffected by availability change",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C6-POS-006-target-config-validated-latest-new-visit.md",
      "id": "DFMOD-C6-POS-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C6.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify target config enable/disable/value saves correctly and the latest rule applies only to new visits.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C6.4",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "target",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Target configuration validates and applies latest rule to new visits only",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C6-POS-008-ongoing-visit-target-snapshot-integrity.md",
      "id": "DFMOD-C6-POS-008",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C6.5; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify a mid-visit target change does not recalculate progress or regress completion of an ongoing visit.",
      "preconditionRefs": [
        "PRE-DF-mobile-assigned"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C6.5",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "form-modification",
        "target",
        "snapshot",
        "pk141",
        "staging"
      ],
      "title": "Ongoing visit keeps its target snapshot and completion integrity",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C7-EDGE-006-channel-status-change-revalidate.md",
      "id": "DFMOD-C7-EDGE-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C7.4 edge case; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify the system revalidates when channel status changes just before final save.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P2",
      "product": "web",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C7.4",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "assignment",
        "edge-case",
        "pk141",
        "staging"
      ],
      "title": "Channel status change before final save triggers revalidation",
      "type": "recovery"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C7-NEG-003-specific-without-entity-blocked.md",
      "id": "DFMOD-C7-NEG-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C7.2 (validation); pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify save is blocked when a specific assignment has no entity selected.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C7.2",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "assignment",
        "negative",
        "validation",
        "pk141",
        "staging"
      ],
      "title": "Specific assignment without a selected entity blocks save",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C7-NEG-004-working-group-filter-resilient-to-deletion.md",
      "id": "DFMOD-C7-NEG-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C7.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify WG/level/node filters surface clear empty/invalid states and reset invalid selections safely.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C7.3",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "assignment",
        "working-group",
        "negative",
        "pk141",
        "staging"
      ],
      "title": "Working-group filter stays valid and resilient to source-data deletion",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C7-POS-001-activation-only-future-distribution.md",
      "id": "DFMOD-C7-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C7.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify changing assignment activation status only affects future distribution and preserves config.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C7.1",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "assignment",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Assignment activation status affects future distribution only",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C7-POS-002-switch-scope-type-resets-dependents.md",
      "id": "DFMOD-C7-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C7.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify changing assignment scope (channel/employee) or type (all/specific) resets dependent selections and requires valid reconfiguration.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C7.2",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "assignment",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Switching assignment scope/type resets dependent selections safely",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C7-POS-005-step5-validate-confirm-commit-transaction.md",
      "id": "DFMOD-C7-POS-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C7.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify a Step 5 save validates all required config, confirms, and commits Step 1–5 atomically.",
      "preconditionRefs": [
        "PRE-DF-cp-editing-form"
      ],
      "priority": "P0",
      "product": "web",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C7.4",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "form-modification",
        "save-scope",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Save at Step 5 validates, confirms, and commits all steps as one transaction",
      "type": "integration"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C7-POS-007-employee-sees-form-per-latest-assignment.md",
      "id": "DFMOD-C7-POS-007",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C7.5; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify assignment changes reach future visits while ongoing visits and history are preserved.",
      "preconditionRefs": [
        "PRE-DF-mobile-assigned"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C7.5",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "form-modification",
        "assignment",
        "visitation",
        "pk141",
        "staging"
      ],
      "title": "Employee sees the form per the latest assignment on future visits",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C8-EDGE-005-copy-failure-no-partial-prefill.md",
      "id": "DFMOD-C8-EDGE-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C8.5; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify a system failure during copy produces no partial prefill and a safe recovery.",
      "preconditionRefs": [
        "PRE-DF-submitted-report-exists"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C8.5",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "copy-from-previous",
        "edge-case",
        "pk141",
        "staging"
      ],
      "title": "Copy failure leaves no partial prefill and allows retry or manual",
      "type": "recovery"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C8-EDGE-006-copied-deleted-item-fails-on-submit.md",
      "id": "DFMOD-C8-EDGE-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C8.6; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify copied data referencing a deleted compound item/option is shown for awareness but fails validation on next/submit.",
      "preconditionRefs": [
        "PRE-DF-submitted-report-exists"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C8.6",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "copy-from-previous",
        "deleted-option",
        "negative",
        "validation",
        "pk141",
        "staging"
      ],
      "title": "Copied deleted item/option is shown for awareness but fails on next/submit",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C8-NEG-001-no-previous-submission-graceful.md",
      "id": "DFMOD-C8-NEG-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C8.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify the copy feature fails gracefully when there is no previous submission.",
      "preconditionRefs": [
        "PRE-DF-mobile-assigned"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C8.1",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "copy-from-previous",
        "negative",
        "pk141",
        "staging"
      ],
      "title": "No previous submission shows error and allows manual input",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C8-NEG-004-version-mismatch-hard-block-copy.md",
      "id": "DFMOD-C8-NEG-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C8.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify copy is fully blocked when the current form version differs from the previous submission's version.",
      "preconditionRefs": [
        "PRE-DF-submitted-report-exists"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C8.4",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "copy-from-previous",
        "negative",
        "versioning",
        "pk141",
        "staging"
      ],
      "title": "Version mismatch hard-blocks copy with no partial prefill",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C8-POS-002-copy-takes-latest-with-confirmation.md",
      "id": "DFMOD-C8-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C8.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify copy auto-selects the latest valid submission on the selected channel and confirms before applying.",
      "preconditionRefs": [
        "PRE-DF-submitted-report-exists"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C8.2",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "copy-from-previous",
        "pk141",
        "staging"
      ],
      "title": "Copy always uses the latest submission with a confirmation modal",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C8-POS-003-copied-data-editable-and-submittable.md",
      "id": "DFMOD-C8-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C8.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify successfully copied data prefills only applicable fields and remains fully editable.",
      "preconditionRefs": [
        "PRE-DF-submitted-report-exists"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C8.3",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "copy-from-previous",
        "pk141",
        "staging"
      ],
      "title": "Copied data is editable and the form can be completed normally",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/digital-form/DFMOD-C8-POS-007-copy-usage-tracking-accurate.md",
      "id": "DFMOD-C8-POS-007",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C8.7; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify copy-usage tracking is accurate across multiple copies and draft-resume.",
      "preconditionRefs": [
        "PRE-DF-submitted-report-exists"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C8.7",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "digital-form",
        "copy-from-previous",
        "pk141",
        "staging"
      ],
      "title": "Copy usage is tracked accurately across multiple copies and draft resume",
      "type": "integration"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C9-POS-001-export-preserves-snapshot-version.md",
      "id": "DFMOD-C9-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C9.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify export keeps each submission bound to its submission-time form version and answers.",
      "preconditionRefs": [
        "PRE-DF-submitted-report-exists"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C9.1",
        "tsdSection": "C9"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "export-report",
        "snapshot",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Export preserves the snapshot version and answer values at submission",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C9-POS-002-dynamic-metadata-vs-answer-snapshot.md",
      "id": "DFMOD-C9-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C9.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify dynamic metadata may follow the latest system state while answers stay snapshotted.",
      "preconditionRefs": [
        "PRE-DF-submitted-report-exists"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C9.2",
        "tsdSection": "C9"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "export-report",
        "snapshot",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Dynamic metadata and answer snapshot are distinguished consistently in export",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C9-POS-003-export-schema-evolution-append-only.md",
      "id": "DFMOD-C9-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C9.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify exporting across versions keeps existing columns and adds new structure append-only.",
      "preconditionRefs": [
        "PRE-DF-submitted-report-exists"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C9.3",
        "tsdSection": "C9"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "export-report",
        "versioning",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Export schema evolution is append-only and backward compatible",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/web/digital-form/DFMOD-C9-POS-004-question-id-continuity-empty-values.md",
      "id": "DFMOD-C9-POS-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK141 TSD C9.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "digital-form",
      "objective": "Verify export keeps a consistent Question ID mapping and uses empty values (never overwrite) for incompatible rows.",
      "preconditionRefs": [
        "PRE-DF-submitted-report-exists"
      ],
      "priority": "P1",
      "product": "web",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK141",
        "tsd": "PK141",
        "tsdScenario": "C9.4",
        "tsdSection": "C9"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "web",
        "digital-form",
        "export-report",
        "question-id",
        "client-portal",
        "pk141",
        "staging"
      ],
      "title": "Question ID continuity and empty-value handling stay stable across versions",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-EDGE-002-download-center-entry-under-no-connection-and-mode-luring.md",
      "id": "OV-C1-EDGE-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.1 edge cases; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the Download Center entry point reacts correctly to connectivity and Mode Luring state when tapped.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.1",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "network",
        "mode-luring",
        "edge-case",
        "pk144",
        "staging"
      ],
      "title": "Download Center entry behaves correctly under NO CONNECTION and Mode Luring ON",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-EDGE-010-storage-tier-limited-reference-route.md",
      "id": "OV-C1-EDGE-010",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.6 (limited-reference branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the storage-tier router presents the Limited-Reference Consent drawer when storage only supports limited reference data.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.6",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "edge-case",
        "pk144",
        "staging"
      ],
      "title": "Storage tier routing: LIMITED_REFERENCE_ONLY shows consent drawer",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-EDGE-021-cache-clear-uninstall-deletes-all-bundles.md",
      "id": "OV-C1-EDGE-021",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.12 (cache-clear branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify that clearing app cache or uninstalling removes all bundles irrespective of retention age.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.12",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "edge-case",
        "pk144",
        "staging"
      ],
      "title": "Cache clear or uninstall deletes all bundles regardless of retention age",
      "type": "recovery"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-EDGE-026-mid-download-storage-runs-out.md",
      "id": "OV-C1-EDGE-026",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.16 (storage failure); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify graceful handling when device storage runs out during a download.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.16",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "edge-case",
        "pk144",
        "staging"
      ],
      "title": "Mid-download storage exhaustion stops download with no partial bundle",
      "type": "recovery"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-EDGE-027-mid-download-network-drops.md",
      "id": "OV-C1-EDGE-027",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.16 (network failure); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify graceful handling when the network drops during a download, preserving any existing bundle.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.16",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "network",
        "edge-case",
        "pk144",
        "staging"
      ],
      "title": "Mid-download network drop stops download and preserves existing bundle",
      "type": "recovery"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-NEG-011-storage-tier-template-not-supported-blocks.md",
      "id": "OV-C1-NEG-011",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.6 (blocking branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the storage-tier router blocks the download and surfaces \"Gagal Mengunduh\" when the device cannot support the template.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.6",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "negative",
        "pk144",
        "staging"
      ],
      "title": "Storage tier routing: TEMPLATE_NOT_SUPPORTED blocks with Gagal Mengunduh",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-NEG-013-limited-reference-consent-batal.md",
      "id": "OV-C1-NEG-013",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.7 (Batal branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify declining the Limited-Reference Consent cancels the download and stores no bundle.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.7",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "negative",
        "pk144",
        "staging"
      ],
      "title": "Limited-Reference consent: Batal cancels download with no bundle stored",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-NEG-018-re-download-blocked-while-dalam-proses.md",
      "id": "OV-C1-NEG-018",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.11 (blocked branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify re-download is blocked while a visitation depending on the bundle is in progress, protecting in-use data.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.11",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "negative",
        "visitation",
        "pk144",
        "staging"
      ],
      "title": "Re-download blocked while a dependent visitation is Dalam Proses",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-NEG-023-single-delete-rejected-when-in-use.md",
      "id": "OV-C1-NEG-023",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.13 (delete rejected); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify deletion is rejected for a bundle still required by an ongoing or queued submission.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.13",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "negative",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Single delete rejected when bundle is used by Dalam Proses or Gagal Kirim",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-001-download-center-entry-point-visible-across-states.md",
      "id": "OV-C1-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the Download Center entry point is always discoverable from the channel list, independent of the current download/storage state.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.1",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Download Center entry point is visible and accessible from channel list",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-003-default-state-with-downloaded-items.md",
      "id": "OV-C1-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.2 (downloaded branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the Download Center summary and list state when downloaded bundles exist.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.2",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Download Center default state with downloaded items shows summary and list",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-004-default-state-empty-no-downloaded-items.md",
      "id": "OV-C1-POS-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.2 (empty branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the Download Center empty state when no bundles have been downloaded.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.2",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Download Center empty state when no bundles are downloaded",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-005-selection-mechanics-drive-cta-state.md",
      "id": "OV-C1-POS-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the \"Unduh Data\" CTA enable/disable state and counter track item selection.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.3",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Item selection mechanics drive the Unduh Data CTA state",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-006-persona-pjp-dropdown-filtering.md",
      "id": "OV-C1-POS-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.4 (PJP branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify persona-based filtering of the downloadable-item dropdown for a PJP employee.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.4",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pjp",
        "pk144",
        "staging"
      ],
      "title": "PJP persona: downloadable-item dropdown shows assigned PJP channels",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-007-persona-non-pjp-dropdown-filtering.md",
      "id": "OV-C1-POS-007",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.4 (Non-PJP branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify persona-based filtering of the downloadable-item dropdown for a Non-PJP employee.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.4",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Non-PJP persona: downloadable-item dropdown shows all authorized channels",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-008-search-filtering-with-selection-persistence.md",
      "id": "OV-C1-POS-008",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.5; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify real-time search filtering and that selections persist across filtering and clearing.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.5",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Search filtering preserves selections in downloadable items list",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-009-storage-tier-full-bundle-route.md",
      "id": "OV-C1-POS-009",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.6 (full-bundle branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the storage-tier router proceeds with a full download when device storage supports the full bundle.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.6",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Storage tier routing: FULL_BUNDLE_SUPPORTED proceeds with full download",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-012-limited-reference-consent-lanjutkan.md",
      "id": "OV-C1-POS-012",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.7 (Lanjutkan branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify accepting the Limited-Reference Consent starts a limited download flagged accordingly.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.7",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Limited-Reference consent: Lanjutkan starts limited download with fallback",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-014-download-progress-modal-and-success-drawer.md",
      "id": "OV-C1-POS-014",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.8; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the blocking download progress modal and its transition to the success drawer.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.8",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Download progress modal blocks UI and resolves to success drawer",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-015-bundle-contents-atomic-and-complete.md",
      "id": "OV-C1-POS-015",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.9; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify a successful full download produces a complete, atomic bundle.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.9",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "integration",
        "pk144",
        "staging"
      ],
      "title": "Downloaded bundle is atomic and contains all required components",
      "type": "integration"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-016-cloud-icon-timestamp-presence-and-update.md",
      "id": "OV-C1-POS-016",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.10 (presence + update); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the cloud-icon timestamp represents bundle presence and refreshes after re-download.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.10",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Cloud-icon timestamp shows bundle presence and updates on re-download",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-017-cloud-icon-absence-when-no-bundle.md",
      "id": "OV-C1-POS-017",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.10 (absence branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the absence of the cloud-icon line is itself the \"no bundle\" visual signal.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P3",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "low",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.10",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "No cloud-icon line rendered when no bundle exists",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-019-re-download-proceeds-after-visitation-completes.md",
      "id": "OV-C1-POS-019",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.11 (unblock branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify re-download is allowed once no dependent visitation is in progress.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.11",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "visitation",
        "pk144",
        "staging"
      ],
      "title": "Re-download proceeds after dependent visitation completes or cancels",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-020-retention-auto-purge-3x24h.md",
      "id": "OV-C1-POS-020",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.12 (auto-purge branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify automatic purge of an unused bundle after the 3×24h retention window.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.12",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Bundle auto-purges after 3×24h with no dependents",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-022-single-delete-from-download-center.md",
      "id": "OV-C1-POS-022",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.13 (delete confirmed); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify per-row deletion of a bundle from the Download Center, including confirmation and UI updates.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.13",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Single delete from Download Center removes bundle after confirmation",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-024-bulk-delete-hapus-semua.md",
      "id": "OV-C1-POS-024",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.14; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify \"Hapus Semua\" deletes eligible bundles while protecting in-use ones and explaining the outcome.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.14",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Bulk delete via Hapus Semua deletes only eligible bundles",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C1-POS-025-download-from-detail-kunjungan-pre-checkin.md",
      "id": "OV-C1-POS-025",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C1.15; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the pre-check-in download entry point on Detail Kunjungan prepares a bundle scoped to the current visitation.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C1.15",
        "tsdSection": "C1"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "visitation",
        "pjp",
        "pk144",
        "staging"
      ],
      "title": "Download from Detail Kunjungan prepares a bundle for the current visitation",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C10-EDGE-001-force-quit-during-download.md",
      "id": "OV-C10-EDGE-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C10.1 (download branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify force-quitting during a download preserves bundle atomicity.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C10.1",
        "tsdSection": "C10"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "edge-case",
        "pk144",
        "staging"
      ],
      "title": "Force-quit during download leaves no partial bundle (atomicity preserved)",
      "type": "recovery"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C10-EDGE-002-force-quit-during-silent-sync-no-duplicate.md",
      "id": "OV-C10-EDGE-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C10.1 (sync branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify force-quitting during silent sync resumes safely with no duplicate backend submissions.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C10.1",
        "tsdSection": "C10"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "perlu-dikirim",
        "edge-case",
        "pk144",
        "staging"
      ],
      "title": "Force-quit during silent sync resumes safely without duplicate records",
      "type": "recovery"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C10-EDGE-003-force-quit-during-form-filling-draft-preserved.md",
      "id": "OV-C10-EDGE-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C10.1 (form branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify force-quitting while filling a form keeps the in-progress draft recoverable.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C10.1",
        "tsdSection": "C10"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "mode-luring",
        "edge-case",
        "pk144",
        "staging"
      ],
      "title": "Force-quit during form filling preserves the in-progress draft",
      "type": "recovery"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C10-EDGE-004-force-quit-mode-luring-remains-active.md",
      "id": "OV-C10-EDGE-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C10.1 (mode luring branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify Mode Luring survives a force-quit and does not silently switch off.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C10.1",
        "tsdSection": "C10"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "mode-luring",
        "edge-case",
        "pk144",
        "staging"
      ],
      "title": "Force-quit with Mode Luring active keeps it active on relaunch",
      "type": "recovery"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C10-EDGE-005-auth-token-expiry-offline-protected.md",
      "id": "OV-C10-EDGE-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C10.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify offline operations are protected when the auth token expires, and sync resumes after re-authentication.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C10.2",
        "tsdSection": "C10"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "auth",
        "sync",
        "edge-case",
        "pk144",
        "staging"
      ],
      "title": "Auth token expiry does not disrupt offline work; sync holds until re-auth",
      "type": "recovery"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C10-EDGE-006-cache-clear-uninstall-data-loss.md",
      "id": "OV-C10-EDGE-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C10.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the data-loss warning and behavior for cache clear / uninstall, plus reinstall recovery.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C10.3",
        "tsdSection": "C10"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "download-center",
        "edge-case",
        "pk144",
        "staging"
      ],
      "title": "Cache clear or uninstall permanently deletes local unsynced data",
      "type": "recovery"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C10-POS-007-cross-surface-status-consistency.md",
      "id": "OV-C10-POS-007",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C10.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify cross-surface consistency of status/presence indicators and live updates without page refresh.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C10.4",
        "tsdSection": "C10"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Status and presence indicators stay consistent across surfaces with live updates",
      "type": "integration"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C2-NEG-011-cannot-disable-mode-luring-with-active-drafts.md",
      "id": "OV-C2-NEG-011",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C2.9 (blocked branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify Mode Luring cannot be switched off while an in-progress visitation exists (data-loss prevention).",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C2.9",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "mode-luring",
        "negative",
        "pk144",
        "staging"
      ],
      "title": "Cannot disable Mode Luring while a visitation is Dalam Proses",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C2-POS-001-fully-online-channel-list-no-prompts.md",
      "id": "OV-C2-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C2.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the homepage renders the correct channel list per persona with no connectivity popups while fully online.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C2.1",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "visitation",
        "pjp",
        "network",
        "pk144",
        "staging"
      ],
      "title": "Fully Online: channel list visible for both personas without connectivity prompts",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C2-POS-002-fully-online-complete-visitation-flow.md",
      "id": "OV-C2-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C2.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify a fully online visitation completes immediately with no Gagal Kirim entries.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C2.2",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "visitation",
        "smoke",
        "pk144",
        "staging"
      ],
      "title": "Fully Online: complete visitation flow end-to-end with live backend data",
      "type": "smoke"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C2-POS-003-fully-online-draft-mirror-and-flush.md",
      "id": "OV-C2-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C2.3 (mirror + flush); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify online draft saving mirrors to backend and local, and local copies flush on successful completion.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C2.3",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "visitation",
        "pk144",
        "staging"
      ],
      "title": "Fully Online: draft mirrored to server and local, flushed on completion",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C2-POS-004-local-draft-persists-when-not-completed.md",
      "id": "OV-C2-POS-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C2.3 (persist branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify local draft copies remain on device when a visit has not yet completed.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C2.3",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "visitation",
        "pk144",
        "staging"
      ],
      "title": "Local draft persists when visit not completed and app closed",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C2-POS-005-fully-offline-review-plan-at-office.md",
      "id": "OV-C2-POS-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C2.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the employee can review the full day plan at the office before going offline.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C2.4",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "visitation",
        "pk144",
        "staging"
      ],
      "title": "Fully Offline prep: review full plan at office with good connection",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C2-POS-006-fully-offline-bulk-pre-download.md",
      "id": "OV-C2-POS-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C2.5; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify bulk pre-download of reference data for multiple selected items succeeds with presence indicators.",
      "preconditionRefs": [
        "PRE-OV-download-center-open"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C2.5",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Fully Offline prep: bulk pre-download of multiple channels/visitations",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C2-POS-007-activate-mode-luring-filters-list.md",
      "id": "OV-C2-POS-007",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C2.6; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify activating Mode Luring before leaving shows the banner and filters the channel list.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C2.6",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "mode-luring",
        "pk144",
        "staging"
      ],
      "title": "Fully Offline prep: activating Mode Luring filters list to downloaded items",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C2-POS-008-fully-offline-complete-visits-atomic-queue.md",
      "id": "OV-C2-POS-008",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C2.7; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify offline completion of each visit produces one atomic queue entry and allows immediate continuation.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C2.7",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "mode-luring",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Fully Offline: completing each visit saves one atomic Gagal Kirim entry",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C2-POS-009-connection-returns-auto-sync-drains-queue.md",
      "id": "OV-C2-POS-009",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C2.8 (Auto-Sync ON); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the queue drains automatically when the connection returns and Auto-Sync is ON.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C2.8",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Connection returns with Auto-Sync ON: queue drains automatically",
      "type": "integration"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C2-POS-010-connection-returns-auto-sync-off-manual-required.md",
      "id": "OV-C2-POS-010",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C2.8 (Auto-Sync OFF); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the queue does NOT drain automatically when Auto-Sync is OFF.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C2.8",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Connection returns with Auto-Sync OFF: manual send required",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C2-POS-012-can-disable-mode-luring-after-visits-complete.md",
      "id": "OV-C2-POS-012",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C2.9 (enabled branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify Mode Luring can be disabled once no visitation is in progress.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C2.9",
        "tsdSection": "C2"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "mode-luring",
        "pk144",
        "staging"
      ],
      "title": "Can disable Mode Luring once all Dalam Proses visits complete or cancel",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C3-NEG-008-local-save-failure-no-success-no-partial.md",
      "id": "OV-C3-NEG-008",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C3.6 (failure branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify graceful handling when local persistence fails on offline submission.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C3.6",
        "tsdSection": "C3"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "negative",
        "pk144",
        "staging"
      ],
      "title": "Local save failure shows no success drawer and stores no partial item",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C3-POS-001-offline-submission-saves-locally-with-confirmation.md",
      "id": "OV-C3-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C3.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify completing a visitation offline saves an atomic queue entry and shows the confirmation drawer.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C3.1",
        "tsdSection": "C3"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Offline submission saves an atomic local queue entry with confirmation",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C3-POS-002-gagal-kirim-entry-point-and-count.md",
      "id": "OV-C3-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C3.2 (populated branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the Gagal Kirim homepage entry point and its count behavior.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C3.2",
        "tsdSection": "C3"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Gagal Kirim homepage indicator shows count and updates on changes",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C3-POS-003-gagal-kirim-empty-state.md",
      "id": "OV-C3-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C3.2 (empty branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the Gagal Kirim entry point when the queue is empty.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P3",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "low",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C3.2",
        "tsdSection": "C3"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Gagal Kirim indicator hidden or inactive when queue is empty",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C3-POS-004-gagal-kirim-queue-list-view.md",
      "id": "OV-C3-POS-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C3.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the Gagal Kirim queue page layout and per-item metadata.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C3.3",
        "tsdSection": "C3"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Gagal Kirim queue list view renders summary, controls, and item metadata",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C3-POS-005-gagal-kirim-search-filtering.md",
      "id": "OV-C3-POS-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C3.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify search filtering, no-results state, and restore in the Gagal Kirim queue.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "low",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C3.4",
        "tsdSection": "C3"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Search filtering in Gagal Kirim queue with no-results and restore",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C3-POS-006-queue-item-status-lifecycle.md",
      "id": "OV-C3-POS-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C3.5; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the queue item status transitions and that status is consistent between list and detail views.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C3.5",
        "tsdSection": "C3"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "sync",
        "pk144",
        "staging"
      ],
      "title": "Queue item status lifecycle is consistent across views",
      "type": "integration"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C3-POS-007-local-save-completes-before-success-shown.md",
      "id": "OV-C3-POS-007",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C3.6 (success branch); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the success drawer appears only when local persistence has succeeded.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C3.6",
        "tsdSection": "C3"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Success drawer shown only after local persistence succeeds",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C4-EDGE-010-sync-integrity-during-app-interruption.md",
      "id": "OV-C4-EDGE-010",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C4.8; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify sync state survives app interruption without producing duplicate backend records.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C4.8",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "edge-case",
        "pk144",
        "staging"
      ],
      "title": "Sync integrity preserved across app restart and force-close (no duplicates)",
      "type": "recovery"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C4-NEG-004-auto-sync-off-no-auto-trigger.md",
      "id": "OV-C4-NEG-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C4.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify no automatic sync occurs when Auto Sync is OFF.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C4.4",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "negative",
        "pk144",
        "staging"
      ],
      "title": "Auto Sync OFF: no automatic sync even on GOOD network",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C4-NEG-006-kirim-semua-disabled-states.md",
      "id": "OV-C4-NEG-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C4.5 (disabled states); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the \"Kirim Semua\" button is disabled in the two blocking conditions.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C4.5",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "negative",
        "network",
        "pk144",
        "staging"
      ],
      "title": "Kirim Semua disabled when a Mengirim item exists or under NO CONNECTION",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C4-NEG-009-kirim-ulang-no-connection-blocked.md",
      "id": "OV-C4-NEG-009",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C4.7 (NO CONNECTION); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify resend is prevented under NO CONNECTION.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C4.7",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "negative",
        "network",
        "pk144",
        "staging"
      ],
      "title": "Kirim Ulang disabled or blocked under NO CONNECTION",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C4-NEG-011-visitation-atomicity-partial-rejection.md",
      "id": "OV-C4-NEG-011",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C4.9; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify a queued visitation syncs atomically: partial backend rejection keeps the whole item failed.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C4.9",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "negative",
        "pk144",
        "staging"
      ],
      "title": "Visitation atomicity: any rejected part keeps the whole in Gagal Kirim",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C4-POS-001-auto-sync-dual-entry-points.md",
      "id": "OV-C4-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C4.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify both entry points reach the same Auto Sync configuration page and the default is OFF.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C4.1",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "pk144",
        "staging"
      ],
      "title": "Auto Sync configuration reachable from two entry points, default OFF",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C4-POS-002-toggle-auto-sync-persists.md",
      "id": "OV-C4-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C4.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the Auto Sync preference persists and does not itself trigger a sync.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C4.2",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "pk144",
        "staging"
      ],
      "title": "Auto Sync toggle persists across entry points and app restart",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C4-POS-003-auto-sync-triggers-when-conditions-met.md",
      "id": "OV-C4-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C4.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify Auto Sync starts and resolves silently when conditions are met.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C4.3",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Auto Sync triggers silently when network stable and queue has items",
      "type": "integration"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C4-POS-005-kirim-semua-enabled-state-matrix.md",
      "id": "OV-C4-POS-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C4.5 (enabled states); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the \"Kirim Semua\" button is enabled for sendable queue contents on GOOD network.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C4.5",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Kirim Semua enabled on GOOD network for sendable queue contents",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C4-POS-007-kirim-semua-bulk-sync-execution.md",
      "id": "OV-C4-POS-007",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C4.6; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify bulk sync transitions all eligible items and resolves each visitation atomically.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C4.6",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Kirim Semua bulk sync is atomic per visitation with mixed outcomes",
      "type": "integration"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C4-POS-008-kirim-ulang-from-detail-good-network.md",
      "id": "OV-C4-POS-008",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C4.7 (GOOD network); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify single-item resend from Detail Kunjungan on GOOD network.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C4.7",
        "tsdSection": "C4"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Kirim Ulang from Detail Kunjungan syncs a single item on GOOD network",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C5-NEG-004-hapus-semua-disabled-when-mengirim.md",
      "id": "OV-C5-NEG-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C5.3 (disabled state); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify \"Hapus Semua\" is disabled when a send is in progress.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C5.3",
        "tsdSection": "C5"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "negative",
        "pk144",
        "staging"
      ],
      "title": "Hapus Semua disabled while any item is in Mengirim status",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C5-POS-001-queue-retention-3-days-expiry.md",
      "id": "OV-C5-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C5.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify queue retention expiry removes items permanently without moving them to Riwayat.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C5.1",
        "tsdSection": "C5"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Queue items expire after 3-day retention and are not recoverable",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C5-POS-002-pre-expiration-warning-notification.md",
      "id": "OV-C5-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C5.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the D-1 pre-expiration warning content and that it is informational only.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C5.2",
        "tsdSection": "C5"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Pre-expiration warning notification fires at D-1 and does not extend retention",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C5-POS-003-hapus-semua-bulk-deletion-confirmation.md",
      "id": "OV-C5-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C5.3 (confirm/cancel); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify bulk deletion of queue items via \"Hapus Semua\" with confirmation and cancel paths.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C5.3",
        "tsdSection": "C5"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Hapus Semua deletes eligible queue items after confirmation",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C5-POS-005-single-deletion-from-detail-kunjungan.md",
      "id": "OV-C5-POS-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C5.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify single-item deletion from Detail Kunjungan, including the Mengirim guard and cancel path.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C5.4",
        "tsdSection": "C5"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Single deletion from Detail Kunjungan with confirmation and Mengirim guard",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C5-POS-006-expired-items-dont-affect-achievements.md",
      "id": "OV-C5-POS-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C5.5; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify achievement count is unaffected by queue expiry and only corrected on successful sync.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C5.5",
        "tsdSection": "C5"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Expired queue items do not change local achievement count",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C6-NEG-006-perbaiki-validation-blocks-progression.md",
      "id": "OV-C6-NEG-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C6.4 (validation gate); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify local validation prevents progression while errors remain.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C6.4",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "negative",
        "validation",
        "pk144",
        "staging"
      ],
      "title": "Local validation blocks progression until correction passes",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C6-POS-001-failure-reason-classification-and-storage.md",
      "id": "OV-C6-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C6.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify failed submissions are classified by fixability and that only the latest failure reason is stored.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C6.1",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "sync",
        "pk144",
        "staging"
      ],
      "title": "Failure reason classified by fixability and stored as latest only",
      "type": "integration"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C6-POS-002-view-failed-sync-detail.md",
      "id": "OV-C6-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C6.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the failed sync detail view content and the Aktivitas correction indicator.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C6.2",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Failed sync detail page shows status, data, and plain-language reason",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C6-POS-003-action-availability-fixable-and-retryable.md",
      "id": "OV-C6-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C6.3 (fixable/retryable); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify available actions match queue status and failure type for fixable/retryable cases.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C6.3",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Action availability matrix for fixable and retryable failures",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C6-POS-004-action-availability-non-fixable.md",
      "id": "OV-C6-POS-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C6.3 (non-fixable); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify non-fixable business failures expose no correction path, only deletion with guidance.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C6.3",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Non-fixable failure offers only Hapus with escalation guidance",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C6-POS-005-perbaiki-flow-prefill-and-validation.md",
      "id": "OV-C6-POS-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C6.4 (pre-fill + highlights); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the Perbaiki flow re-opens the form pre-filled with clear validation messaging.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C6.4",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "validation",
        "pk144",
        "staging"
      ],
      "title": "Perbaiki opens form pre-filled with validation highlights",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C6-POS-007-save-corrected-submission-locally.md",
      "id": "OV-C6-POS-007",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C6.5; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify saving a correction persists locally and re-enables resend.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C6.5",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Corrected submission saved locally replaces failed payload",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C6-POS-008-resync-corrected-submission.md",
      "id": "OV-C6-POS-008",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C6.6; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify resend eligibility rules and atomic resync outcomes for a corrected submission.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C6.6",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "sync",
        "pk144",
        "staging"
      ],
      "title": "Resync of corrected submission is atomic with reason update on failure",
      "type": "integration"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C6-POS-009-failure-reason-overwritten-on-repeat-failure.md",
      "id": "OV-C6-POS-009",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C6.7; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify only the most recent failure reason is retained on repeated failures.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C6.7",
        "tsdSection": "C6"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "Stored failure reason overwritten (not appended) on repeat failure",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C7-POS-001-continuous-network-monitoring.md",
      "id": "OV-C7-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C7.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify background network quality checks run at the right moments and only interrupt the UI on state change.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C7.1",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "network",
        "pk144",
        "staging"
      ],
      "title": "Continuous network monitoring is silent unless state changes",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C7-POS-002-platform-specific-signal-parity.md",
      "id": "OV-C7-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C7.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify iOS and Android compute signal differently but produce identical NO CONNECTION classification and downstream behavior.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C7.2",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "network",
        "pk144",
        "staging"
      ],
      "title": "Platform-specific signal computation yields identical downstream behavior",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C7-POS-003-drawer-routing-matrix-2-state.md",
      "id": "OV-C7-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C7.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the 2-state routing matrix selects the correct resulting UI and re-evaluates on the right triggers.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C7.3",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "network",
        "mode-luring",
        "pk144",
        "staging"
      ],
      "title": "Drawer routing matrix resolves UI from network, bundle, and Mode Luring",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C7-POS-004-koneksi-tidak-stabil-drawer-unduh-data.md",
      "id": "OV-C7-POS-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C7.4 (Unduh Data); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the \"Koneksi Tidak Stabil\" drawer content and the \"Unduh Data\" path with no existing bundle.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C7.4",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "network",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Koneksi Tidak Stabil drawer offers download via storage pre-check",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C7-POS-005-koneksi-tidak-stabil-dismiss-and-suppress.md",
      "id": "OV-C7-POS-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C7.4 (dismiss/suppress); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify dismissing the \"Koneksi Tidak Stabil\" drawer suppresses it while monitoring continues.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C7.4",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "network",
        "pk144",
        "staging"
      ],
      "title": "Koneksi Tidak Stabil drawer dismiss suppresses for the session",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C7-POS-006-drawer-re-fire-and-suppression-reset.md",
      "id": "OV-C7-POS-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C7.5; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify drawer re-fire conditions, suppression reset boundaries, and per-drawer suppression isolation.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C7.5",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "network",
        "pk144",
        "staging"
      ],
      "title": "Connectivity drawer re-fires on triggers and resets suppression correctly",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C7-POS-007-tidak-ada-koneksi-drawer-aktifkan-and-coba-lagi.md",
      "id": "OV-C7-POS-007",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C7.6 (Aktifkan/Coba Lagi); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the \"Tidak ada Koneksi\" drawer content and its Aktifkan Mode Luring / Coba Lagi paths.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C7.6",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "network",
        "mode-luring",
        "pk144",
        "staging"
      ],
      "title": "Tidak ada Koneksi drawer: Aktifkan Mode Luring and Coba Lagi paths",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C7-POS-008-tidak-ada-koneksi-abaikan-blocks-backend.md",
      "id": "OV-C7-POS-008",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C7.6 (Abaikan); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify dismissing the \"Tidak ada Koneksi\" drawer via Abaikan leaves the employee online with backend actions blocked.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C7.6",
        "tsdSection": "C7"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "network",
        "pk144",
        "staging"
      ],
      "title": "Tidak ada Koneksi Abaikan keeps Fully Online; backend actions blocked, local works",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C8-NEG-008-exit-blocked-when-dalam-proses.md",
      "id": "OV-C8-NEG-008",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C8.7 (blocked exit); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify exit from Mode Luring is blocked when an in-progress visit exists, preventing data loss.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C8.7",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "mode-luring",
        "negative",
        "pk144",
        "staging"
      ],
      "title": "Mode Luring exit blocked while a Dalam Proses visit exists",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C8-POS-001-mode-luring-activation-entry-points.md",
      "id": "OV-C8-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C8.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the two Mode Luring activation paths, explicit toggle requirement, and persistence.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C8.1",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "mode-luring",
        "pk144",
        "staging"
      ],
      "title": "Mode Luring activates only via explicit toggle from two entry paths",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C8-POS-002-persistent-mode-luring-banner.md",
      "id": "OV-C8-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C8.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the persistent Mode Luring banner across visitation screens and its removal on deactivation.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C8.2",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "mode-luring",
        "pk144",
        "staging"
      ],
      "title": "Persistent Mode Luring Aktif banner shown on visitation screens",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C8-POS-003-feature-availability-filtered-list.md",
      "id": "OV-C8-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C8.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify channel-list filtering and feature availability while Mode Luring is active.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C8.3",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "mode-luring",
        "pjp",
        "pk144",
        "staging"
      ],
      "title": "Mode Luring filters channel list and disables backend-only features",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C8-POS-004-check-in-check-out-offline.md",
      "id": "OV-C8-POS-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C8.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify offline check-in/check-out using local data, including map-failure resilience.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C8.4",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "mode-luring",
        "visitation",
        "pk144",
        "staging"
      ],
      "title": "Offline check-in and check-out run on local data without backend",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C8-POS-005-form-filling-under-mode-luring-cached.md",
      "id": "OV-C8-POS-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C8.5; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify offline form filling sources options from the cached bundle with full validation and correct target handling.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C8.5",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "mode-luring",
        "validation",
        "pk144",
        "staging"
      ],
      "title": "Form filling under Mode Luring uses cached data with validation intact",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C8-POS-006-offline-submission-counted-as-achievement.md",
      "id": "OV-C8-POS-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C8.6; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify offline submissions count as achievements immediately and reconcile on sync.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C8.6",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "mode-luring",
        "pk144",
        "staging"
      ],
      "title": "Offline submission counts immediately as achievement, reconciled on sync",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C8-POS-007-deliberate-exit-flow.md",
      "id": "OV-C8-POS-007",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C8.7 (exit path); pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify the deliberate exit flow from Mode Luring and the patchy-network re-fire edge case.",
      "preconditionRefs": [
        "PRE-OV-mode-luring-active"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C8.7",
        "tsdSection": "C8"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "mode-luring",
        "pk144",
        "staging"
      ],
      "title": "Deliberate Mode Luring exit requires manual toggle (intentional friction)",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C9-NEG-004-pjp-multi-device-sync-rejected.md",
      "id": "OV-C9-NEG-004",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C9.4; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify a PJP single-use target rejects a later sync from a second device while keeping the failed item locally.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C9.4",
        "tsdSection": "C9"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "negative",
        "pjp",
        "perlu-dikirim",
        "pk144",
        "staging"
      ],
      "title": "PJP multi-device: late sync rejected because target already achieved",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C9-NEG-005-same-visitation-id-status-conflict.md",
      "id": "OV-C9-NEG-005",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C9.5; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify status-conflict rejection when the same visitation advances on another device.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P0",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "critical",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C9.5",
        "tsdSection": "C9"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "negative",
        "pk144",
        "staging"
      ],
      "title": "Same visitation ID: sync rejected on backend status conflict",
      "type": "negative"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C9-POS-001-persona-identification-source-of-truth.md",
      "id": "OV-C9-POS-001",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C9.1; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify persona is determined by backend configuration, persisted per session, and treated as a single value.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C9.1",
        "tsdSection": "C9"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "pjp",
        "pk144",
        "staging"
      ],
      "title": "Persona is backend-sourced, single-value, and never inferred on mobile",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C9-POS-002-persona-driven-downstream-routing.md",
      "id": "OV-C9-POS-002",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C9.2; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify persona value consistently drives downstream behavior across connectivity states.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C9.2",
        "tsdSection": "C9"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "pjp",
        "sync",
        "pk144",
        "staging"
      ],
      "title": "Persona drives filtering, download scope, and sync rejection rules",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C9-POS-003-non-pjp-multi-device-both-succeed.md",
      "id": "OV-C9-POS-003",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C9.3; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify Non-PJP re-visits from two devices both record as separate visitations.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C9.3",
        "tsdSection": "C9"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "sync",
        "pk144",
        "staging"
      ],
      "title": "Non-PJP multi-device: both submissions persist as separate records",
      "type": "integration"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C9-POS-006-multi-device-failure-non-blocking-behavior.md",
      "id": "OV-C9-POS-006",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C9.6; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify user-facing behavior for multi-device failure cases is non-blocking and explained.",
      "preconditionRefs": [
        "PRE-OV-gagal-kirim-has-items"
      ],
      "priority": "P1",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "high",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C9.6",
        "tsdSection": "C9"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "perlu-dikirim",
        "sync",
        "pk144",
        "staging"
      ],
      "title": "Multi-device failures follow non-blocking silent retry with clear reason",
      "type": "functional"
    },
    {
      "automationRef": null,
      "automationStatus": "planned",
      "blockedBy": null,
      "duplicateOf": null,
      "file": "testcases/mobile/offline-visitation/OV-C9-POS-007-device-local-bundle-scoping.md",
      "id": "OV-C9-POS-007",
      "lastReviewedAt": null,
      "lifecycleReason": "AI-generated draft from PK144 TSD C9.7; pending QA review.",
      "lifecycleStatus": "active",
      "module": "offline-visitation",
      "objective": "Verify downloaded bundles and queues are scoped per device.",
      "preconditionRefs": [
        "PRE-OV-logged-in-online"
      ],
      "priority": "P2",
      "product": "mobile",
      "reviewedBy": null,
      "risk": "medium",
      "sourceRefs": {
        "jira": null,
        "prd": "PK144",
        "tsd": "PK144",
        "tsdScenario": "C9.7",
        "tsdSection": "C9"
      },
      "status": "draft",
      "supersededBy": null,
      "tags": [
        "mobile",
        "offline-visitation",
        "download-center",
        "pk144",
        "staging"
      ],
      "title": "Downloaded bundles are device-local and not shared across devices",
      "type": "functional"
    }
  ]
}
