Author: Claude Code for jmpicnic | Date: 2026-03-31 | Status: Draft
Bidirectional traceability between requirements and
acceptance criteria from the goal. Status column tracks
verification progress during implementation.
Note: AC numbers correspond to the goal.md Success Criteria numbering and
are intentionally non-sequential within sections to preserve traceability.
| AC | Req | Acceptance Criterion | Verification Method | Status |
|---|
| 1 | REQ-BE-002 | AssetKeyGeneratorTest — key format <tenantId>/images/<uuid>.<ext>, tenant prefix, UUID uniqueness, extension mapping | Unit test | Pending |
| 2 | REQ-BE-003, REQ-BE-007, REQ-BE-008 | CdnUrlResolverTest — URL construction, pattern validation (rejects non-CDN), tenant isolation (rejects cross-tenant), null handling | Unit test | Pending |
| 3 | REQ-BE-001, REQ-BE-005, REQ-BE-006 | S3AssetServiceTest — presigned POST form with all 7 policy conditions, HEAD verification, metadata validation | Integration test (MockAWS) | Pending |
| 6 | REQ-BE-004, REQ-BE-013, REQ-BE-014, REQ-BE-015, REQ-BE-016 | ImageUploadEndpointTest — auth, presigned generation, response includes uploadUrl, formFields, objectKey, cdnUrl | Integration test (Harness + MockAWS) | Pending |
| AC | Req | Acceptance Criterion | Verification Method | Status |
|---|
| 7 | REQ-BE-007, REQ-BE-008, REQ-BE-009 | Entity update with CDN-pattern imageUrl succeeds after HEAD verification | Integration test | Pending |
| 8 | REQ-BE-007 | Entity update with non-CDN imageUrl rejected (400) | Integration test | Pending |
| 9 | REQ-BE-010 | Entity update with imageUrl: null clears the image field | Integration test | Pending |
| 10 | REQ-BE-011 | Entity update with unchanged non-CDN imageUrl succeeds without validation (TD-15) | Integration test | Pending |
| AC | Req | Acceptance Criterion | Verification Method | Status |
|---|
| 11 | REQ-BE-017, REQ-BE-018 | pre-install.cfn.yml includes IAM policies for image asset bucket and presigning role | Code review | Pending |
| 16 | REQ-BE-019 | Helm configmap includes all required image infrastructure values; Helm lint passes | Code review + Helm lint | Pending |
| AC | Req | Acceptance Criterion | Verification Method | Status |
|---|
| 4 | REQ-BE-022 | Existing CsvS3DirectAccessTest and S3BucketAccessTest pass after refactoring | Unit test (existing) | Pending |
| 13 | REQ-BE-021, REQ-BE-022 | No regressions in existing CSV upload functionality | Unit test (existing) | Pending |
| AC | Req | Acceptance Criterion | Verification Method | Status |
|---|
| 5 | REQ-BE-NFR-004 | common-module builds successfully (make clean build) | Build output | Pending |
| 12 | REQ-BE-NFR-004 | operations builds successfully (make clean build) | Build output | Pending |
| 14 | REQ-BE-NFR-003 | Code coverage meets or exceeds Gradle targets for both repositories | Build output | Pending |
| 15 | — | CHANGELOGs updated for both common-module and operations | Code review | Pending |
| Requirement | Acceptance Criteria | Covered |
|---|
| REQ-BE-001 | 3, 6 | Yes |
| REQ-BE-002 | 1 | Yes |
| REQ-BE-003 | 2 | Yes |
| REQ-BE-004 | 6, 7 | Yes |
| REQ-BE-005 | 3 | Yes |
| REQ-BE-006 | — | Implicit (bitemporal Universe) |
| REQ-BE-007 | 2, 7, 8, 10 | Yes |
| REQ-BE-008 | 2, 7 | Yes |
| REQ-BE-009 | 7 | Yes |
| REQ-BE-010 | 9 | Yes |
| REQ-BE-011 | 10 | Yes |
| REQ-BE-012 | — | Implicit (bitemporal Universe) |
| REQ-BE-013 | 6 | Yes |
| REQ-BE-014 | 6 | Yes |
| REQ-BE-015 | 6 | Yes |
| REQ-BE-016 | 6 | Yes |
| REQ-BE-017 | 11 | Yes |
| REQ-BE-018 | 11 | Yes |
| REQ-BE-019 | 16 | Yes |
| REQ-BE-020 | 3, 4 | Yes |
| REQ-BE-021 | 4, 13 | Yes |
| REQ-BE-022 | 4, 13 | Yes |
| REQ-BE-NFR-001 | — | Deferred to Phase 2c (live verification) |
| REQ-BE-NFR-002 | 1, 3 | Yes |
| REQ-BE-NFR-003 | 14 | Yes |
| REQ-BE-NFR-004 | 5, 12 | Yes |
| Category | Criteria Count | Automated | Manual/Review | Deferred |
|---|
| Presigned Credential Generation | 4 | 4 | 0 | 0 |
| Entity Persistence and Validation | 4 | 4 | 0 | 0 |
| Infrastructure | 2 | 0 | 2 | 0 |
| Refactoring and Regression | 2 | 2 | 0 | 0 |
| Build and Coverage | 4 | 2 | 2 | 0 |
| Total | 16 | 12 | 4 | 0 |
Copyright: (c) Arda Systems 2025-2026, All rights reserved