chore: initialize from backend template 0a6dd0e
This commit is contained in:
@@ -0,0 +1,94 @@
|
||||
# Object Storage Batch E Pause Checkpoint
|
||||
|
||||
- Recorded: 2026-07-29 (Asia/Seoul)
|
||||
- Branch: `codex/objectstorage-production-capability`
|
||||
- Worktree:
|
||||
`/home/donghyeon/workspace/clean-architecture-backend-template-objectstorage`
|
||||
- Status: implementation in progress; intentionally paused at the user's request
|
||||
- Evidence grade: local unit/integration/architecture evidence only; no AWS R2 evidence
|
||||
|
||||
## Implemented at this checkpoint
|
||||
|
||||
- Staged integrity verification, fake-scanner routing, publication handoff fencing, and stable
|
||||
replay receipts.
|
||||
- Additive Poster V8 dual-read schema (renumbered from branch-local V7 during JPA integration),
|
||||
upload/retirement intents, HMAC-sanitized idempotency scope,
|
||||
PostgreSQL atomic claim SPI, and forward-only migration qualification lane.
|
||||
- Short-transaction Poster image publication flow and additive locator-free `202` API under the
|
||||
AIP-122-compatible `/posters/{id}/imagePublications` collection.
|
||||
- Exact-reference/version logical retirement enqueue, lease/fence takeover, response-loss retry,
|
||||
Poster deletion survival, and disabled-by-default worker composition.
|
||||
- Isolated legacy migration contracts, report-only inspection, two-distinct-approver Ed25519
|
||||
approval verification, nonce replay boundary, and explicit maintenance-only composition.
|
||||
|
||||
## Verification completed
|
||||
|
||||
The following focused command passed after the final architecture fixes:
|
||||
|
||||
```bash
|
||||
cd src
|
||||
./gradlew \
|
||||
:sample-portfolio:spotlessApply \
|
||||
:sample-portfolio:test --tests '*PosterImagePublicationControllerWireTest' \
|
||||
:app-bootstrap:test --tests '*CleanArchitectureTest' \
|
||||
--console=plain
|
||||
```
|
||||
|
||||
The following focused suites also passed during this checkpoint:
|
||||
|
||||
```bash
|
||||
./gradlew :adapter:outbound:objectstorage:test \
|
||||
--tests '*LegacyObjectAdoptionServiceTest' \
|
||||
--tests '*LegacyAdoptionApprovalVerifierTest' \
|
||||
--tests '*ObjectStorageLegacyMigrationConfigTest' --console=plain
|
||||
|
||||
./gradlew :sample-portfolio:test \
|
||||
--tests '*DeletePosterImageRetirementTest' \
|
||||
--tests '*PosterImageRetirementCrashMatrixTest' \
|
||||
--tests '*PosterImageRetirementConfigTest' \
|
||||
--tests '*LegacyPosterImageUploadCharacterizationTest' --console=plain
|
||||
|
||||
./gradlew :sample-portfolio:test \
|
||||
--tests '*SampleApplicationContextTest' \
|
||||
:sample-portfolio:posterImageMigrationTest --console=plain
|
||||
```
|
||||
|
||||
The migration lane included
|
||||
`PosterImageRetirementQualificationTest`, which proved that an exact retirement row survives
|
||||
deletion of its Poster row.
|
||||
|
||||
## Failures found and resolved
|
||||
|
||||
- `spotlessJavaCheck` initially found formatting drift in newly changed application-core and
|
||||
persistence files. The owner-module Spotless apply tasks fixed it.
|
||||
- `SampleApplicationContextTest` initially failed because Spring's persistence exception advisor
|
||||
could not CGLIB-proxy the final `PosterImageAttachmentCasRepository`. Removing `final` fixed the
|
||||
context; the focused context suite then passed.
|
||||
- `CleanArchitectureTest` initially rejected an application-core return type from the sample domain
|
||||
and the kebab-case `image-publications` path. Conversion moved back to the application use case,
|
||||
and the endpoint changed to the repository's AIP-122-compatible `imagePublications` segment. The
|
||||
complete focused architecture suite then passed.
|
||||
|
||||
## Not yet re-run / not complete
|
||||
|
||||
- The combined Batch E checkpoint command stopped on the two architecture failures above before all
|
||||
requested root tasks could complete. The focused failing suites passed after the fixes, but
|
||||
`:sample-portfolio:check`, `verifyPublicPathSnapshot`, and the full combined Batch E command have
|
||||
not been re-run after those final fixes.
|
||||
- The complete repository `./gradlew test` and `./gradlew check` have not been re-run after the
|
||||
Batch E additions.
|
||||
- The legacy adoption runner/configuration is not yet wired to a production legacy inspector,
|
||||
permission-checked trust-key loader, or durable control-record replay-store implementation.
|
||||
- Tasks 25–30 (Batch F) have not started in this continuation.
|
||||
- Actual AWS qualification is blocked by Approval Gate B: no approved account, bucket/namespaces,
|
||||
workload roles, signed deployment attestation, or mutation/test authority was supplied.
|
||||
- No readiness card was promoted. Local/MinIO ceilings and unsupported conditional behavior remain
|
||||
unchanged.
|
||||
|
||||
## Wiki capture
|
||||
|
||||
At this isolated-branch checkpoint, the then-selected private vault
|
||||
`/home/donghyeon/workspace/ai-tool/llm-wiki-private/` was absent, so capture was blocked. The final
|
||||
main integration was later captured in the user-designated public vault at
|
||||
`raw/branch-notes/chore-main-worktree-capability-integration.md`, with the derived error note
|
||||
`raw/errors/multi-worktree-contract-drift-2026-07-31.md`.
|
||||
Reference in New Issue
Block a user