Versioned product policies
이 디렉터리는 통계 결과와 원천 사실의 의미를 바꾸는 제품 결정을 코드와 독립적으로 고정한다. 각 정책은 사람이 읽는 설명, 기계가 읽는 manifest, 불변 버전 스냅샷과 changelog를 함께 가진다. 외부 근거 데이터나 파생 산출물이 있는 계산 정책은 원천 자료와 결정론적으로 생성된 fixture도 함께 보존한다.
정책 변경 절차는 다음과 같다.
- 기존 버전 파일을 덮어쓰지 않고 새 버전 경로를 만든다.
- 파생 fixture가 있는 정책은 생성 스크립트로 다시 만든다.
- 문서·manifest와 해당되는 원천·fixture SHA-256, semantic fingerprint를 changelog에 기록한다.
- 계산 결과나 의미가 달라지는 변경은 major version을 올리고 전량 replay를 요구한다.
- 파생 산출물이 있는 계산 정책은
npm run check:policies로, 각 정책의 manifest·불변 스냅샷·changelog·구현 경계는npm test의 contract test로 검증한다.npm run check가 두 검사를 모두 실행한다.
.github/workflows/policy-contract.yml이 모든 PR과 main push에서 npm run check를 실행한다. 따라서 해당 정책이 요구하는 manifest·스냅샷·해시·changelog·산출물 또는 replay 근거 중 하나를 누락한 변경은 병합 전에 실패한다. 운동 종목 모델의 이미 배포된 full-semver snapshot은 별도 Git diff gate가 수정·삭제와 기존 버전 디렉터리의 파일 추가까지 거부한다.
현재 정책: