# 문서 검증 범위와 재현 방법

이 작업은 문서 작성이다. 앱의 Runtime, Start 제어, 규칙 엔진, DB, SSH를 실행하지 않는다. 테스트는 **현재 순수 설정 validator**, JSON/문서 정합, FALL **미구현 설계의 숫자 제약**으로 구분한다. 구체적인 실행 결과와 건수는 [result.json](result.json), 읽은 파일 지문은 [context.json](context.json)을 따른다.

첫 실행 결과: 203개 검사 통과, 미확정 조합1개는 시험하지 않음. 203개에는 파일/링크/정적 계약 검사가 포함되며 Runtime 테스트203개라는 뜻이 아니다. Report 추가 이후 최종 파일 정합은 [package_check.json](package_check.json)에 별도 보존한다.

## 필수 검증 1: 현행 지원과 미지원

- 저장소의 `app/fight_r5/config.py`와 `app/fall_r2/config.py`만 표준 라이브러리 방식으로 단독 load한다. 두 파일은 설정 자료형/순수 검증 함수이며 `app` 패키지·Runtime·모델·Web 경로를 import하지 않는다.
- FIGHT 기본/부분 변경, 정수/유한 숫자, 범위, 관측창과 숨긴 contact의 관계, 기존 reset을 확인한다.
- FALL marker가 허용되고 새 세 필드는 현재 `FALL_R2_FIELDS_INVALID`로 거부되는지 확인한다. **기대한 거부를 확인했다는 뜻이지 새 FALL 기능을 구현해 통과시킨 것이 아니다.**
- 공통 score의 유효 낮은 값 보정·높은 값 유지·잘못된 값 거부는 두 순수 score validator에서 확인한다.
- 요청 전체의 저장 원자성/no-op/cooldown 처리·로그·응답 경로는 소스/기존 명세를 읽은 사실과 구분한다. 이번에 Runtime이나 API로 재검증한 것은 아니다.

## 필수 검증 2: 초안과 예시

- 모든 JSON과 Markdown JSON code block을 엄격하게 파싱한다. 중복 key·NaN/Infinity를 거부한다.
- 요청 예시가 parameters 발췌임을 확인하고, FIGHT contact나 내부 bbox/D/분기 선택·현장 URI·인증값이 끼어들지 않았는지 확인한다.
- 합의 필드/기본값/범위와 소스 상수의 대응을 확인한다. FALL 설계 검사는 `contracts/controls.json`의 정적 숫자 계약을 확인할 뿐 실제 AI 처리가 아니다.
- 절대 참조와 상대 링크의 파일 존재, UTF-8/공백, 소스 지문·Git 상태, 산출물 지문 목록을 확인한다.

`reset_to_defaults`와 새 FALL 각도를 함께 보내는 경우는 메인 정책 확정 대상이라 통과/실패를 임의로 정하지 않는다. 결과의 `pending`에 남긴다. 새 각도 오류코드와 private 저장/실효값 경로도 구현 후 확정한다. 이 결정 대기는 문서 작업 완료를 막지 않지만 새 AI 기능의 완료 기준은 아니다.

## 재현 명령

기본 실행은 결과를 stdout에만 출력한다. 운영 서버나 앱에 연결하지 않는다.

```bash
python3 -B /data/codex-artifacts/contextra/field-maintenance/2026/2026-11-02_contextra-web-config-handoff-draft_r01/validation/check_packet.py
```

`--write-results`는 새 `context.json`/`result.json`이 없을 때만 현재 폴더에 생성한다. 기존 결과 덮어쓰기는 거부한다. 다른 시점에 확인하면 그 시점 source 기준 결과이므로 이 패킷의 기록을 새로 검증한 것으로 바꾸지 않는다. `check_packet.py`는 **문서 검사 전용 helper**, 새 FALL 엔진/Start validator 구현물이 아니며 앱에 복사하지 않는다.

## 권장·보류

- 권장, 후속: 메인의 계약/국소 분기 테스트, Web 동료의 숫자 직렬화·저장값 표시·오류 표시 확인.
- 보류, 이번 미실시: 실제 전체 Start, persistence/CAS/restart/no-op, 저장 cache 판정 비교, 운영 조회·AI/Web 패치·브라우저·알람/미디어 시험, 새 HTML/영상.
- 과거32/36입력·영상/현장 검증은 기존 기록의 사실이다. 이번 테스트 숫자에 합산하지 않는다.
- Git repository 파일 수정은 없으므로 Closeout/Manifest/Batch·add/commit/push는 해당 없음이다. `manifest.json`은 **산출물 SHA 목록**이며 Git Closeout Manifest가 아니다.
