# Final Editorial Validation — 2026-09-01 **상태: COMPLETE.** 이 문서가 `clean-architecture-backend-template` Tech Log 의 편집 완료 상태를 나타내는 정본이다. 다른 editorial artifact 는 전부 이 문서를 가리킨다. 검증 시각 `2026-09-01T15:48:45Z`. `_meta/state.json` 의 `lastEditorialAt` · `lastValidationAt` 과 같은 값이다. 같은 디렉터리의 다른 문서와의 관계는 이렇다. | 문서 | 성격 | |---|---| | `editorial-visual-audit-2026-09-01.md` | pass **이전**의 초기 audit. `HISTORICAL_SNAPSHOT` | | `editorial-audit-2026-09-01.json` | 같은 시점의 도구 원본 출력(LONG_TITLE 76). 가공하지 않는다 | | `concept-structure-audit-2026-09-01.json` · `case-structure-audit-2026-09-01.json` | 같은 시점의 구조 audit 원본(signature 18종 · 12종) | | `semantic-pass-progress.md` | 작업 로그. 앞부분은 진행 중 스냅숏, 하단 `Correction pass` 가 정본 | | `svg-semantic-review-2026-09-01.md` | 33개 후보의 시각 semantic 검토 판정 | | `editorial-exceptions.json` | 검토를 마치고 유지하기로 한 finding 의 원장 | | **이 문서** | **최종 검증 수치** | 세 `.json` 은 도구가 그대로 뱉은 출력이라 안에 표시를 넣지 않는다 — 넣으면 더 이상 도구 출력이 아니다. 어느 세대인지는 파일명의 날짜와 이 표가 말한다. --- ## Corpus ```text records = 949 CASE = 402 CONCEPT = 386 REFERENCE = 105 OPEN QUESTION = 31 DECISION = 25 rich body = 788 (CONCEPT 386 · CASE 402) ``` ## Editorial ```text corpus structural findings = 0 concept bodies=386 records=386 findings=0 case bodies=402 records=402 findings=0 reference / openquestion / decision records=105 / 31 / 25 findings=0 main-record repeated explanatory prose = 0 LONG_TITLE candidates = 60 reviewed = 60 accepted = 60 unreviewed = 0 stale exceptions = 0 ``` LONG_TITLE 60건은 미해결 finding 이 아니다. `editorial-exceptions.json` 이 60건 각각에 대해 승인 사유를 기록한다. | category | 수 | 뜻 | |---|---:|---| | `PROTECTED_IDENTIFIER` | 36 | 길이가 코드 심볼 · 설정 키 · SQL 구문 · 고유명에서 온다 | | `PAIRED_CONTRAST` | 17 | 사건 자체가 두 사실의 대비다 | | `TECHNICAL_QUALIFIER` | 4 | 수치나 위치가 결함의 규모를 정한다 | | `ENUMERATION_IS_THE_EVENT` | 3 | 열거된 항목 자체가 관측의 실질이다 | 승인은 영구 침묵이 아니다. 각 항목이 승인 당시 제목의 `titleSha256` 을 들고 있어서, 제목이 바뀌면 그 항목은 다시 `UNREVIEWED` 가 된다. 승인한 finding 이 더 이상 나오지 않으면 `STALE_EXCEPTION` 으로 보고된다. 새 기록이 55자를 넘는 제목을 갖고 원장에 없으면 그대로 `UNREVIEWED` 로 나타난다. ## References ```text source/evidence files checked = 1737 invalid references = 0 ``` ## Visual ```text explanatory SVG = 181 terminal SVG = 788 mechanical validation = PASS (diagram · terminal) semantic negative-edge candidates reviewed = 33 redesigned = 3 accepted = 30 coordinate precision violation = 0 ``` ## Integrity ```text record hash mismatch = 0 body hash mismatch = 0 diagram svg hash mismatch = 0 raw evidence hash mismatch = 0 line count mismatch = 0 ``` ## Upstream ```text crossScopeAnalysis sha state 538e4e72cf033a9e262d5bbccd4914ccb4f2aea405432efd034b719c64cd25ff crossScopeAnalysis sha file 538e4e72cf033a9e262d5bbccd4914ccb4f2aea405432efd034b719c64cd25ff crossScopeAnalysis lines state 552 file 552 → MATCH ``` `verify_pipeline.py` 가 매 실행마다 이 대조를 수행한다 (`upstream document metadata: matches files`). ## Tests ```text PYTHONPATH=tools python3 -m unittest discover -s tools/tests Ran 98 tests OK python3 tools/verify_pipeline.py /shared PIPELINE VERIFICATION: PASS - required paths: 67 - analysis queue contract: valid - root-tree contract: present - upstream document metadata: matches files - forbidden legacy dependency: absent ``` --- ## 완료 판정 명령 이 상태를 재확인하는 한 줄은 다음이다. `--fail-on-unreviewed` 가 붙어야 완료 판정이 된다 — `findings == 0` 이 아니라 `unreviewed == 0` 이 조건이기 때문이다. ```bash python3 tools/editorial_quality/audit_korean_tech_writing.py \ clean-architecture-backend-template/concept \ clean-architecture-backend-template/case \ clean-architecture-backend-template/reference \ clean-architecture-backend-template/openquestion \ clean-architecture-backend-template/decision \ --exceptions clean-architecture-backend-template/_meta/editorial/editorial-exceptions.json \ --fail-on-unreviewed ``` ## state 의 완료 의미 `_meta/state.json` 의 `lastEditorialAt` · `lastValidationAt` 은 "편집 pass 가 끝났고 그 시점에 검증이 돌았다" 를 뜻하며, 그 날짜의 closure artifact 가 결과를 소유한다. `editorialStatus` 같은 상태 필드는 **추가하지 않았다.** `_templates/project/_meta/state.json` 이 이 상태의 계약이고, 필드를 하나 추가하면 그 템플릿과 그것으로 만들어질 모든 프로젝트의 계약이 바뀐다. 이번 closure 가 요구하는 범위를 넘는다. 완료 여부는 이 문서와 위 명령의 exit code 로 읽는다. 이 규칙은 `humanizing-korean-tech-writing` Skill 의 `Audit artifacts have generations; say which one is current` 절에 적혀 있다.