Files
portfolio-hub/.proofline/criteria/ac-0030.md
T

1.3 KiB

id, status
id status
ac-0030 active

데몬 소유자 이전과 기존 배정의 동일 소유자 불변식

Criterion

portfolio assignment와 daemon owner transfer의 실행 순서와 관계없이 저장된 non-null assignment는 daemon.owner_user_id == portfolio.owner_user_id를 만족해야 하며, 참조 중 daemon의 owner transfer는 HTTP 409로 거부되어 daemon owner, portfolio assignment와 broker credentials를 모두 보존해야 한다.

Verification

  • 성공 조건: assignment-first에서는 transfer가 409로 실패하고, transfer-first에서는 이전 owner의 assignment가 foreign daemon 404로 실패하며, 미참조 transfer는 성공하고 기존 credential invalidation 정책을 유지한다.
  • 실패·경계 조건: foreign owner 관계가 commit되거나 충돌한 transfer가 owner·assignment·credential 중 일부만 변경하거나 race가 timeout·deadlock으로 끝나면 실패한다.
  • 검사 방법: migration head가 적용된 disposable PostgreSQL에서 순차 참조 transfer, 미참조 transfer와 양방향 race를 별도 connection/thread로 반복 실행한다.
  • 현재 구현 평가: e90519a가 daemon FOR UPDATE → reference 검사 → credential 삭제 → owner UPDATE 순서를 구현했고 2차 QC에서 integration 12 passed와 race 반복 5/5 passed를 확인했다.