교차검증 2차에서 재현된 실제 실패를 수정한다.
1. 우클릭 구조물 추가가 대부분 저장 거절되던 문제
- 메뉴가 레지스트리 앞 12개를 그대로 노출해 배관(별도 정본)과 필수 제원이
있는 C군이 섞였고, addAt()이 값 없이 즉시 저장해 서버가 거절했다.
실패 항목은 structure_id 없이 화면에 남아 수정·삭제도 막혔다.
- 메뉴는 managed_by 없고 required 옵션 없는 타입만 노출한다.
- 필수 입력 타입은 저장 대신 측점을 채운 사이드 폼을 열고 첫 필수 칸에
포커스를 준다.
- 저장이 실패하거나 충돌하면 서버 정본을 다시 받아 화면을 되돌린다.
2. 미협의 선택값이 기본값으로 자동 저장되던 문제
- 재료·형식 선택형 18건의 default를 없애고 required로 바꿨다.
화면 select에는 "선택하세요" 빈 항목을 두고, defaultOptions()가 첫
선택지를 대신 채우던 동작을 없앴다.
- 남긴 default는 법정 단일값, 사용자 확정값(골막이), 표시용 문자열뿐이다.
3. STALE 갱신 실패를 사용자가 알 수 없던 문제
- 응답에 needs_downstream_invalidation을 추가해 "되돌려야 했는가"와
"되돌렸는가"를 구분한다. 어긋나면 화면이 B06 재실행을 안내한다.
4. 회귀 방지: 레지스트리 정책 테스트 신설(우클릭 목록 구성·기본값 원칙).
pytest 49건 통과 · tsc 0 · ruff 통과 · npm run build 성공.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>