fix(lifecycle): bind deletion receipts to immutable identity - #353
fix(lifecycle): bind deletion receipts to immutable identity#353seonghobae wants to merge 4 commits into
Conversation
|
Warning Review limit reached
Next review available in: 41 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthrough삭제 영속성 요청의 식별 정보를 담는 불변 record를 추가했다. 필수값, 텍스트 정규화와 길이, lowercase SHA-256 형식을 검증한다. 생성 결과와 예외 조건을 JUnit 테스트로 검증한다. Changes삭제 영속성 식별자
Estimated code review effort: 3 (Moderate) | ~20 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@src/main/java/com/clearfolio/viewer/lifecycle/ArtifactDeletionReceiptIdentity.java`:
- Around line 51-57: Update requireSha256 in ArtifactDeletionReceiptIdentity to
validate the original artifactChecksum without stripping whitespace, while still
rejecting null, blank, and any value that is not exactly a 64-character
lowercase SHA-256 digest. Add a regression case to
ArtifactDeletionReceiptIdentityTest asserting that leading or trailing
whitespace causes validation to fail.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 66fc97c8-16f9-4ef4-9fb0-51bafcd4f693
📒 Files selected for processing (2)
src/main/java/com/clearfolio/viewer/lifecycle/ArtifactDeletionReceiptIdentity.javasrc/test/java/com/clearfolio/viewer/lifecycle/ArtifactDeletionReceiptIdentityTest.java
Objective
Advance issue #263 with a clean protected-main lifecycle foundation: future durable deletion receipts need one immutable tenant/job/request/artifact/audit identity that cannot accept blank authority or a non-canonical artifact digest.
Test-first state
This Draft starts intentionally RED at exact test-only head
08c1abac4333a265da8941d7496b4bf40b269aa6.ArtifactDeletionReceiptIdentityTestrequires a bounded immutable identity record with canonical lowercase SHA-256 artifact binding, normalized nonblank tenant/audit identifiers, and required request/job/time authority. Protected main does not contain the production type, so Maven test compilation is expected to fail until the narrow value object is added.Scope
Two-file lifecycle identity slice only. It does not implement receipt persistence, deletion state transitions, cleanup/retry, artifact-store mutation, admin APIs, UI, distributed locking, or canonical documentation. It is path-disjoint from #350/#351 and does not copy stale #268 ancestry.
Acceptance
Observe exact-head RED -> add only the production identity record -> exact-head
mvn -B --no-transfer-progress verifywith zero missed owned production coverage and warning-free public Javadocs -> CI/Security Scan/SAST/fuzz -> current reviews/threads/base refetch. Keep Draft until GREEN exact-head evidence exists; independent write-authorized approval remains a separate merge gate.Summary by CodeRabbit
새 기능
테스트