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

1.6 KiB

id, status
id status
ac-0017 active

포트폴리오 ID-only 요청과 응답 호환성 계약

Criterion

/v1/portfolios와 legacy /portfolios의 생성에는 active strategy_id가 필수이고 수정도 ID-only여야 하며, 요청의 strategy_name·strategy_params는 422로 거부해야 한다. v1 PortfolioItem 응답은 현재 참조 전략의 active_strategy_id·strategy_nick·strategy_name·strategy_params·strategy_revision을 같은 committed row에서 반환해야 하고 참조가 없거나 해석할 수 없으면 strategy_nick은 null이어야 하며, legacy 응답의 기존 호환 필드는 유지되어야 한다.

Verification

  • 성공 조건: 명시한 active ID로만 포트폴리오가 생성·수정되고 v1 create/PATCH/list 응답에 현재 전략 ID·nick·이름·config·revision이 나타나며 참조가 없으면 strategy_nick은 null이다.
  • 실패·경계 조건: strategy ID 누락, 제거 필드 전달 또는 malformed 요청은 새 전략 row를 만들지 않고 422다.
  • 검사 방법: v1·legacy create/update schema와 저장소 row count, v1 create/PATCH/list의 strategy_nick read-back, unbound null 및 기존 응답 호환 필드를 API/CLI 회귀로 검사한다.
  • 현재 구현 평가: schemas와 양쪽 portfolio API가 ID-only 입력 및 extra="forbid" 계약을 구현하고 v1 mapper가 strategy_nick을 반환한다. 다만 strategy_nick read-back, 제거된 strategy_name·strategy_params 각각의 422와 응답 호환 필드 전체를 직접 단언하는 전용 test가 없어 executable coverage는 PARTIAL이다.