- analysis/·source-index·state.json 을 final/document.md 제2부·제3부로 접었다. SSOT 는 하나다 - 파일럿 — commit-ambiguity-as-a-result 를 새 기준으로 재선별. 후보 14 → 글감 5 (PROMOTE 5 · MERGE_INTO 3 · KEEP_IN_SSOT 4 · 보류 2). 기록 5건을 다시 썼고 그림 1개를 techviz 로 만들었다 - 재선별이 잡은 것: 제1부 §6.2·§11.1 이 자기 §13.2 와 어긋나 있었다(레인을 안 돌렸다 vs 돌렸다) — 정정. 이미 답이 나와 있던 Question 을 HEAD 재실행 질문으로 다시 세웠다. Concept 이 인용한 코드가 SSOT 에 없어 뺐다 - candidateScope·sourceRepository 기록. 나머지 43개 주제는 재선별 대기(PENDING 905) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
4.2 KiB
kind, slug, title, topic, project, status, sourceRevision, rootTreeNode, evidenceCapturedOn, body, assets, evidence, source
| kind | slug | title | topic | project | status | sourceRevision | rootTreeNode | evidenceCapturedOn | body | assets | evidence | source | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| CASE | analysis-finding-a08-f002 | R1과 R2의 설정 취급이 비대칭이고, 검증된 쪽은 하나뿐이다 | file-transfer-and-storage | clean-architecture-backend-template | 게시 전 | 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 | case:analysis-finding-a08-f002 | 2026-09-01 | case-analysis-finding-a08-f002.body.md |
|
|
|
R1과 R2의 설정 취급이 비대칭이고, 검증된 쪽은 하나뿐이다
같은 리프의 두 설정 묶음이 미지의 키를 다르게 다룬다. 한쪽은 거부하고 그것을 지키는 테스트가 있다. 다른 쪽은 조용히 무시하고 그 테스트가 없다. 오타 난 상한이 적용되지 않은 채 큰 기본값이 쓰인다.
관계
- 설정 오타는 실패해야 하고 무시되면 안 된다 이 사례가 그 규칙의 형태다.
- 문서가 지목한 기본값 위치와 test 목록이 실제와 다르다 같은 리프의 다른 문서 오류다.
- 빠뜨림이 통과가 되는 게이트는 게이트가 아니다 같은 계열의 상위 규칙이다.
문제
같은 리프 안에 설정 묶음이 둘 있다. 하나는 현재 경로이고 하나는 호환용이다.
두 묶음이 설정을 어떻게 다루는지 대조했다.
결론
다섯 축에서 다르다.
바인딩 타입이 다르다. 현재 경로는 불변 레코드에 미지 필드 거부를 켠다. 호환 경로는 가변 자바빈이고 기본값이라 미지 키를 무시한다.
루트 경로 취급이 다르다. 현재 경로는 이미 절대이고 정규화된 경로를 요구한다. 호환 경로는 상대 경로를 받아 현재 작업 디렉터리 기준으로 절대화한다.
기본 루트가 다르다. 현재 경로는 필수라 기본값이 없다. 호환 경로는 상대 기본값 둘을 가진다.
디렉터리 생성이 다르다. 현재 경로는 만들지 않고 증명을 별도로 요구한다. 호환 경로는 만든다.
그리고 미지 키 테스트가 현재 경로에만 있다.
결과의 차이가 구체적이다.
현재 경로에서는 설정 키의 오타가 컨텍스트를 실패시킨다. 호환 경로에서는 상한 키의 오타가 조용히 무시되고, 설정했다고 믿는 상한 대신 백만이라는 기본값이 쓰인다.
두 묶음이 같은 리프의 같은 성격 설정인데 한쪽만 닫힌 실패다.
판정은 P3 다. 호환 경로는 문서상 호환 전용이므로 우선순위를 낮춘다.
검증 환경
Spring Boot : 4.0.8 확인 방식 : 두 설정 클래스와 각각의 테스트 대조 소스 수정 : x
재현 조건
원문은 final/evidence/raw/142 계열에 있다.
- 두 설정 묶음의 바인딩 타입을 확인한다.
- 미지 필드 거부 설정이 켜져 있는지 각각 확인한다.
- 루트 경로 정규화 방식을 대조한다.
- 기본값과 디렉터리 생성 여부를 대조한다.
- 미지 키 거부 테스트가 어느 쪽에 있는지 확인한다.
본문
R2에서는 strict-path-securty 같은 오타가 컨텍스트를 실패시킨다. R1에서는 app.file-export.maximum-rowz=10 같은 오타가 조용히 무시되고, 설정했다고 믿는 상한이 적용되지 않은 채 기본값 1,000,000이 쓰인다.
같은 오타가 두 등급에서 갈리는 결과
:::evidence key="analysis-finding-a08-f002" alt="분석 문서 final/document.md#a08 에서 이 기록의 근거 절을 그대로 잘라낸 15줄. 코드베이스를 측정한 것이 아니라 원본 판정이 무엇을 적었는지를 보여 준다." caption="final/document.md#a08 발췌 — 15줄" zoom="true" :::
같은 성격의 설정인데 한쪽만 fail-closed다
두 selector가 같은 leaf에 있다. P3 — R1은 문서상 "compatibility only"이므로 우선순위를 낮춘다.
확인하지 못한 것
호환 경로의 상한 키에 오타를 넣고 실제로 백만이 쓰이는지 실행하지 않았다. 바인딩 설정상 그 결과가 나온다.