docs(CLAUDE): 검사기가 「볼 것이 없어서 통과」를 「문제 없음」으로 쓰지 않게 한다

겹침 검사기의 적용 범위를 적는다 — 판정에 쓰는 것은 <rect> 뿐이라
techviz 가 만든 SVG 에서만 유효하다. 손댄 SVG 는 배경 사각형이 안
따라 바뀌어 겹침이 있어도 없다고 답한다.

그리고 관문의 종료 코드를 셋으로 가른다. 「대상이 성립하지 않는다」를
exit 2 로 두어 오타 한 번에 관문이 조용히 무효가 되는 것을 막는다.

__pycache__ 는 .gitignore 에 이미 있는데 이 .pyc 하나만 추적되고 있어
두 세션의 작업 트리를 계속 더럽혔다. 추적에서 뺀다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GksxvQvM6A85xy8viYtWk6
This commit is contained in:
DongHyeonka
2026-09-10 11:07:35 +09:00
co-authored by Claude Opus 5
parent 43e1aadef0
commit bed1fd933f
2 changed files with 23 additions and 0 deletions
+23
View File
@@ -342,6 +342,17 @@ python3 scripts/verify-pipeline.py # 위 셋을 모든 프로
python3 -m unittest discover -s scripts/tests # 파서·검사기·생성기
```
**검사기는 「볼 것이 없어서 통과」를 「문제 없음」이라고 쓰지 않는다.** 셋을 가른다.
| 상태 | 종료 코드 | 문구 |
|---|---|---|
| 봤고 괜찮다 | 0 | `문제 없음` · `error 0` |
| 대상이 성립하지 않는다 (프로젝트 없음 · 계약 없음) | **2** | `대상이 성립하지 않는다 — <이유>` |
| 볼 것이 아직 없다 (계약은 있고 기록이 0건) | 0 | `기록 0건 — 계약의 글감 N개가 아직 안 쓰였다` |
가운데는 error 로 센다. 아래는 error 가 아니다 — **아직 안 쓴 것은 결함이 아니다.** 다만
초록으로 보이면 안 된다. 오타 한 번에 관문이 조용히 무효가 되는 것을 이 구분이 막는다.
게시 전에는 아래 둘을 돌린다. 하나는 파서를, 하나는 문장을 본다.
**본문이 Studio 파서를 통과하는지.** Studio가 쓰는 파서를 그대로 부르므로 통과하면 저장도 통과한다.
@@ -378,6 +389,18 @@ python3 scripts/check-figure-overlap.py <프로젝트> # 상자와 라벨이
라벨이 상자에 먹혀도 통과한다. 겹침 검사는 렌더러가 남긴 배경 사각형의 좌표를 그대로 읽으므로
글자 폭을 어림하지 않는다. `verify-project-layout.py` 가 이 검사를 함께 돈다.
**그 방법이 성립하는 범위가 따로 있다.** 「글자 폭을 어림하지 않는다」는 **방법**이고,
아래는 그 방법의 **적용 범위**다. 둘은 다른 문장이다.
`check-figure-overlap.py` 가 겹침을 판정할 때 보는 것은 `<rect>` 뿐이다. `<text>` 는 겹친
자리에 무엇이 있었는지 이름을 대는 데만 쓰고 판정에는 안 쓴다. 그래서 배경 사각형이 그 글자가
실제로 차지하는 자리와 같을 때만 겹침이 겹침으로 나타난다.
**이 검사기는 techviz 가 만든 SVG 에서만 유효하다.** 손으로 고친 SVG, 다른 도구가 만든 SVG,
렌더한 뒤 글자만 바꾼 SVG 는 **겹침이 있어도 없다고 답한다** — 배경 사각형이 안 따라 바뀌기
때문이다. 실측 예: 글자를 60자로 늘렸는데 배경은 131.9px 그대로였고 `check-figure-overlap`
은 통과시켰다. 그런 SVG 는 눈으로 본다.
**그래도 마지막에는 눈으로 본다.** 글자가 상자 밖으로 조금 나가거나 화살표가 라벨을 지나는
것은 좌표로 안 잡힌다.