---
id: OV-C4-NEG-011
title: "Visitation atomicity: any rejected part keeps the whole in Gagal Kirim"
product: mobile
module: offline-visitation
type: negative
priority: P0
risk: critical
status: draft
automationStatus: planned
sourceRefs:
  tsd: PK144
  tsdSection: C4
  tsdScenario: C4.9
  prd: PK144
  jira: null
automationRef: null
lifecycleStatus: active
lifecycleReason: "AI-generated draft from PK144 TSD C4.9; pending QA review."
lastReviewedAt: null
reviewedBy: null
supersededBy: null
duplicateOf: null
blockedBy: null
preconditionRefs:
  - PRE-OV-gagal-kirim-has-items
tags:
  - mobile
  - offline-visitation
  - sync
  - negative
  - pk144
  - staging
---
## Objective
Verify a queued visitation syncs atomically: partial backend rejection keeps the whole item failed.

## Preconditions
- See [[PRE-OV-gagal-kirim-has-items]]
- And a queued visitation contains visit-level data plus multiple task report drafts

## Steps
1. When sync is attempted
2. And ANY part is rejected by the backend

## Expected Result
- Then the ENTIRE visitation remains in Gagal Kirim (Gagal Terkirim)
- And no partial success is recorded on backend
- And local draft copies are NOT flushed

## Source Traceability
- TSD: PK144
- Section: C4 - Sync Strategy
- Scenario: C4.9 - Visitation atomicity (visit + tasks)
- Acceptance Criteria: Cross-cutting, ref M.21 AC4

## Evidence Required
- Backend state showing no partial record; local drafts retained.

## Notes / Gaps
- No gap.
