---
id: OV-C6-POS-008
title: "Resync of corrected submission is atomic with reason update on failure"
product: mobile
module: offline-visitation
type: integration
priority: P1
risk: high
status: draft
automationStatus: planned
sourceRefs:
  tsd: PK144
  tsdSection: C6
  tsdScenario: C6.6
  prd: PK144
  jira: null
automationRef: null
lifecycleStatus: active
lifecycleReason: "AI-generated draft from PK144 TSD C6.6; pending QA review."
lastReviewedAt: null
reviewedBy: null
supersededBy: null
duplicateOf: null
blockedBy: null
preconditionRefs:
  - PRE-OV-gagal-kirim-has-items
tags:
  - mobile
  - offline-visitation
  - perlu-dikirim
  - sync
  - pk144
  - staging
---
## Objective
Verify resend eligibility rules and atomic resync outcomes for a corrected submission.

## Preconditions
- See [[PRE-OV-gagal-kirim-has-items]]
- And a corrected submission is ready to resend

## Steps
1. Verify "Kirim Ulang" eligibility per failure type
2. When the employee taps "Kirim Ulang"

## Expected Result
- Then "Kirim Ulang" requires a saved valid correction for validation failures, is directly available for retryable system/network failures, and is NOT available for non-fixable (only Hapus)
- And on tap, resync starts for THAT item only, the button becomes "Mengirim" (disabled), and the list item also shows "Mengirim"
- And on success the item is removed, the visitation appears in Riwayat AND Riwayat Tugas, and the count decreases
- And on failure it stays in the queue as "Gagal Terkirim" with the failure reason updated to the MOST RECENT
- And resync remains atomic for the full visitation

## Source Traceability
- TSD: PK144
- Section: C6 - Modification & Resync
- Scenario: C6.6 - Resync corrected submission
- Acceptance Criteria: M.31 AC1–AC7

## Evidence Required
- Screen recording of resync success and failure paths.

## Notes / Gaps
- No gap.
