Buyer / control gap
PR #307의 CandidateDocumentDisposition은 현재 return_destroyed, statutory_retention_expired_destroyed, destroyed 같은 완료 상태를 표현하지만, protected develop에는 document_records가 발행하는 반환/파기 완료 receipt의 released/versioned contract가 없다. return_delivered_at이나 statutory_retain_until은 선행 조건/정책 경계일 뿐 파기 실행 완료의 권위 증거가 아니다.
Issue #303과 ADR 0303은 artifact lifecycle 실행과 completion receipt 권위를 document_records에 둔다. 따라서 talent_acquisition/people_core가 자체 timestamp만으로 artifact가 반환·파기됐다고 확정하면 DDD ownership, 감사 추적성, legal-hold/recovery 통제가 동시에 깨진다.
Canonical owner / boundary
document_records가 다음 truth를 소유한다.
- canonical document/artifact identity/hash/provenance
- hold/return/export/delete disposition 실행
- idempotency/UPSERT 및 retry/compensation outcome
retention_policy_version/digest, anchor, retain_until, legal-hold evaluation
- return/destruction completion receipt
- 파기 뒤 search index/cache/export queue/replica/backup/restore 경로에서 buyer-visible content가 되살아나지 않는 recovery-aware deletion evidence
talent_acquisition과 people_core는 released API/event/ACL의 opaque receipt reference만 소비한다. raw artifact/source copy, cross-service application-table SQL, mutable branch dependency는 금지한다.
Required contract
최소 receipt는 raw PII를 담지 않고 다음을 검증 가능하게 해야 한다.
- tenant-scoped immutable receipt identity와 artifact/document opaque reference
- disposition command/idempotency identity 및 disposition kind (
return, delete 등)
- authoritative completion result와
completed_at
- 적용한 policy version/digest 및 legal-hold decision evidence
- executor/actor 또는 service-principal provenance
- artifact content/provenance digest 또는 동등한 tamper-evident linkage
- 파기인 경우 normal store뿐 아니라 index/cache/replica/backup/recovery 경로의 처리 상태를 연결하는 recovery evidence reference
- duplicate delivery/retry가 동일 receipt/result로 수렴하는 idempotency
Receipt는 append-only/immutable이어야 하며 과거 receipt를 policy 변경으로 rewrite하지 않는다.
Acceptance
document_records owner에서 contract/API/event schema, DDD aggregate/invariant, ADR/UML/TRD/SECURITY/THREAT_MODEL/OPERABILITY/TEST_STRATEGY를 code-current하게 만든다.
- same-tenant valid completion receipt, wrong-tenant receipt, forged/malformed reference, duplicate command, retry/compensation, active legal hold, policy-version mismatch, stale receipt를 RED→GREEN으로 검증한다.
- destruction completion은 실제 artifact lifecycle result 없이는 발행되지 않는다. legal hold 중 파기는 fail closed한다.
- recovery rehearsal에서 파기 완료 artifact가 DB/index/cache/export/restore 경로로 재등장하지 않음을 right-cleared 현실 evidence로 검증한다.
- released/versioned immutable contract를 만든 뒤 consumer #307은 exact version/ACL만 소비하고,
*_destroyed 완료 상태를 해당 authoritative receipt와 결합할 때만 허용한다.
- #307은 이 owner contract가 protected/released 되기 전에는 completed destruction을 integration-ready evidence로 주장하지 않는다. 임시 source copy나 leaf-local receipt schema로 우회하지 않는다.
Dependency / traceability
이 issue는 #303을 대체하지 않고 document_records의 canonical prerequisite를 분리한다.
Buyer / control gap
PR #307의
CandidateDocumentDisposition은 현재return_destroyed,statutory_retention_expired_destroyed,destroyed같은 완료 상태를 표현하지만, protecteddevelop에는document_records가 발행하는 반환/파기 완료 receipt의 released/versioned contract가 없다.return_delivered_at이나statutory_retain_until은 선행 조건/정책 경계일 뿐 파기 실행 완료의 권위 증거가 아니다.Issue #303과 ADR 0303은 artifact lifecycle 실행과 completion receipt 권위를
document_records에 둔다. 따라서talent_acquisition/people_core가 자체 timestamp만으로 artifact가 반환·파기됐다고 확정하면 DDD ownership, 감사 추적성, legal-hold/recovery 통제가 동시에 깨진다.Canonical owner / boundary
document_records가 다음 truth를 소유한다.retention_policy_version/digest, anchor,retain_until, legal-hold evaluationtalent_acquisition과people_core는 released API/event/ACL의 opaque receipt reference만 소비한다. raw artifact/source copy, cross-service application-table SQL, mutable branch dependency는 금지한다.Required contract
최소 receipt는 raw PII를 담지 않고 다음을 검증 가능하게 해야 한다.
return,delete등)completed_atReceipt는 append-only/immutable이어야 하며 과거 receipt를 policy 변경으로 rewrite하지 않는다.
Acceptance
document_recordsowner에서 contract/API/event schema, DDD aggregate/invariant, ADR/UML/TRD/SECURITY/THREAT_MODEL/OPERABILITY/TEST_STRATEGY를 code-current하게 만든다.*_destroyed완료 상태를 해당 authoritative receipt와 결합할 때만 허용한다.Dependency / traceability
이 issue는 #303을 대체하지 않고
document_records의 canonical prerequisite를 분리한다.