문서 중복·드리프트를 구조적으로 방지하기 위해 SSOT 원칙을 문서 체계에 적용한다. 신규: - docs/README.md: 문서 라우팅/역할/읽기 순서/SSOT 정의 (상대경로 링크) - scripts/validate_docs_sync.py: 가변 수치 하드코딩 금지 + 누락 엔드포인트 검사 수정: - CLAUDE.md: 문서 진입점 추가, SmartScanner 세부 동작 → architecture.md 링크 - README.md: 문서 네비게이션 섹션 추가, 고정 수치/파일별 케이스 수 제거 - docs/commands.md: validate_docs_sync.py 명령 추가; 중복 엔드포인트 2행 제거 - docs/testing.md: 테스트 총량 고정값 → pytest --collect-only -q 동적 확인으로 전환 - docs/ouroboros/82_doc_restructure_plan.md: draft → active, 실행 현황으로 전환 - .gitea/PULL_REQUEST_TEMPLATE.md: Docs Sync 체크리스트 추가 - .gitea/workflows/ci.yml + .github/workflows/ci.yml: validate_docs_sync 단계 추가 검증: - python3 scripts/validate_docs_sync.py: PASS Closes #350
Documentation Map
이 문서는 저장소 문서의 단일 라우팅/역할 정의다. 각 문서는 아래 역할 범위를 넘지 않는다.
Reading Order
- Project README: 빠른 시작, 개요
- Architecture: 시스템 구성/데이터 흐름
- Workflow: 개발/PR/검증 절차
- Commands: 실행/운영 명령 레퍼런스
- Testing: 테스트 전략/작성/운영
- Ouroboros Hub: 기획/요구사항/실행 통제 문서군
Single Source of Truth (SSOT)
- 아키텍처/동작 기준: Architecture
- 실행 명령 기준: Commands
- 테스트 정책 기준: Testing
- 요구사항/REQ 기준: Requirements Registry
- 작업/TASK 기준: Code Work Orders
- 수용/TEST 기준: Acceptance Plan
Authoring Rules
README.md,CLAUDE.md는 입문/요약 역할만 가진다.- 가변 수치(테스트 개수, API 개수, 세부 파일별 케이스 수)는 요약 문서에 고정값으로 중복 기재하지 않는다.
- 수치/정책 상세는 SSOT 문서에만 기록하고, 요약 문서에서는 링크로 참조한다.
- 동일 내용이 2개 이상 문서에 반복되면 요약 + 링크 형태로 축약한다.