889 lines
47 KiB
YAML
889 lines
47 KiB
YAML
schema-version: 1
|
|
verdict: NEEDS_FIX
|
|
score: 85
|
|
|
|
# ATTESTATION GAP — 이 리뷰를 수행한 실행 환경에는 셸이 없어(Read/Grep/Glob/Write만 가용)
|
|
# content-hash 값을 계산할 수 없었다. 64자리 hex를 임의로 채우는 것은 증거 날조이므로
|
|
# 모든 content-hash를 검증기가 반드시 거부하는 자리표시자로 남긴다.
|
|
# 드라이버는 아래 좌표(artifact · line-start · line-end)로 해시를 채운 뒤 재검증해야 한다.
|
|
# 좌표와 관찰 내용 자체는 실제 파일을 읽고 확인한 것이다.
|
|
|
|
scores:
|
|
project-specificity:
|
|
score: 5
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: overview
|
|
line-start: 6
|
|
line-end: 10
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
첫 세 문단이 다른 저장소에 재사용될 수 없다. org-os/ 정본, 개발과 GTM 동시 적용,
|
|
.claude 단일 어댑터라는 구분자가 즉시 나온다(F-IDENTITY-CORE,
|
|
F-IDENTITY-RUNTIME-COUPLING).
|
|
- artifact: README.candidate.md
|
|
section-id: repo-map-claude
|
|
line-start: 343
|
|
line-end: 359
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
수치가 전부 이 트리의 실측값이고 재추출로 갱신됐다. 카드 75개(43+19+10+3),
|
|
resolver·router 0개, 훅 40개, 테스트 32개가 F-ARCH-AGENT-CARD-COMPOSITION과
|
|
F-LIMIT-CONCURRENT-REFACTOR의 13:36 관측과 일치한다.
|
|
- artifact: README.candidate.md
|
|
section-id: limitations
|
|
line-start: 591
|
|
line-end: 596
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
한계가 일반론이 아니라 이 트리의 고유 상태다. 추적 카드 72 대 워킹 트리 75,
|
|
미커밋 fam-*.md 26개, 미배선 신규 훅, doctor 14번째 섹션의 성격까지 짚는다.
|
|
해소된 CLAUDE.md 73-75 드리프트를 F-LIMIT-DOC-DRIFT의 RESOLVED 처리에 맞춰
|
|
본문에서 뺀 판단도 옳다.
|
|
reader-journey:
|
|
score: 4
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: overview
|
|
line-start: 18
|
|
line-end: 18
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
R-006이 해소됐다. 개요의 provenance가 두 문단에서 한 문장으로 줄었고 HEAD 해시와
|
|
변경 항목 수는 검증 절 L442로 옮겨졌다. readme-outline overview의 '범위 고지를
|
|
개요 단계에서 한 번 선언' 요구와 이제 일치한다.
|
|
- artifact: README.candidate.md
|
|
section-id: verification
|
|
line-start: 421
|
|
line-end: 518
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
감점 근거는 무게 이동이다. 검증 장치가 4개 하위 절 약 100행으로 문서에서 가장 두꺼운
|
|
블록이 됐고, 등급 어휘는 L39 약속 · L426 표 · L500-518 정의 세 곳에 흩어져 있다.
|
|
5분 독자가 '이걸 돌려도 되나'를 판정하려면 세 곳을 왕복해야 한다.
|
|
- artifact: README.candidate.md
|
|
section-id: first-command
|
|
line-start: 89
|
|
line-end: 95
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
첫 명령이 '현재 트리의 판정은 확인되지 않았습니다'로 끝난다. 정직하지만 첫 실행
|
|
독자가 가져갈 현재 성공 신호는 exit 0과 verdict OK뿐이고, 그 점을 문장으로
|
|
정리해 주지 않는다.
|
|
technical-explanation:
|
|
score: 4
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: workflows
|
|
line-start: 122
|
|
line-end: 126
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
R-001의 근본 원인이 해소됐다. 과잉 일반화된 옛 C-HUMAN-POINTS가 plan별 토큰 지도로
|
|
교체돼 human-gate(cascade·wave), human-acceptance-receipt-present(venture-bootstrap),
|
|
human- 리터럴 없음(light·design-direction)을 구분한다. F-WORKFLOW-HUMAN-GATE-MAP과
|
|
1대1로 대응한다.
|
|
- artifact: README.candidate.md
|
|
section-id: workflow-wave-light
|
|
line-start: 245
|
|
line-end: 251
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
네 문장이 게이트 기제를 단계별로 분해한다. wave·light가 verification에서 cascade와
|
|
같은 게이트를 쓴다는 점, wave.acceptance의 exit gate 문자열이 cascade와 동일하다는 점,
|
|
light에는 released 자리가 없다는 점, 빈 exit gate가 종단 표시라는 점이 각각 별도
|
|
claim으로 분리됐다. 마지막 C-TERMINAL-SHAPE가 '빈 게이트=통제 없음' 오독을 차단한다.
|
|
- artifact: README.candidate.md
|
|
section-id: limitations
|
|
line-start: 595
|
|
line-end: 595
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
'점검 영역이 14개라는 사실이 14개 영역의 런타임 강제를 뜻하지는 않는다'는 문장은
|
|
점검 대상과 강제 배선을 구분한 드문 서술이다. F-VERIFY-DOCTOR-EXECUTED의
|
|
section-14-detail caveat를 정확히 옮겼다.
|
|
- artifact: README.candidate.md
|
|
section-id: verification
|
|
line-start: 426
|
|
line-end: 434
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
감점 근거는 새 등급 체계가 자기 정의를 어긴 점이다. L504-508이 등급은 셋이라고
|
|
선언했는데 표의 '검증 수준' 칸은 네 번째 값 '현재 트리에서 실행하지 않음'을 쓴다(R-101).
|
|
task-usability:
|
|
score: 4
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: prerequisites
|
|
line-start: 44
|
|
line-end: 53
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
전제조건 표가 최소 버전·확인된 버전·없을 때의 결과를 함께 줘서 설치 전에 자기 환경을
|
|
판정할 수 있다(F-PREREQ-TOOLS). 리팩터의 영향을 받지 않은 부분이고 그대로 유지됐다.
|
|
- artifact: README.candidate.md
|
|
section-id: verify-commands
|
|
line-start: 467
|
|
line-end: 475
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
13:36에 다시 돌린 네 명령은 명령·출력 문자열·종료 코드·기준 시점을 모두 갖췄다.
|
|
gen_agents --check가 확인하지 않는 범위까지 적어(L471) 도구의 한계를 함께 준다.
|
|
- artifact: README.candidate.md
|
|
section-id: first-command
|
|
line-start: 91
|
|
line-end: 95
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
감점 근거는 첫 명령의 판정 기준이다. L39가 '명령마다 검증 수준을 함께 적었습니다'라고
|
|
약속하지만 이 명령에는 등급 표기가 없고, 제시된 출력 '35 OK'는 13개 섹션 시절의
|
|
것이다(R-101, R-105).
|
|
prose-clarity:
|
|
score: 4
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: workflow-wave-light
|
|
line-start: 231
|
|
line-end: 231
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
R-003이 해소됐다. 절 제목의 plan 이름이 인라인 코드로 바뀌어 KO-ENGLISH-HEADING
|
|
경고 2건(옛 P-014·P-015)이 prose-report.json에서 사라졌다. 경고 총계는 53에서 44로
|
|
줄었고 errors는 0이다.
|
|
- artifact: README.candidate.md
|
|
section-id: operating-model
|
|
line-start: 25
|
|
line-end: 30
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
R-002의 핵심 지점이 반영됐다. 운영 원리 6항의 계약 키가 인라인 코드로 바뀌었고,
|
|
일반명사였던 caller는 '호출자'로, defense-in-depth는 '심층 방어(defense-in-depth)'로
|
|
정리돼 식별자와 개념어가 구분된다.
|
|
- artifact: README.candidate.md
|
|
section-id: verify-commands
|
|
line-start: 463
|
|
line-end: 463
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
감점 근거는 잔여 밀도다. R-002가 지목한 두 곳만 고쳐 이 문장이 문서에서 가장 조밀한
|
|
맨 영문 줄로 남았다. KO-UNMARKED-ENGLISH-DENSITY P-026이 한 문장에서 10개 토큰을
|
|
집계한다(R-108).
|
|
- artifact: README.candidate.md
|
|
section-id: bench-cascade
|
|
line-start: 577
|
|
line-end: 577
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
KO-VAGUE-BENEFIT P-036을 전 심사가 오탐으로 판정하고 그대로 뒀는데, 절반만 맞다.
|
|
두 번째 문장('통계적 우월성을 확정하지 않습니다')은 구체적 부정 단서가 맞지만 앞의
|
|
'설계 문서가 붙인 단서도 분명합니다'는 예고 문장이다(R-110).
|
|
visual-judgment:
|
|
score: 4
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: workflows
|
|
line-start: 146
|
|
line-end: 155
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
R-001의 시각 결함이 해소됐다. wave의 acceptance -> released에 cascade와 같은 육각형
|
|
human-gate 노드(wg)가 놓여 두 경로가 같은 통제를 받는다는 점이 대비 없이 읽힌다.
|
|
F-WORKFLOW-WAVE-LIGHT의 wave-vs-cascade-acceptance와 일치한다.
|
|
- artifact: README.candidate.md
|
|
section-id: workflows
|
|
line-start: 157
|
|
line-end: 162
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
light의 '게이트 없음' 오독은 재배치가 아니라 실제로 닫혔다. l3 -> l4 간선이
|
|
cascade·wave와 같은 quality-gate-passed 라벨을 달았고, 종단 노드가 자기 사유
|
|
'terminal-stage · released 전이 없음'을 스스로 적는다. 도형도 released 종단과 같은
|
|
stadium이라 C-TERMINAL-SHAPE의 규칙성과 어긋나지 않는다.
|
|
- artifact: README.candidate.md
|
|
section-id: workflows
|
|
line-start: 164
|
|
line-end: 174
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
venture-decision에 human-acceptance-receipt-present를 자기 리터럴로 표기한 판단이
|
|
옳다. 승인 게이트는 육각형(cg·wg·vg), 사람 입력 선행조건은 평행사변형(vh)으로
|
|
도형이 구분되므로 classDef human이 같은 색을 줘도 색맹 독자가 종류를 구별할 수 있다.
|
|
- artifact: README.candidate.md
|
|
section-id: workflows
|
|
line-start: 140
|
|
line-end: 154
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
감점 근거는 R-001과 같은 모양의 잔여 비대칭이다. cascade에만 quality-gate-failed
|
|
재작업 점선이 있고 wave·light에는 실패 경로가 없다. 근본 원인도 같다 —
|
|
F-WORKFLOW-CASCADE와 F-WORKFLOW-DESIGN-DIRECTION에는 rework-transition 항목이
|
|
있는데 F-WORKFLOW-WAVE-LIGHT에는 없다(R-109).
|
|
|
|
hard-gates:
|
|
passed: true
|
|
failures: []
|
|
|
|
reader-simulations:
|
|
30-seconds:
|
|
outcome: PASS
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: overview
|
|
line-start: 6
|
|
line-end: 10
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
무엇인가·왜 존재하는가 — '회사 운영을 AI 에이전트에게 분담시키는 파일 기반 운영체계'와
|
|
계약을 파일로 고정하는 목적, 개발과 비즈니스를 같은 계약에서 다룬다는 범위를 세 문단에서
|
|
얻는다.
|
|
- artifact: README.candidate.md
|
|
section-id: overview
|
|
line-start: 12
|
|
line-end: 16
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
누구에게 필요한가 — 독자 표가 세 유형과 각자 이 문서에서 가져갈 결과를 직접 적는다.
|
|
추론이 필요 없다.
|
|
- artifact: README.candidate.md
|
|
section-id: overview
|
|
line-start: 18
|
|
line-end: 18
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
범위 고지가 한 문장으로 줄어 30초 독자의 판단을 더 이상 지연시키지 않는다. 전 심사
|
|
R-006의 감점 사유가 사라졌다.
|
|
5-minutes:
|
|
outcome: PASS
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: operating-model
|
|
line-start: 23
|
|
line-end: 34
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
핵심 가치 — 계약 우선, 호출자 불신, 증거 receipt 대조, 2중 도구 경계를 기제 수준에서
|
|
파악한다. 도입부 한 문장이 '계약 파일이 선언한 규칙이며 런타임 강제를 실행해 확인하지
|
|
않았다'고 밝혀 전 심사 R-004가 해소됐다.
|
|
- artifact: README.candidate.md
|
|
section-id: quick-start
|
|
line-start: 39
|
|
line-end: 103
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
실행 방법 — 설치·workspace·배선 확인·첫 명령이 끊김 없이 이어진다. 다만 L39가 약속한
|
|
명령별 검증 수준 표기가 L92 doctor 명령에는 없다(R-101).
|
|
- artifact: README.candidate.md
|
|
section-id: workflows
|
|
line-start: 108
|
|
line-end: 199
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
구조 — 표와 다이어그램이 다섯 plan을 단계·종단 상태·사람 승인 지점으로 비교시킨다.
|
|
wave를 고른 독자가 '릴리스에 사람 승인이 필요 없다'는 잘못된 결론을 얻던 전 심사의
|
|
5분 시뮬레이션 결함이 제거됐다.
|
|
- artifact: README.candidate.md
|
|
section-id: limitations
|
|
line-start: 591
|
|
line-end: 604
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
한계 — 14개 항목이 근거와 영향을 짝지어 준다. 미검증 범위(스위트 통과 여부 UNKNOWN)와
|
|
미커밋 삭제가 분리돼 있다.
|
|
contributor:
|
|
outcome: PASS
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: contributing
|
|
line-start: 609
|
|
line-end: 616
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
코드 추가 위치와 테스트 방법 — '정본을 먼저 고칩니다'가 role-registry와 06-agent-work를
|
|
지목하고, 재생성·재검증 명령이 순서대로 주어진다. L355가 생성물 직접 수정을 금지한다.
|
|
- artifact: README.candidate.md
|
|
section-id: reference
|
|
line-start: 627
|
|
line-end: 641
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
상세 문서 이동 — 정본 파일 14개와 설계 이력 링크가 본문 복제 없이 연결된다.
|
|
verification.json이 path 18/18, anchor 1/1 해결을 확인했다.
|
|
- artifact: README.candidate.md
|
|
section-id: contributing
|
|
line-start: 613
|
|
line-end: 620
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
체크리스트 3항은 충족하나 조건부다. HEAD를 clone한 기여자가 이 절차를 그대로 따르면
|
|
gen_agents.py가 문서와 다른 카드 집합을 만든다. 이 오해는 R-102로 별도 기록한다.
|
|
|
|
findings:
|
|
- id: R-101
|
|
severity: major
|
|
category: verification-honesty
|
|
subject: verification-level-grading
|
|
section: verification
|
|
message: >-
|
|
등급(grade)과 기준 시점(currency)을 두 축으로 나눈 재구성은 방향이 옳지만, 그 축을
|
|
싣고 있는 표가 자기 정의를 어긴다. L502는 '이 문서는 검증 결과를 세 등급으로 나눠
|
|
표기합니다'라고 선언하고 L504-508이 세 등급을 정의한다. 그런데 L426 표의 '검증 수준'
|
|
칸은 네 번째 값 '현재 트리에서 실행하지 않음'을 쓴다. 이것은 등급이 아니라 기준 시점
|
|
진술이고, 바로 옆에 기준 시점 칸이 따로 있는데도 그 칸에는 '—'가 들어간다. 그 결과
|
|
run_all.py와 doctor.py 행은 등급도 시점도 잃는다. 두 명령은 실제로 12:03에 실행됐으므로
|
|
이 모델에서 정확한 표기는 등급 '이번 분석에서 실행한 결과' · 기준 시점 '12:03(무효)'이며,
|
|
그 정보는 표 밖 L436에만 있다. 분리한 두 축을 정작 두 축이 필요한 행에서 합쳐 버린 셈이다.
|
|
같은 결함이 약속 층위에서도 반복된다. L39는 '명령마다 검증 수준을 함께 적었습니다',
|
|
L518은 '앞의 절에 나온 명령에도 같은 기준으로 등급과 기준 시점을 붙였습니다'라고 하지만,
|
|
L92 doctor 명령과 L450 run_all.py 명령에는 등급 표기가 없다. pip install(L65)과 재생성
|
|
명령(L618)에만 '(검증 수준: ...)'이 붙어 있다. readme-outline의 quick-start
|
|
content-requirements '각 명령의 검증 수준을 quick-start 안에서 과장 없이 표기'와
|
|
verify-levels의 '등급 표기를 다른 섹션의 명령에도 일관 적용한다는 약속'이 모두 미충족이다.
|
|
수정은 새 사실 없이 가능하다. 표의 '검증 수준' 칸을 세 등급으로만 채우고 무효 사실은
|
|
기준 시점 칸에 '12:03 — 현재 트리 아님'으로 옮긴 뒤, L92와 L450에도 같은 표기를 붙이면
|
|
된다.
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: verification
|
|
line-start: 432
|
|
line-end: 433
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
두 행의 '검증 수준' 칸이 '현재 트리에서 실행하지 않음', 기준 시점 칸이 '—'다.
|
|
'확인된 신호' 칸도 '현재 통과 여부 미확인'이어서 세 칸이 같은 말을 반복하고
|
|
F-VERIFY-SUITE-EXECUTED가 보유한 12:03 결과는 표에 남지 않는다.
|
|
- artifact: README.candidate.md
|
|
section-id: verify-levels
|
|
line-start: 502
|
|
line-end: 508
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
등급 어휘를 세 개로 못박은 정의표. 표에 쓰인 네 번째 값은 여기에 없다.
|
|
- artifact: README.candidate.md
|
|
section-id: quick-start
|
|
line-start: 39
|
|
line-end: 39
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
'명령마다 검증 수준을 함께 적었습니다'라는 약속. 같은 절 L92 명령에는 표기가 없다.
|
|
- artifact: README.candidate.md
|
|
section-id: verify-levels
|
|
line-start: 518
|
|
line-end: 518
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
'앞의 절에 나온 명령에도 같은 기준으로 등급과 기준 시점을 붙였습니다'는 진술이
|
|
L92·L450에서 사실이 아니다.
|
|
route-to: README_DRAFTED
|
|
status: open
|
|
|
|
- id: R-102
|
|
severity: major
|
|
category: verification-honesty
|
|
subject: head-clone-divergence
|
|
section: contributing
|
|
message: >-
|
|
미커밋 상태에 대한 고지가 '파일 개수'까지만 도달하고 '명령의 동작'에는 도달하지 않는다.
|
|
L592-593은 추적 카드 72 대 워킹 트리 75, 삭제된 fam-*.md 26개를 밝히고 'clone한 독자는
|
|
이 문서가 설명하는 것과 다른 저장소를 받습니다'라고까지 적는다. 여기까지는 정직하다.
|
|
문제는 기여 절차다. L609-616은 HEAD를 clone한 기여자에게 gen_agents.py 재생성과
|
|
run_all.py 재검증을 그대로 지시하는데, 이 재작성이 근거로 삼은 사실에 따르면 HEAD의
|
|
gen_agents.py는 워킹 트리의 것과 다른 프로그램이다. F-LIMIT-CONCURRENT-REFACTOR는
|
|
gen_agents.py가 831행에서 537행으로 줄고 resolver/router/fam 카운터 코드가 제거됐다고
|
|
기록하고, F-LIMIT-UNCOMMITTED-REGENERATION은 'gen_agents는 이제 75개 concrete 카드만
|
|
생성하며 router/resolver/family 카드를 생성하지 않는다'고 기록한다. 즉 HEAD를 clone해
|
|
L614를 실행한 기여자는 문서가 말한 75장이 아니라 다른 카드 집합을 얻고, 이어지는
|
|
gen_agents.py --check도 문서에 실린 '75 concrete agents (profiles=75)'와 다른 값을 낸다.
|
|
L357·L359의 카드 구성과 'resolver·router 각각 0개'도 그 독자에게는 성립하지 않는다.
|
|
새 사실은 필요 없다. 이미 있는 두 사실을 근거로, 한계 절이나 기여 절에 '이 변경은 파일
|
|
삭제만이 아니라 생성기 자체의 동작 변경을 포함하므로, HEAD를 clone한 뒤 재생성하면 이
|
|
문서의 카드 수치가 재현되지 않습니다' 한 문장을 더하면 닫힌다.
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: contributing
|
|
line-start: 613
|
|
line-end: 618
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
재생성·재검증 명령 블록. HEAD clone 독자에게 이 절차가 문서와 다른 결과를 낸다는
|
|
단서가 없다.
|
|
- artifact: README.candidate.md
|
|
section-id: limitations
|
|
line-start: 592
|
|
line-end: 593
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
미커밋 고지가 카드 개수와 삭제 파일에만 걸려 있다. 생성기 동작 차이는 언급되지 않는다.
|
|
- artifact: README.candidate.md
|
|
section-id: repo-map-claude
|
|
line-start: 357
|
|
line-end: 359
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
카드 구성 43/19/10/3과 'resolver·router 0개'는 워킹 트리 전용 값인데 절 도입부
|
|
L343의 13:36 고지 범위가 표까지로 읽히기 쉬워 구조적 속성처럼 보인다.
|
|
route-to: README_DRAFTED
|
|
status: open
|
|
|
|
- id: R-103
|
|
severity: major
|
|
category: claim-integrity
|
|
subject: commands-block-currency
|
|
section: verification
|
|
message: >-
|
|
repository-facts.yaml의 commands 블록이 재추출을 따라가지 못해 같은 파일 안에서 서로
|
|
모순된다. CMD-3에는 이번 재작업에서 '그 결과(35 OK)는 SUPERSEDED다 ... 현재 verdict는
|
|
확인되지 않았다'는 무효 표시가 정확히 들어갔다. 그런데 같은 성격의 나머지 세 항목은
|
|
그대로다. CMD-6의 limitations는 'ad-hoc 실행한 결과는 F-VERIFY-GENAGENTS-EXECUTED에
|
|
기록됨(exit 0, 101 agents)'이라고 적는데, 그 F-VERIFY-GENAGENTS-EXECUTED는 이제
|
|
'75 concrete agents ... (profiles=75)'를 기록한다. 참조와 피참조가 정면으로 어긋난다.
|
|
CMD-2는 'exit 0, 34/34 green'을, CMD-8은 'run_all.py 전체 실행에는 포함됐고 green이었음'을
|
|
무효 표시 없이 단정하지만 F-VERIFY-SUITE-EXECUTED의 current-pass-state는 UNKNOWN이다.
|
|
README 본문은 이 오염을 물려받지 않았다 — L469가 75와 101을 시점과 함께 정확히 구분한다.
|
|
그래서 독자 피해는 없고 심각도를 critical로 올리지 않는다. 그러나 commands 블록은
|
|
claim-map이 참조하는 사실 원본이자 이후 refresh·audit이 읽는 입력이므로, 여기 남은
|
|
'101 agents'와 '34/34 green'은 다음 실행에서 되살아날 수 있는 값이다. 이번 수정이
|
|
한 곳(CMD-3)에만 적용되고 같은 종류의 나머지에 적용되지 않았다는 점 자체가 신호다.
|
|
evidence:
|
|
- artifact: repository-facts.yaml
|
|
section-id: commands
|
|
line-start: 1547
|
|
line-end: 1557
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
CMD-6이 '(exit 0, 101 agents)'로 F-VERIFY-GENAGENTS-EXECUTED를 인용하지만 그 사실의
|
|
stdout은 '75 concrete agents ... (profiles=75)'다.
|
|
- artifact: repository-facts.yaml
|
|
section-id: commands
|
|
line-start: 1498
|
|
line-end: 1508
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
CMD-2가 'exit 0, 34/34 green'을 무효 표시 없이 단정한다. 대응 사실의
|
|
current-pass-state는 UNKNOWN이다.
|
|
- artifact: repository-facts.yaml
|
|
section-id: commands
|
|
line-start: 1510
|
|
line-end: 1521
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
대조 근거 — CMD-3에는 SUPERSEDED 표시가 정확히 들어갔다. 같은 처리가 CMD-2·6·8에는
|
|
적용되지 않았다.
|
|
- artifact: repository-facts.yaml
|
|
section-id: commands
|
|
line-start: 1569
|
|
line-end: 1577
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
CMD-8이 'run_all.py 전체 실행에는 포함됐고 green이었음'이라고 적어 무효화된 실행을
|
|
현재 상태처럼 서술한다.
|
|
route-to: FACTS_EXTRACTED
|
|
status: open
|
|
|
|
- id: R-104
|
|
severity: minor
|
|
category: claim-integrity
|
|
subject: new-hook-module-count
|
|
section: limitations
|
|
message: >-
|
|
L594의 '최상위 hook에 새 모듈 네 개가 나타났습니다'는 사실과 어긋난다.
|
|
F-LIMIT-CONCURRENT-REFACTOR의 new-hook-modules는 usage_observer.py를 포함해 다섯 개이며,
|
|
그중 네 개가 settings.json에 배선되지 않았다. 문장이 뒤에 네 개만 나열하므로 독자는
|
|
'새로 나타난 모듈이 넷'으로 읽는데, 같은 문서 L373은 usage_observer.py가 13:36에 새로
|
|
배선됐다고 적는다. 두 문장을 합치면 새 모듈은 다섯이다. 정확한 표기는 '새 모듈 다섯 개
|
|
가운데 네 개는 배선돼 있지 않습니다'이며 새 사실이 필요 없다. 주목할 점은 대응 claim
|
|
C-LIM-UNWIRED-HOOKS의 statement가 이 첫 문장을 제외하고 두 번째 문장만 담고 있다는
|
|
것이다. 수치를 담은 문장이 claim 추적 밖에 있어 검증 대상이 되지 못했다(R-106과 같은 패턴).
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: limitations
|
|
line-start: 594
|
|
line-end: 594
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
'새 모듈 네 개가 나타났습니다' — F-LIMIT-CONCURRENT-REFACTOR는 다섯 개를 기록한다.
|
|
- artifact: README.candidate.md
|
|
section-id: repo-map-claude
|
|
line-start: 373
|
|
line-end: 373
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
같은 문서가 다섯 번째 신규 모듈 usage_observer.py의 신규 배선을 별도로 서술한다.
|
|
- artifact: claim-map.yaml
|
|
section-id: limitations
|
|
line-start: 936
|
|
line-end: 941
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
C-LIM-UNWIRED-HOOKS의 statement가 '네 개' 문장을 제외해 부정확한 부분이 추적 밖에 있다.
|
|
route-to: README_DRAFTED
|
|
status: open
|
|
|
|
- id: R-105
|
|
severity: minor
|
|
category: verification-honesty
|
|
subject: doctor-section-count
|
|
section: first-command
|
|
message: >-
|
|
L89는 doctor.py가 14개 영역을 점검한다고 현재 값으로 적고, 여섯 줄 뒤 L95는 12:03 실행의
|
|
'35 OK · 0 WARN · 0 FAIL'을 제시한다. 그런데 F-VERIFY-DOCTOR-EXECUTED에 따르면 그 35 OK를
|
|
낸 실행 시점의 섹션 수는 13이고(section-count-historical), 14는 재추출 시점에 소스에서
|
|
정적으로 확인한 현재 값이다(section-count-currency: CURRENT). 즉 인접한 두 수치가 서로
|
|
다른 트리에서 왔는데 14 쪽에는 시점 표기가 없다. 문서가 '현재 트리의 판정은 확인되지
|
|
않았습니다'로 보정하므로 오독의 폭은 크지 않지만, 첫 명령을 실행한 독자가 자기 출력의
|
|
항목 수를 35와 대조하게 되는 자리다. 14에 시점을 붙이거나, 섹션 14가 12:03 이후 추가됐다는
|
|
한 구절(F-VERIFY-DOCTOR-EXECUTED의 section-14-detail.added-by에 이미 있다)을 덧붙이면
|
|
해소된다.
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: first-command
|
|
line-start: 89
|
|
line-end: 89
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
'14개 영역'에 기준 시점 표기가 없다. 이 값은 13:36 정적 확인값이다.
|
|
- artifact: README.candidate.md
|
|
section-id: first-command
|
|
line-start: 95
|
|
line-end: 95
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
'35 OK · 0 WARN · 0 FAIL'은 섹션이 13개이던 12:03 실행의 출력이다. 두 수치가 같은
|
|
트리에서 온 것처럼 인접해 있다.
|
|
route-to: README_DRAFTED
|
|
status: open
|
|
|
|
- id: R-106
|
|
severity: minor
|
|
category: claim-integrity
|
|
subject: claim-statement-drift
|
|
section: operating-model
|
|
message: >-
|
|
대규모 수정 과정에서 claim statement가 README 문장보다 좁아진 사례가 반복된다. 세 곳에서
|
|
claim-id가 붙은 단락의 첫 문장 또는 둘째 문장이 claim statement에 포함되지 않았고,
|
|
공교롭게 그 빠진 문장이 수치를 담은 쪽인 경우가 있다. (1) L23은 '이 하네스의 운영 원리는
|
|
여섯 가지입니다'로 시작하지만 C-RULES-DECLARED의 statement는 두 번째 문장부터 시작한다.
|
|
(2) L591은 '12:03과 13:36 두 시점의 추출값이 달랐고, 13:36 이후에도 값이 다시 달라졌을 수
|
|
있습니다'라는 둘째 문장을 갖는데 C-LIM-CONCURRENT의 statement는 첫 문장뿐이다.
|
|
(3) L594는 R-104가 지적한 '네 개' 문장을 갖는데 C-LIM-UNWIRED-HOOKS의 statement에는 없다.
|
|
전 심사 R-007이 요구한 claim-id 부착 자체는 이행됐고(L23의 비교 프레이밍 제거, L361
|
|
C-HOOK-EVENTS 신설) 이 항목은 그보다 좁은 잔여 문제다. claim statement가 실제 README
|
|
문장과 1대1이 아니면 다음 refresh에서 추적 밖 문장이 소리 없이 바뀔 수 있다.
|
|
evidence:
|
|
- artifact: claim-map.yaml
|
|
section-id: operating-model
|
|
line-start: 30
|
|
line-end: 35
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
C-RULES-DECLARED statement가 README L23의 첫 문장 '이 하네스의 운영 원리는 여섯
|
|
가지입니다'를 포함하지 않는다.
|
|
- artifact: claim-map.yaml
|
|
section-id: limitations
|
|
line-start: 918
|
|
line-end: 923
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
C-LIM-CONCURRENT statement가 README L591의 둘째 문장(두 추출 시점과 그 이후 변동
|
|
가능성)을 담지 않는다.
|
|
- artifact: README.candidate.md
|
|
section-id: operating-model
|
|
line-start: 23
|
|
line-end: 23
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
한 줄에 두 문장이 있고 claim-id는 하나다. 덧붙여 '여섯 가지'가 인접 두 문장에서
|
|
반복돼 정직성 문장이 길어진 만큼 읽기 부담이 늘었다.
|
|
route-to: README_DRAFTED
|
|
status: open
|
|
|
|
- id: R-107
|
|
severity: minor
|
|
category: prose-clarity
|
|
rule-id: KO-UNMARKED-ENGLISH-DENSITY
|
|
subject: worker
|
|
section: repo-map-claude
|
|
message: >-
|
|
Writer의 반론을 인정한다. 맨 명사 worker를 인라인 코드로 감싸지 않은 판단은 옳다.
|
|
gen_agents.py의 리터럴 키는 fan-out-workers처럼 복합어이고 worker 단독은 식별자가
|
|
아니므로, 코드 표기는 존재하지 않는 식별자를 존재한다고 주장하는 셈이 된다.
|
|
korean-reader-prose.md의 인라인 코드 규칙은 '파일·모듈·API·상태 값·제품명'을 대상으로
|
|
하므로 일반명사에는 적용되지 않는다. P-019는 이 지점에서 오탐이다.
|
|
다만 같은 논리가 같은 문장의 나머지에도 적용된다. `collapse concrete`, `direct
|
|
single-member`, `synthesis lead`, 그리고 L359의 `family resolver`는 모두 공백으로 이어
|
|
쓴 형태이고, F-ARCH-AGENT-CARD-COMPOSITION의 실제 키는
|
|
collapse-concrete-workers·direct-single-member-workers·synthesis-leads·family-resolvers로
|
|
하이픈 연결이다. 즉 이들도 리터럴이 아닌데 코드로 표기돼 있어 Writer 자신의 기준이 한
|
|
문장 안에서 갈린다. 선택지는 둘이다. 하이픈 리터럴로 통일하거나(`fan-out`,
|
|
`collapse-concrete`, `direct-single-member`, `synthesis-lead`), 이 자리를 카드 종류를
|
|
가리키는 한국어 서술로 바꾸고 코드 표기를 걷어내는 것이다. 어느 쪽이든 새 사실이 필요 없다.
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: repo-map-claude
|
|
line-start: 357
|
|
line-end: 357
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
한 문장 안에서 공백형 다어절 3개는 코드 표기, 맨 명사 worker는 비표기다.
|
|
prose-report P-019가 worker 3회를 집계한다.
|
|
- artifact: README.candidate.md
|
|
section-id: repo-map-claude
|
|
line-start: 359
|
|
line-end: 359
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
`family resolver`도 공백형이다. 사실의 키는 family-resolvers다.
|
|
route-to: README_DRAFTED
|
|
status: open
|
|
|
|
- id: R-108
|
|
severity: minor
|
|
category: prose-clarity
|
|
rule-id: KO-UNMARKED-ENGLISH-DENSITY
|
|
section: verify-commands
|
|
message: >-
|
|
R-002가 지목한 두 위치(운영 원리 6항, 카드 구성 문장)는 고쳐졌으나 그 지적은 위치가
|
|
아니라 원칙이었다. 원칙을 문서 전체에 적용하지 않아 L463이 이제 문서에서 가장 조밀한
|
|
맨 영문 문장으로 남았다. P-026이 한 문장에서 settings, json, workspace, agent, SSOT,
|
|
append-only, JSONL, compiled, artifact, registry 열 개 토큰을 집계한다. 이 가운데
|
|
settings.json·SSOT·JSONL은 파일명·약어라 인라인 코드가 정보를 늘리고, compiled artifact
|
|
registry는 앞서 L336에서 이미 설명한 대상이므로 그 표기를 재사용하면 된다. 나머지 잔여
|
|
경고 대부분은 고유명사이거나 이미 코드 표기된 항목을 토크나이저가 재집계한 것으로,
|
|
추가 조치가 필요 없다.
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: verify-commands
|
|
line-start: 463
|
|
line-end: 463
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
KO-UNMARKED-ENGLISH-DENSITY P-026 — 한 문장 10개 토큰. R-002 수정 범위 밖에 있었다.
|
|
route-to: README_DRAFTED
|
|
status: open
|
|
|
|
- id: R-109
|
|
severity: minor
|
|
category: architecture-mismatch
|
|
subject: wave-light-rework-transitions
|
|
section: workflows
|
|
message: >-
|
|
R-001을 낳은 추출 공백이 인접한 축에 그대로 남아 있다. F-WORKFLOW-CASCADE에는
|
|
rework-transition('verification -> build, quality-gate-failed')이 있고
|
|
F-WORKFLOW-DESIGN-DIRECTION에는 rework-transitions 두 개가 있는데,
|
|
F-WORKFLOW-WAVE-LIGHT에는 재작업·실패 전이 항목 자체가 없다. 그 결과 다이어그램은
|
|
cascade에만 quality-gate-failed 점선을 그리고 wave·light에는 실패 경로를 그리지 않는다.
|
|
이것은 R-001과 같은 모양의 구조다 — 나란히 놓인 경로에서 한쪽에만 그린 간선은 다른 쪽에
|
|
그 전이가 없다는 적극적 암시로 읽힌다. 다만 R-001과 달리 본문이 wave·light의 실패 경로를
|
|
단정하지 않고, 두 경로 모두 verification 게이트를 공유한다는 사실은 L245가 명시하므로
|
|
독자가 얻는 오해의 폭이 작다. 그래서 critical이 아니라 minor로 기록한다. 조치는
|
|
FACTS_EXTRACTED에서 wave·light의 side-transition과 재작업 전이 유무를 정본에서 확인해
|
|
확정하는 것이다. 확인 전까지는 '있다'로도 '없다'로도 읽히지 않게 두어야 한다. 심사자
|
|
관찰이며 새 사실 정의가 아니다.
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: workflows
|
|
line-start: 140
|
|
line-end: 141
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
cascade는 quality-gate-passed 정방향과 quality-gate-failed 점선 재작업을 함께 그린다.
|
|
- artifact: README.candidate.md
|
|
section-id: workflows
|
|
line-start: 150
|
|
line-end: 154
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
wave는 quality-gate-passed 정방향과 loop-stage 자기순환만 있고 실패 전이가 없다.
|
|
light(L160-161)도 같다. 근거 공백은 F-WORKFLOW-WAVE-LIGHT에 rework 항목이 없다는 점이다.
|
|
route-to: FACTS_EXTRACTED
|
|
status: open
|
|
|
|
- id: R-110
|
|
severity: minor
|
|
category: prose-clarity
|
|
rule-id: KO-VAGUE-BENEFIT
|
|
section: bench-cascade
|
|
message: >-
|
|
설명 예고 문장이 누적된다. quality-review.md가 흔한 결함으로 꼽는 '설명할 내용을 예고한
|
|
뒤에 사실을 말하는' 형태다. L577 '설계 문서가 붙인 단서도 분명합니다', L471 '이 점검이
|
|
확인하지 않는 것도 분명합니다', L440 '두 명령을 다시 돌리지 않은 이유가 있습니다',
|
|
L84 '주의할 점이 있습니다'가 모두 뒤 문장을 예고만 하고 정보를 더하지 않는다. 이 가운데
|
|
L440과 L577은 이번 재작업이 늘린 문장이라, 정직성 서술이 진실해진 것 이상으로 길어졌다는
|
|
신호로 읽힌다. 전 심사가 P-036을 오탐으로 판정한 것은 절반만 옳다. 지적된 두 문장 중
|
|
뒤 문장('통계적 우월성이나 일반적 생산성 향상을 확정하지 않습니다')은 구체적 부정 단서가
|
|
맞지만, 앞 문장은 KO-VAGUE-BENEFIT이 겨냥하는 바로 그 형태다. 예고 문장을 지우고 사실
|
|
문장만 남기면 뜻이 줄지 않고 분량만 준다.
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: bench-cascade
|
|
line-start: 577
|
|
line-end: 577
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
KO-VAGUE-BENEFIT P-036이 두 문장을 함께 집계한다. 앞 문장이 예고, 뒤 문장이 사실이다.
|
|
- artifact: README.candidate.md
|
|
section-id: verification
|
|
line-start: 440
|
|
line-end: 440
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
'두 명령을 다시 돌리지 않은 이유가 있습니다' — 이번 재작업에서 추가된 예고 문장.
|
|
뒤 문장이 이유를 온전히 담고 있다.
|
|
route-to: README_DRAFTED
|
|
status: open
|
|
|
|
# ── 전 심사 지적의 재검증 결과 ─────────────────────────────────────────────
|
|
- id: R-001
|
|
severity: critical
|
|
category: architecture-mismatch
|
|
subject: workflow-selection
|
|
section: workflows
|
|
message: >-
|
|
해소됨. 사실 층위에서 근본 원인이 제거됐다. F-WORKFLOW-WAVE-LIGHT에 stage별 exit-gate가
|
|
추가돼 wave.acceptance가 [release-approved, no-unresolved-critical-risks, human-gate]를
|
|
갖는다는 점과 light.acceptance가 command null · exit-gate []인 종단이라는 점이 분리
|
|
기록됐고, 새 사실 F-WORKFLOW-HUMAN-GATE-MAP이 plan별 사람 승인 토큰과 종단 stage 규칙성을
|
|
확정했다. 다이어그램은 wave에 cascade와 동일한 육각형 human-gate 노드를 두어 비대칭을
|
|
없앴고, venture-decision에도 자기 리터럴로 노드를 추가해 같은 결함이 한 plan 건너
|
|
재발하는 것을 막았다. 본문은 C-HUMAN-POINTS를 plan별 토큰 지도로 교체하고
|
|
C-WAVE-RELEASE-GATE·C-LIGHT-NO-RELEASE·C-TERMINAL-SHAPE를 신설했다. light가 '게이트가
|
|
없다'로 읽히던 문제는 재배치가 아니라 실제로 닫혔다 — 공유 quality-gate-passed 간선을
|
|
그리고 종단 노드가 자기 사유를 적기 때문이다. 잔여 사항은 R-109로 분리 기록한다.
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: workflows
|
|
line-start: 151
|
|
line-end: 153
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
w5 --> wg{{human-gate}} --> w6(released) — cascade L140-143과 도형·라벨이 같다.
|
|
- artifact: README.candidate.md
|
|
section-id: workflow-wave-light
|
|
line-start: 247
|
|
line-end: 249
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
본문이 wave의 release exit gate 세 조건과 cascade와의 문자열 동일성을 명시하고,
|
|
light에 자리가 없는 이유를 별도 문장으로 준다.
|
|
route-to: FACTS_EXTRACTED
|
|
status: resolved
|
|
|
|
- id: R-002
|
|
severity: major
|
|
category: prose-clarity
|
|
rule-id: KO-UNMARKED-ENGLISH-DENSITY
|
|
section: operating-model
|
|
message: >-
|
|
해소됨. 지목된 두 위치가 모두 반영됐다. 운영 원리 6항의 계약 키가 인라인 코드로 바뀌고
|
|
caller는 '호출자', hook·validator·test는 '훅·검증기·테스트', push·pull request는
|
|
한국어로, defense-in-depth는 '심층 방어(defense-in-depth)'로 정리됐다. 경고 총계는
|
|
53에서 44로 줄었다. 원칙의 미적용 잔여분은 R-108로 분리 기록한다.
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: operating-model
|
|
line-start: 25
|
|
line-end: 32
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
6항 전체가 계약 키를 인라인 코드로 표기하고 일반명사는 한국어로 바뀌었다.
|
|
route-to: README_DRAFTED
|
|
status: resolved
|
|
|
|
- id: R-003
|
|
severity: minor
|
|
category: prose-clarity
|
|
rule-id: KO-ENGLISH-HEADING
|
|
section: workflow-wave-light
|
|
message: >-
|
|
해소됨. L231과 L269의 절 제목이 plan 식별자를 인라인 코드로 표기하고 child workflow라는
|
|
맨 영문도 '하위 워크플로'로 바뀌었다. prose-report.json에 KO-ENGLISH-HEADING 항목이
|
|
더 이상 없다.
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: workflow-wave-light
|
|
line-start: 231
|
|
line-end: 231
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
'`wave`와 `light` — 축약 경로'. L269도 같은 방식으로 수정됐다.
|
|
route-to: README_DRAFTED
|
|
status: resolved
|
|
|
|
- id: R-004
|
|
severity: minor
|
|
category: verification-honesty
|
|
section: operating-model
|
|
message: >-
|
|
해소됨. L23에 '아래 여섯 가지는 계약 파일이 선언한 규칙이며, 이 분석에서 런타임 강제를
|
|
실행해 확인하지는 않았습니다'가 추가돼 강제 서술의 assertion-type이 명시됐다.
|
|
제안된 문장과 사실상 같고 새 사실을 만들지 않았다.
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: operating-model
|
|
line-start: 23
|
|
line-end: 23
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
claim C-RULES-DECLARED가 F-ARCH-STATE-ARTIFACT·F-ARCH-HOOKS·F-LIMIT-HOOK-ACTIVATION을
|
|
근거로 붙었다.
|
|
route-to: README_DRAFTED
|
|
status: resolved
|
|
|
|
- id: R-005
|
|
severity: minor
|
|
category: verification-honesty
|
|
section: bench-cascade
|
|
message: >-
|
|
해소됨. L573에 'receipt가 있어도 실행되지는 않습니다. 세 서브커맨드 모두 현재 구현에서는
|
|
exit 3, 즉 미구현을 반환합니다'가 신설돼(C-CASCADE-BUDGET-STUB) CMD-15 limitations가
|
|
담고 있던 나머지 절반이 본문에 들어왔다.
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: bench-cascade
|
|
line-start: 571
|
|
line-end: 573
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
exit 2 거부와 exit 3 미구현이 연속 두 문장으로 붙어 있어 한 절 안에서 상충 인상이
|
|
사라졌다.
|
|
route-to: README_DRAFTED
|
|
status: resolved
|
|
|
|
- id: R-006
|
|
severity: minor
|
|
category: reader-journey
|
|
section: overview
|
|
message: >-
|
|
해소됨. 개요의 provenance 두 문단이 L18 한 문장으로 줄었고 HEAD 해시와 변경 항목 수는
|
|
검증 절 L442로 이동했다. 이동 과정에서 수치도 재추출값(269 · 26)으로 갱신됐다.
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: verification
|
|
line-start: 442
|
|
line-end: 442
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
HEAD 00db337 · 변경/미추적 269 · 삭제 26이 검증 절로 옮겨졌고 F-IDENTITY-SNAPSHOT의
|
|
13:36 값과 일치한다.
|
|
route-to: README_DRAFTED
|
|
status: resolved
|
|
|
|
- id: R-007
|
|
severity: minor
|
|
category: claim-integrity
|
|
section: operating-model
|
|
message: >-
|
|
해소됨. L25의 비교 단정이 '이 하네스의 운영 원리는 여섯 가지입니다'로 바뀌어 근거 없는
|
|
비교 프레이밍이 제거됐고, 훅 배선 문장에는 claim-id C-HOOK-EVENTS가 붙었다.
|
|
claim statement 범위 문제는 R-106으로 분리 기록한다.
|
|
evidence:
|
|
- artifact: README.candidate.md
|
|
section-id: repo-map-claude
|
|
line-start: 361
|
|
line-end: 361
|
|
content-hash: "sha256:UNCOMPUTED-NO-HASH-TOOL-IN-REVIEW-ENVIRONMENT"
|
|
observation: >-
|
|
'훅은 이벤트 다섯 곳에 배선돼 있습니다. <!-- claim-id: C-HOOK-EVENTS -->' —
|
|
claim-map에 F-ARCH-HOOKS 근거로 등재됐다.
|
|
route-to: README_DRAFTED
|
|
status: resolved
|