# Experiment: Duplicate Batch Re-upload Date: 2026-06-24 Phase: 24 — Climate Resilience Verification ## 1. Hypothesis If I POST the same `batchReference` twice to `/api/v1/sync/batches`, I expect the second request to return the existing batch id with only one row in `clinical_sync_batches`, because batch reference is the idempotency key for gateway sync. ## 2. Baseline - Test: `ClinicalSyncBatchTests.DuplicateBatchReference_ReturnsExisting` - Fixture: `ApiFixture` with `GatewayRegistrySeeder` and active encounter - Gateway auth: `X-Api-Key` + `X-Gateway-Id` ## 3. Break ```bash dotnet test VigilCareClinicalAPI.Tests \ --filter "FullyQualifiedName~ClinicalSyncBatchTests.DuplicateBatchReference_ReturnsExisting" ``` The test posts identical `ClinicalSyncBatchRequest` (same `batchReference`) twice. ## 4. Observe - First POST: HTTP 201 Created, returns `batchId` - Second POST: returns **same** `batchId` as first response - Database: exactly **1** row in `clinical_sync_batches` for that `batchReference` - Test result: **Passed** (702 ms) ## 5. Fix / Outcome - Bug found? **no** - Fix applied: no fix needed — by design ## 6. Verify (Assertions captured in `2026-06-24-duplicate-batch-fixed.json`)