명세를 docs/memo-spec.md로 분리 + 스키마 드리프트 검사 - #20
Merged
Merged
Conversation
CLAUDE.md 가 성격이 다른 셋을 한 파일에서 하고 있었다 — 판단(작성 원칙), 명세(필드·값), 기록(변경 이력). 오늘 하루에 321 → 389줄이 됐고 그중 명세만 130줄이었다. 성격/안정성으로 쪼갠다: - CLAUDE.md 판단 + 템플릿 + 워크플로우 (389 → 305줄) - docs/memo-spec.md 명세 (필드·type·status·태그·각주·계보·링크) - 577.md 왜 그렇게 정했나 (이미 있음) 스펙에만 넣은 두 절: - 검사 체계 — 무엇이 기계 검사이고 무엇이 사람 판단인가. 린터가 조용한 게 문제 없다는 뜻이 아니라는 걸 명시한다 (저자 존댓말 309, 과압축 576 이 사각지대였다) - 채택하지 않은 것 — stale_after(고정 버전 10개), resource(URL 2개 이상 359개), verified(단일 저자). 근거를 남겨 같은 논의를 반복하지 않는다 ## 드리프트 검사 문서만 늘리면 5번째 드리프트 지점이 될 뿐이라, lint:memo 에 명세 ↔ 스키마 대조를 넣었다. 필드 표를 마커로 감싸고 이름·필수 여부를 content.config.ts 와 비교한다. 넣자마자 실제 드리프트가 드러났다 — `embed` 가 스키마에 있고 11개 메모가 쓰는데 CLAUDE.md 에는 없었다. 세 방향으로 검증: 필드 삭제 / 필수 여부 뒤집기 / 스키마에 없는 필드 추가 — 모두 오류로 잡힌다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qv2pQrCq9z1GaxxDu2vohK
|
|
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CLAUDE.md가 성격이 다른 셋을 한 파일에서 하고 있었다 — 판단(작성 원칙), 명세(필드·값), 기록(변경 이력). 오늘 하루에 321 → 389줄이 됐고 그중 명세만 130줄이었다.
쪼갠 기준: 성격/안정성
CLAUDE.mddocs/memo-spec.mdtype·status, 태그·각주, 계보, 링크 부식577.mdCLAUDE.md의 명세 자리에는 쓸 때 바로 필요한 필수 필드 5개만 남기고 나머지는 스펙을 가리킨다. 선택 필드 표를 두 곳에 두면 그 자체가 드리프트다.
스펙에만 넣은 두 절
검사 체계 — 기계와 사람의 경계
린터가 조용한 게 곧 문제가 없다는 뜻이 아니다. 오늘 사각지대를 두 번 만났다.
voice: authorparent를 걸지 않음채택하지 않은 것 — 거절 근거
같은 논의를 반복하지 않으려고 숫자와 함께 남겼다.
stale_afterresourceverifiedparent조차 오래 0이었다. 스키마가 부족한 게 아니라 후보를 못 보고 있었다드리프트 검사 — 넣자마자 실제 드리프트가 나왔다
문서만 늘리면 5번째 드리프트 지점이 될 뿐이라,
lint:memo에 명세 ↔ 스키마 대조를 넣었다. 필드 표를 마커(fields:start/fields:end)로 감싸고 이름·필수 여부를content.config.ts와 비교한다."드리프트 표면이 4개"라는 게 추상적 우려가 아니라 이미 벌어진 일이었다. 스펙에 정확히 문서화했다(CodePen·StackBlitz 같은 실행 예제 링크).
세 방향으로 검증했다:
스펙에 임계값은 적지 않았다
"무엇을 검사하는가"만 적고 "어떤 숫자로"는 코드에 뒀다 — 예를 들어
lint:voice의 존댓말 3곳 같은 임계값. 적으면 정확해지지만 튜닝할 때마다 두 곳을 고쳐야 한다. 지금 방향은 드리프트 표면을 늘리지 않는 쪽이다.확인
스킬 두 개(
create-memo,consolidate-memos)의 참조도 새 위치로 갱신했다.🤖 Generated with Claude Code
https://claude.ai/code/session_01Qv2pQrCq9z1GaxxDu2vohK
Generated by Claude Code