Files
document-haness/.agents/skills/deriving-tech-log-root-tree/references/decomposition-checklist.md
T
DongHyeonkaandClaude Fable 5.1 9d2a3725c5 pipeline: make tech-log-tree.json the one decomposition contract and enforce it
리뷰 두 건을 반영했다.

계약
- tech-log-tree.json 하나가 분해 계약이자 색인이다. 사람이 읽는 트리·Node Specification·
  후보 대장은 없어졌고, 문서에 남아 있던 그 개념을 걷어냈다
- candidateScope — 후보를 찾는 SSOT 범위. 접어 넣은 제2부·제3부는 근거이지 후보가 아니다
- sourceRepository — 분석한 저장소의 경로·리비전·판단 근거. 리비전을 모르면 null 로 두고
  지어내지 않는다. 갈래가 여럿이면 revisions
- 검사기: 계약 미채택·PENDING·PROMOTE↔글감 양방향·candidateScope·sourceRepository 를
  error/warn 으로 센다. 옛 스키마도 검사를 피하지 못한다. 테스트 22 → 31

기록 쓰기
- 템플릿 5종에 source·sourceRevision·topicName, Question 에 닫는 조건, 본문 없는 종류에서
  assets 제거. 고정 절 개수 삭제
- check_evidence.mjs — 인용한 코드가 SSOT 에 있는지, 앵커가 SSOT 를 가리키는지, 제목이
  계약과 같은지, 리비전이 저장소에 있는지. 게시된 기록에서 SSOT 와 다른 URL 을 잡았다

문체
- 문체 규칙의 정본을 ai-tells.md 로. explaining.md 의 질문체 제목·절 끝 대조 반복·그림 예고
  규칙을 삭제해 충돌을 없앴다. 첫 절 「설명 뒤에 평가를 붙이지 않는다」에 지우는 사례 네 유형
- voice 스킬의 「독자 쪽을 본다」를 자료에 오독 기록이 있을 때로 좁히고, 평가만 더한 예시를 교체
- check_prose: 안내 문장을 요구하던 경고 제거, 문장이 끝나지 않은 채 문단이 끝나는 조각 검사 추가

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-07 12:39:20 +09:00

75 lines
3.2 KiB
Markdown

# Tech Log Tree Decomposition Checklist
## Selection
- [ ] Every analysis candidate carries a disposition, and `KEEP_IN_SSOT` is used.
- [ ] `dispositionReview: PENDING` is 0 — nothing reached the tree by recall alone.
- [ ] Each `PROMOTE` node passes the independence test.
- [ ] Candidates were discovered from `final/document.md`, not from `analysis/**`.
- [ ] Material found only in `analysis/**` was added to `final/document.md` first.
- [ ] `candidateScope` is declared, and no candidate came from outside it.
## Source integrity
- [ ] The tree records the source document hash, ledger hash, and project revision.
- [ ] Every node has at least one source anchor.
- [ ] Source anchors actually contain the material implied by the title.
- [ ] Runtime-dependent claims name evidence or use `NEEDS_EVIDENCE`.
- [ ] `readiness` states how well evidenced the node is. It does not state whether the
record has been written or published.
## Topic quality
- [ ] Every Topic has one reader question, and every node in it helps answer that question.
- [ ] No two Topics share a reader question.
- [ ] Topic is an engineering problem space rather than a directory name.
- [ ] A large Topic is split when its records no longer share useful relations/criteria.
## Case
- [ ] There is a specific incident, experiment, failure, diagnosis, or verification sequence.
- [ ] The title can be understood without inventing a historical story.
- [ ] The conclusion is bounded by actual evidence.
- [ ] Observations that answer the same question with the same conclusion are one Case,
as a table or sub-sections — not several partial Cases.
## Concept
- [ ] It was added because a Case, Decision, or Question needs it, not by sweeping headings.
- [ ] `basis-version` names what the explanation was written against.
- [ ] The title names a mechanism, not an absence, a count, or an analysis-scope fact.
- [ ] No analysis section number or finding grade survives in the title.
## Reference
- [ ] The rule is reusable beyond the originating incident.
- [ ] It is not the Case summary rewritten declaratively.
- [ ] Scope and exception can be stated from sources.
## Open Question
- [ ] The answer is not already in the analysis.
- [ ] Known/unknown/next verification are separable.
- [ ] The design or a decision actually turns on the answer.
- [ ] Candidate options are included only when sources really considered them.
## Decision
- [ ] A project choice is explicitly recorded or user-supplied.
- [ ] `technology is present` is not being treated as rationale.
- [ ] The accepted cost is stated, not only the benefit.
- [ ] `NEEDS_DECISION` is used if the direction is only a recommendation.
## Duplication and shape
- [ ] No two nodes have the same primary purpose.
- [ ] Relations are used instead of copying one record into another.
- [ ] Node count is bounded by what a reader would read, not by the analysis denominator.
## Parity
- [ ] Every node traces back to a `PROMOTE` candidate, and every `PROMOTE` candidate has a node.
- [ ] `counts` matches what `build-tech-log-tree.py` produces.
- [ ] `unlisted` is empty — no record file exists outside the contract.
- [ ] `python3 scripts/verify-tech-log-tree.py <project>` reports 0 errors.