Skip to content

docs: 상태 표기 단일화·유령 제거·Renovate 실물 도입#8

Merged
Bori-github merged 11 commits into
mainfrom
docs/main-audit-fixes
Jul 18, 2026
Merged

docs: 상태 표기 단일화·유령 제거·Renovate 실물 도입#8
Bori-github merged 11 commits into
mainfrom
docs/main-audit-fixes

Conversation

@Bori-github

@Bori-github Bori-github commented Jul 18, 2026

Copy link
Copy Markdown
Owner

변경 유형은 라벨로 표시한다 (feat · fix · docs · refactor · perf · test · build · ci · chore).

요약 / 의도

문서의 불일치(낡은 상태 표기 · 문서에만 존재하는 유령 의존성 · 실측과 다른 구조 서술)를 해소한다. 재발을 막는 관례 두 가지를 세워 함께 적용했다 — ① 구현 상태는 실제 구현 계획의 상태 열이 단독 소유(전략·계약 문서는 상태를 표기하지 않음) ② 낡기 쉬운 인스턴스 열거 금지(문서는 배치 기준·규칙만 소유). 문서가 "있다"고 서술하던 renovate.json은 실물로 도입했다.

범위

이번에 한 것

  • 상태 표기("M5 예정"·"미설치"·"(M2 확정)") 전체 제거 + 계획표에 상태 열·단계별 문서 링크 도입, 마일스톤 번호 참조를 이름+계획 링크로 교체
  • 기술 스택 표를 실제 설치된 핀으로 한정(미설치 플러그인 4종·coverage-v8 제거, 등재 규칙 명시)
  • 문서-코드 불일치 정정: 전역 단축키 메커니즘(window keydown 리스너), 다이얼로그 필터·취소 계약, 드래그 API 이름(performWindowDragWithEvent:), check 태스크 열거의 docs-drift 누락, WebKit 설치 명령 CI 통일
  • 폴더 구조 트리 실측 정합(누락 파일 8건 추가) + FSD 슬라이스 열거를 삭제하고 기존 "배치 결정 가이드"로 일원화
  • 값 사본 위임(playwright 핀)·역방향 링크 교정, 열린 결정 26건을 주제별 소절+실링크로 재구성(전 항목 미결임을 코드 대조로 확인)
  • renovate.json 신설: 그룹핑 4묶음 · 자동 머지 한정(1.0+ devDeps patch/minor, CI 그린 시) · deps-beta 라벨(저장소에 라벨 생성 완료) · 한국어 커밋 템플릿 · playwright 갱신 보류(macOS 13 다운핀)

의도적으로 안 한 것 / 후속

  • packages/ui 서술 유지 — 추후 사용 계획으로 결정(제거 아님)
  • 15MB 사본(8곳)·ADR 0006 hex·디자인 시스템 토큰 예시·recipe 절·원격 이미지 열린 결정·작업 규칙의 AGENTS 참조 — 검토 후 의도적 유지(근거는 커밋 1548996 본문)
  • 역방향 존재 게이트(문서→코드 검사) 등 장기 구조 제안 — 별도 논의로 보류
  • 후속: 머지 후 Renovate GitHub App 활성화(1회 수동)

주요 변경점

  • 스크립트/툴링(scripts·mise·게이트): renovate.json 신설. 커밋 타입은 :semanticCommitTypeAll(build) 프리셋으로 강제한다 — 최상위 semanticCommitType 설정은 config:recommended의 packageRules에 덮여 무효다
  • 문서(.claude): 위 범위 항목 전체. 코드(프론트·packages·Rust) 변경 없음

설계 · 결정

  • 결정/근거: 전략 문서는 "구현할 설계"의 서술이라 개발 여부가 문서 성격에 내장 — 상태는 계획표가 소유한다. 슬라이스 목록은 디렉터리가 보여주고 Steiger가 레이어 규칙을 강제하므로 문서 열거는 낡기만 한다.
  • 문서와 달라진 점: 없음 — 모든 변경이 "문서를 사실·관례에 맞추는" 방향이며, 동작 변경 없음

검증 (체크가 아니라 값으로)

  • mise run check: 통과 (oxfmt·oxlint·Steiger·tsc·Vitest·cargo fmt/clippy/test·docs-drift)
  • TDD(신규 기능·커맨드·상태 전이·파서는 실패 테스트 먼저): 해당없음(코드 변경 없음)
  • 실앱 E2E (mise run dev-webdrivermise run e2e): N/A(동작 변경 없음)
  • 번들 크기 (tauri build --bundles appmise run bundle-size, <15MB): N/A
  • 자동 검증 불가 항목(방법·이유): renovate.json의 실동작(PR 제목·라벨·자동 머지)은 App 활성화 후 첫 PR에서 확인한다 — JSON·스키마 유효성과 oxfmt는 검증됨. 변경 문서 15개의 상대 링크·앵커는 스크립트로 전수 대조해 전부 유효.

관련 문서 (단일 출처)

  • .claude/docs/implementation-plan.md(상태 열·열린 결정) · .claude/docs/tech-stack.md(등재 규칙) · .claude/docs/code-quality.md(Renovate 절) · .claude/docs/frontend-architecture.md(배치 결정 가이드)

리뷰 포인트 / 위험 지점

  • renovate.json의 자동 머지 범위(1.0+ devDeps patch/minor)가 의도와 맞는지
  • 계획표 상태 열·열린 결정 재구성이 읽기 좋은지 — 이 형식이 앞으로의 기준이 된다
  • FSD 표에서 슬라이스 열을 삭제한 것(정보 손실이 아니라 낡는 사본 제거라는 판단)

체크리스트 (프로젝트 규칙)

  • 동작을 바꾸는 변경은 계약 문서를 먼저/같은 커밋에서 갱신
  • docs-drift 통과 (tech-stack 버전 ↔ 핀, Rust 커맨드 등재)
  • 비목표 경계(.claude/rules/non-goals.md)를 넘지 않음 (넘으면 별도 보고)
  • 성능 규칙(뷰포트 한정 데코레이션·프리뷰 디바운스·번들 목표) 준수 (해당 변경 없음)
  • 커밋·PR 제목이 Conventional Commits(한국어)

마일스톤 / 비고

  • 마일스톤 무관(문서 정비 트랙). 11커밋, 문서 15개 + renovate.json.
  • 비고: Renovate는 이 파일만으로 동작하지 않는다 — 머지 후 github.com/apps/renovate에서 저장소 활성화(관리자 1회).

🤖 Generated with Claude Code

Bori-github and others added 11 commits July 17, 2026 16:47
구현 여부의 단일 출처를 이 문서로 명시한다 — 설계·계약 문서는 구현 상태를
표기하지 않고, 마일스톤 표의 상태 열과 단계별 문서 링크로 판별한다.
M5·M6는 구현할 전략 절(파일 트리·하이브리드 접기·세션 복원·자동 저장·테마)에
절 단위 앵커로 연결한다.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
구현 여부는 계획표가 소유하므로 M5/M6 예정·미설치·(M2 확정) 표기를 제거하고
설계 서술로 되돌린다. 함께 정정: 앱 전역 단축키의 구현은 CM6 키맵이 아니라
window keydown 리스너(capture)다 — 에디터 포커스와 무관하게 발동해야 하기
때문이다. 확장 표에 실제 채택된 scrollPastEnd·선택 일치 강조를 반영하고,
다이얼로그 Markdown 필터와 비활성 탭 삭제 배지를 계약에 기재한다.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
계획 재편 때 번호 사본이 낡는 것을 막는다 — 실제로 표면 표의 (M4) 사이드바,
영속화 M5, ADR의 M6 서명은 재편 전 번호가 그대로 남아 현행 계획과 어긋나
있었다. 번호 대신 단계 이름과 계획 링크를 쓴다. 과거 측정 기록(M4 실측 등)과
ADR의 결정 당시 참조는 이력이므로 유지한다.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Tauri 플러그인 표에 미설치 4종(store·window-state·updater·process)이,
코드 품질 표에 미설치 @vitest/coverage-v8이 버전 핀과 함께 등재돼 있었다.
docs-drift 검사는 표에 있는 핀을 실제 핀과 단방향 대조하므로 문서에만 있는
의존성을 잡지 못한다. 두 표 모두 실제 설치된 핀만 등재하는 규칙을 명시하고,
설계가 예고한 플러그인은 도입하는 커밋에서 추가하도록 했다.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
platform-strategy에 홀로 남아 있던 "mac 배포 단계(M7)"·"M0부터"를 같은 문서의
다른 곳과 동일하게 이름 지칭("배포 단계"·"첫 단계부터")으로 정리했다.
document-model의 세션 복원 문장이 plugin-store·plugin-window-state 둘을 언급하며
rust-commands의 구현 크레이트·플러그인 목록을 가리키는데 목록에 store만 있어
참조가 반쪽이었다 — window-state 한 줄을 추가해 참조를 완성했다.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
code-quality 문서가 단일 출처로 지정한 루트 renovate.json을 실물로 만든다.
문서의 규칙 세 가지를 구현했다 — 그룹핑(codemirror·tauri·vitest·린트 툴링),
자동 머지 한정(1.0 이상 devDependencies의 patch·minor만, CI 통과 시),
베타 라벨(0.x·pre-release 핀에 deps-beta 부착).

추가 판단 두 가지: playwright는 로컬 macOS 13의 WebKit 지원 마지막 버전으로
다운핀돼 있어 갱신을 보류했고, 커밋 메시지는 commitMessage 템플릿으로
컨벤션의 한국어 요약 형식(예: "oxfmt 0.58.0 업데이트")에 맞췄다.
문서의 강제 수단 서술(commitMessagePrefix)도 실제 설정명으로 정정했다.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
mise run check의 실제 태스크 목록에는 docs-drift가 포함돼 있는데
development-commands·code-quality의 열거에는 빠져 있었다.
WebKit 설치 명령은 문서(--filter @norii/markdown)와 CI(--filter desktop)가
달랐다 — 두 패키지 모두 같은 playwright 핀을 의존해 어느 쪽이든 동작하지만,
표준 명령이 흐려지지 않게 CI와 동일한 desktop 필터로 통일했다.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
project-structure 트리에 실재하는 파일(.oxfmtrc.json·record-demo.sh·
upload-attachment.sh·main.tsx·build.rs·icons·vitest.config.ts·svgr.config.cjs)을
추가하고, 레이어 줄의 슬라이스 나열을 제거해 레이어 목적만 남겼다.

frontend-architecture의 "norii 슬라이스" 열을 삭제했다 — 슬라이스 이름 나열은
기능이 추가될 때마다 낡는 구조이고(실제로 open-link·normalization-banner 누락,
tab-management 등 구현과 다른 이름이 남아 있었다), 배치 판단은 기존
"배치 결정 가이드" 절이 이미 소유한다. 유일한 비자명 결정(탭 전환·닫기는
슬라이스가 아니라 entities/document 스토어 액션)은 그 절의 경계 사례로 옮겼다.
app 행의 실재하지 않는 providers/ 표현도 정리했다.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
열린 결정의 playwright 항목에서 버전 숫자 사본을 제거했다 — 핀의 단일 출처는
tech-stack 표이고, 사본이 있으면 재상향 때 두 곳을 고쳐야 한다.
document-model이 루트(DESIGN.md)를 가리키던 역방향 링크를 형제 계약 문서
(창 표면 계약)로 교체했다 — "상단 띠는 유리"는 window-chrome이 소유한다.
창 드래그 API 이름을 실제 코드(titlebar_drag.rs)가 부르는 ObjC 셀렉터
performWindowDragWithEvent:로 정정했다.

15MB 사본(8곳)·ADR 0006 hex·design-system 토큰 예시·recipe 절·원격 이미지
열린 결정·project-rules의 AGENTS 참조는 검토 후 유지한다 — 각각 소유 링크
동반·결정 당시 기록·면책 명시·설계 서술·CSP가 이미 차단(img-src에 http 없음)·
작업 지시(사실 의존 아님)가 근거다.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
정렬이 깨진 26줄 텍스트 펜스를 5개 주제 소절(파일 안전·데이터 / 에디터·세션 /
프리뷰 / 디자인 / 테스트·도구)의 불릿 목록으로 바꿨다. 각 항목은 굵은 라벨과
결정할 것 한 문장, 소유 문서 실링크(절 앵커 포함)로 구성된다 — 라벨만 훑어
전체를 파악하고 링크로 상세에 닿는다. 항목 26개는 삭제·추가 없이 유지했고
전 항목이 실제로 미결임을 코드 대조로 확인했다(손실 플래그·maxWait·상태색
토큰·에디터 타이포 설정·dist 임계값 등 부재, CSP img-src에 http 없음).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
config:recommended에 포함된 :semanticPrefixFixDepsChoreOthers의 packageRules가
최상위 semanticCommitType: "build"를 덮어써 실제 PR이 chore(deps):/fix(deps):로
생성될 상황이었다 — packageRules는 최상위 설정을 이긴다. 같은 packageRule
계층에서 뒤에 오는 :semanticCommitTypeAll(build) 프리셋으로 교체해 build 타입을
보장하고, code-quality의 강제 수단 서술도 프리셋 기준으로 정정했다.
rust-commands의 버전 위임 링크가 크레이트 표만 가리켜 plugin-* 버전을 찾을 수
없던 것도 플러그인 표 소유를 명시해 바로잡았다.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Bori-github Bori-github self-assigned this Jul 18, 2026
@Bori-github Bori-github added docs 문서 build 빌드·의존성 labels Jul 18, 2026
@Bori-github
Bori-github merged commit 90de85f into main Jul 18, 2026
1 check passed
@Bori-github
Bori-github deleted the docs/main-audit-fixes branch July 18, 2026 16:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build 빌드·의존성 docs 문서

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant