스키마 동결 정책
5.0 갱신.
hwpx.document_plan.v1/v2·hwpx.agent-batch/v1·hwpx.mixed-form-plan/v1은 이 표에서 빠졌습니다. 제거된 게 아니라python-hwpx-automation이 발행 주체가 됐기 때문입니다 — core는 더 이상 그 payload를 만들지 않으므로, 여기서 동결을 약속하는 것은 지키지 못할 약속입니다. 세 스키마의 동결은python-hwpx-automation의 계약 정책이 이어받습니다.
python-hwpx가 발행하는 versioned contract는 4.0.0에서 required 필드 집합이 동결됩니다. 목적은 한 가지 — 이미 나간 payload가 앞으로도 계속 검증을 통과하게 하는 것입니다.
동결 대상
스키마 |
동결된 required |
|---|---|
|
|
규칙 (additive-only)
필드 추가는 허용, 단 Optional이어야 함. 새 필드는 생략 가능해야 하며, 없을 때 기존 동작이 유지돼야 합니다. 옛 payload가 그대로 통과합니다.
required 승격 금지. 기존 Optional 필드를 required로 올리거나 새 required 필드를 추가하는 것은 파괴 변경입니다.
파괴 변경은 새 major + 새 스키마 버전 문자열로만. 예:
hwpx.document_plan.v3,hwpx.mutation-report/v2. 같은 버전 문자열의 의미를 바꾸지 않습니다.
강제 방법
tests/test_schema_freeze.py가 각 스키마의 최소-유효 fixture(정확히 동결된 키만
가진)를 검증하고, required 키를 하나씩 제거하면 거부됨을 확인합니다. 미래에 required
필드가 추가되면 이 fixture가 검증을 통과하지 못해 테스트가 실패합니다 — 변경을
Optional로 만들거나 스키마 버전을 의도적으로 올리도록 강제합니다.
동결된 스키마는 대부분 닫힌(closed) 형태라 알 수 없는 키도 거부합니다. 따라서 새
Optional 필드도 검증기(또는 JSON 스키마 properties)에 명시적으로 추가해야 하며, 이때
required에는 넣지 않습니다.