나열 안 한 property 도 정책 필요
additionalProperties
기본으로 properties 에 나열 안 된 property 는 허용. 금지하려면 additionalProperties: false — schema 가 'closed' 가 됨. sub-schema 로 검증하려면 additionalProperties 에 schema (예: { "type": "string" }: '다른 모든 키는 string 이어야 함').
patternProperties
가끔 property 이름 이 패턴 따름. patternProperties 가 키-regex 를 schema 에 매핑. "^env_": {"type": "string"} = 'env_ 로 시작하는 모든 키는 string'. 고전 사용: env-var 맵, locale 맵 ("^[a-z]{2}(-[A-Z]{2})?$").
propertyNames
키 문자열 자체 제약: "propertyNames": {"pattern": "^[a-zA-Z_][a-zA-Z0-9_]*$"} = '모든 키가 유효한 식별자'. JSON 키가 downstream 에서 변수 이름 될 때 유용.
'기본 closed' 는 forwards-compatibility 비용.
additionalProperties: false 의 schema 는 v1 validator 에서 유효한 v2 문서 거부. public API 는 보통 열어 둠 (또는 정책 명시적 문서화); 사적 내부 schema 는 자주 닫음. 반사 아니라 의식적으로 골라.