Files

4.3 KiB

id, status, discovery, criteria
id status discovery criteria
req-0004 approved dcy-0004
create update retire satisfy
ac-0024
ac-0025
ac-0026
ac-0027
ac-0028
ac-0029
ac-0030
ac-0031

포트폴리오 데몬 배정 persistence와 소유자 불변식

Objective

포트폴리오 생성·수정에서 선택한 비-null managed_by_daemon_id를 일관되게 검증·저장하고, daemon의 존재·활성·소유자 변경과 경합하더라도 승인된 오류 계약과 동일 소유자 불변식을 원자적으로 보존한다.

Scope

  • POST /v1/portfolios가 비-null managed_by_daemon_id를 생성 persistence에 반영하고 성공 응답과 후속 조회에서 같은 값을 반환한다.
  • 데몬 미선택 생성은 기존처럼 managed_by_daemon_id = null인 미배정 포트폴리오를 생성한다.
  • 생성과 PATCH의 비-null 데몬 지정·재지정은 server-generated UUID 형식, 존재, active 상태와 target portfolio owner 기준 동일 소유자를 검증한다.
  • admin이 다른 사용자를 대신해 생성·수정하는 경우 호출자가 아니라 최종 target portfolio owner를 데몬 소유권 비교 기준으로 사용한다.
  • malformed UUID는 422, 미존재·foreign daemon은 존재를 숨겨 404, 소유자 범위의 inactive daemon은 409로 실패하고 portfolio와 관련 상태를 부분 변경하지 않는다.
  • 데몬 검증과 portfolio write를 하나의 원자적 transaction 및 row-lock 경계로 직렬화한다.
  • 데몬 비활성화가 assignment보다 먼저 확정되면 새 assignment를 거부하고, assignment가 먼저 확정된 뒤 비활성화되면 기존 reference를 보존하면서 기존 service-token revoke 계약을 적용한다.
  • 참조 중인 daemon의 owner transfer를 409로 거부하고 owner, portfolio assignment와 broker credentials를 무변경으로 보존한다. 미참조 daemon owner transfer는 기존 credential invalidation 계약을 유지한다.
  • 기존 portfolio mutation의 인증·소유권·strategy·asset·disabled-state 보호를 유지한다.

Constraints

  • managed_by_daemon_id는 기존 soft reference와 server-generated UUID identity를 유지하며 내부 식별자·테이블 구조를 변경하지 않는다.
  • explicit managed_by_daemon_id: null PATCH 해제는 이 REQ가 소유하지 않는다.
  • 자동 데몬 배정·해제·이전·재배정과 기존 데이터 일괄 backfill을 수행하지 않는다.
  • trex-web 코드·타입·화면·테스트와 필수 strategy_id UI 적응은 범위 밖이다.

Current Implementation Assessment

  • 이 REQ와 AC는 요청자의 명시적 지시에 따라 confirmed Discovery와 이미 local main에 반영된 구현을 사후 specification으로 포착한다. approved/active는 normative authority이며 과거 ProofLine implementation chronology, terminal lifecycle closure, 배포 또는 release satisfaction marker가 아니다.
  • 제품 구현은 e2102b6f2b855b7679ab67818202ef706d9848fb와 1차 QC 보완 e90519ad3968b48711ced37f42fb45bd883a82af에 존재하며, evidence 포함 현재 local main은 2abd67da973d334c18d94396292bcc19bd2f81d8이다.
  • 2차 QC에서 집중 API/CRUD/admin daemon 62 passed, 기본 전체 suite 624 passed, 18 skipped, migration head 적용 disposable PostgreSQL daemon+strategy integration 12 passed, assignment/owner-transfer race 반복 5/5 passed를 확인했다.
  • 변경 production 및 신규 line-0004 테스트 Ruff, compileall, git diff --check, proofline validate가 통과했고 별도 read-only 독립 QC reviewer도 PASS를 기록했다. 기존 admin daemon test의 F401 6건과 deprecation warning은 기준 커밋에 존재한 비차단 debt다.
  • push, PR, 원격 main 반영, 운영 DB migration 실행, 배포와 release는 수행되지 않았다.

Non-Goals

  • trex-web 또는 다른 서비스 변경
  • PATCH의 명시적 managed_by_daemon_id: null 해제 지원
  • daemon 실행·중지·재시작이나 배포 자동화
  • 자동 assignment 해제·owner 이전·다른 daemon 재배정·backfill
  • 내부 daemons·portfolios 식별자 또는 테이블 구조 변경
  • push, PR, 원격 main 반영, production migration, 배포 또는 release 승인
  • 사후 specification으로 과거 구현에 ProofLine 정식 delivery chronology나 terminal closure를 소급 부여하는 행위