Skip to content

feat(document-records): 반환·파기 완료 receipt 권위 계약과 복구 불가능성 evidence #308

Description

@seonghobae

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

  1. document_records owner에서 contract/API/event schema, DDD aggregate/invariant, ADR/UML/TRD/SECURITY/THREAT_MODEL/OPERABILITY/TEST_STRATEGY를 code-current하게 만든다.
  2. 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으로 검증한다.
  3. destruction completion은 실제 artifact lifecycle result 없이는 발행되지 않는다. legal hold 중 파기는 fail closed한다.
  4. recovery rehearsal에서 파기 완료 artifact가 DB/index/cache/export/restore 경로로 재등장하지 않음을 right-cleared 현실 evidence로 검증한다.
  5. released/versioned immutable contract를 만든 뒤 consumer #307은 exact version/ACL만 소비하고, *_destroyed 완료 상태를 해당 authoritative receipt와 결합할 때만 허용한다.
  6. #307은 이 owner contract가 protected/released 되기 전에는 completed destruction을 integration-ready evidence로 주장하지 않는다. 임시 source copy나 leaf-local receipt schema로 우회하지 않는다.

Dependency / traceability

이 issue는 #303을 대체하지 않고 document_records의 canonical prerequisite를 분리한다.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions