docs(p9): 도그푸딩 피드백을 20개 task spec + reset 구현 plan으로 분해 #48

Merged
altair823 merged 3 commits from docs/p9-dogfooding-decomposition into main 2026-05-02 18:03:58 +00:00
Owner

Summary

P9-1 ~ P9-4 (TUI Library / Search / Ask / Inspect) 머지 후 사용자가 직접 cargo install 한 binary 로 도그푸딩 하며 수집한 16 항목 UX 피드백을 20 개 single-PR 사이즈 task spec 으로 분해한다. 각 spec 은 tasks/_template.md 형식 (Goal / Allowed deps / Public surface / Behavior contract / Test plan / DoD / Out of scope) 을 따른다.

변경 내용

  • tasks/p9/p9-fb-01-*.md ~ p9-fb-20-*.md — 분해된 task spec 20 개. 각 spec 의 frontmatter 에 depends_on / unblocks / source_feedback 으로 의존 / 출처 추적.
  • tasks/p9/p9-dogfooding-feedback.md — master index. 16 항목 원본 + 20 개 task 표 + 권장 실행 순서 + spec PR 동반 task 목록.
  • tasks/INDEX.md — p9-fb-01 ~ 20 link 추가.
  • docs/superpowers/plans/2026-05-02-p9-fb-06-reset-command.md — 첫 후속 작업 (kebab reset 명령) 의 6-task 구현 plan. spec → plan 분리는 superpowers:writing-plans 의 워크플로우.
  • .gitignore.worktrees/ 추가. superpowers:using-git-worktrees skill 이 만드는 로컬 worktree 디렉토리가 git status 를 오염시키지 않게.

Task spec 매핑

피드백 항목 분해된 task
1. 진행 표시 p9-fb-01 (callback) + 02 (CLI) + 03 (TUI)
2. 즉시 중단 p9-fb-04
3. 경로 정책 p9-fb-05
4. 데이터 wipe p9-fb-06
5. title fallback p9-fb-07
6. search debounce p9-fb-08
7. editor 복귀 p9-fb-09
8. 한글 입력 p9-fb-10
9. markdown 렌더 p9-fb-11
10. mode machine p9-fb-12
11. cheatsheet p9-fb-13
12. color theme p9-fb-14
13. multi-turn 대화 p9-fb-15 (RAG core) + 16 (TUI)
14. CLI session p9-fb-17 (V004 storage) + 18 (CLI)
15. search cache p9-fb-19
16. citation 스크롤 p9-fb-20

실행 시작점

머지 직후 첫 후속 PR 은 p9-fb-06 (kebab reset 명령) — 도그푸딩 막힘 강도 1위 (사용자가 여러 config 을 테스트하는 동안 데이터 wipe 가 4 개 경로 수동 rm -rf 였음). plan 은 docs/superpowers/plans/2026-05-02-p9-fb-06-reset-command.md 에 6 task 로 분해되어 있고 첫 task 부터 바로 실행 가능.

Test plan

코드 변경 없음 — 모든 변경은 docs (tasks/p9/**, docs/superpowers/plans/**, tasks/INDEX.md) + .gitignore 1 줄. CI 가 markdown linter 를 돌린다면 그것이 유일한 게이트.

  • 모든 task spec 의 frontmatter 가 _template.md 형식과 일치
  • master index (p9-dogfooding-feedback.md) 의 표가 실제 파일과 일치
  • tasks/INDEX.md link 가 모두 존재하는 파일 가리킴
  • cargo check --workspace 통과 (코드 변경 없으니 무영향, sanity check)
## Summary P9-1 ~ P9-4 (TUI Library / Search / Ask / Inspect) 머지 후 사용자가 직접 `cargo install` 한 binary 로 도그푸딩 하며 수집한 16 항목 UX 피드백을 20 개 single-PR 사이즈 task spec 으로 분해한다. 각 spec 은 `tasks/_template.md` 형식 (`Goal` / `Allowed deps` / `Public surface` / `Behavior contract` / `Test plan` / `DoD` / `Out of scope`) 을 따른다. ## 변경 내용 - `tasks/p9/p9-fb-01-*.md` ~ `p9-fb-20-*.md` — 분해된 task spec 20 개. 각 spec 의 frontmatter 에 `depends_on` / `unblocks` / `source_feedback` 으로 의존 / 출처 추적. - `tasks/p9/p9-dogfooding-feedback.md` — master index. 16 항목 원본 + 20 개 task 표 + 권장 실행 순서 + spec PR 동반 task 목록. - `tasks/INDEX.md` — p9-fb-01 ~ 20 link 추가. - `docs/superpowers/plans/2026-05-02-p9-fb-06-reset-command.md` — 첫 후속 작업 (`kebab reset` 명령) 의 6-task 구현 plan. spec → plan 분리는 `superpowers:writing-plans` 의 워크플로우. - `.gitignore` — `.worktrees/` 추가. `superpowers:using-git-worktrees` skill 이 만드는 로컬 worktree 디렉토리가 git status 를 오염시키지 않게. ## Task spec 매핑 | 피드백 항목 | 분해된 task | |---|---| | 1. 진행 표시 | p9-fb-01 (callback) + 02 (CLI) + 03 (TUI) | | 2. 즉시 중단 | p9-fb-04 | | 3. 경로 정책 | p9-fb-05 | | 4. 데이터 wipe | p9-fb-06 | | 5. title fallback | p9-fb-07 | | 6. search debounce | p9-fb-08 | | 7. editor 복귀 | p9-fb-09 | | 8. 한글 입력 | p9-fb-10 | | 9. markdown 렌더 | p9-fb-11 | | 10. mode machine | p9-fb-12 | | 11. cheatsheet | p9-fb-13 | | 12. color theme | p9-fb-14 | | 13. multi-turn 대화 | p9-fb-15 (RAG core) + 16 (TUI) | | 14. CLI session | p9-fb-17 (V004 storage) + 18 (CLI) | | 15. search cache | p9-fb-19 | | 16. citation 스크롤 | p9-fb-20 | ## 실행 시작점 머지 직후 첫 후속 PR 은 **p9-fb-06 (`kebab reset` 명령)** — 도그푸딩 막힘 강도 1위 (사용자가 여러 config 을 테스트하는 동안 데이터 wipe 가 4 개 경로 수동 `rm -rf` 였음). plan 은 `docs/superpowers/plans/2026-05-02-p9-fb-06-reset-command.md` 에 6 task 로 분해되어 있고 첫 task 부터 바로 실행 가능. ## Test plan 코드 변경 없음 — 모든 변경은 docs (`tasks/p9/**`, `docs/superpowers/plans/**`, `tasks/INDEX.md`) + `.gitignore` 1 줄. CI 가 markdown linter 를 돌린다면 그것이 유일한 게이트. - [x] 모든 task spec 의 frontmatter 가 `_template.md` 형식과 일치 - [x] master index (`p9-dogfooding-feedback.md`) 의 표가 실제 파일과 일치 - [x] `tasks/INDEX.md` link 가 모두 존재하는 파일 가리킴 - [x] `cargo check --workspace` 통과 (코드 변경 없으니 무영향, sanity check)
altair823 added 1 commit 2026-05-02 17:55:30 +00:00
P9-1~P9-4 머지 후 사용자가 직접 도그푸딩 하며 수집한 16 항목 UX
피드백을 20 개 single-PR 사이즈 task spec 으로 분해. 각 spec 은
frontmatter (depends_on / unblocks / source_feedback), Goal,
Allowed deps, Public surface, Behavior contract, Test plan, DoD,
Out of scope 절 포함.

추가:
- p9-fb-01 ~ 20-*.md: 분해된 task spec 20 개
- p9-dogfooding-feedback.md: master index + 우선순위 + 권장 실행 순서
  + spec PR vs impl PR 절
- INDEX.md: p9-fb-01 ~ 20 link 추가
- docs/superpowers/plans/2026-05-02-p9-fb-06-reset-command.md:
  첫 후속 작업 (kebab reset 명령) 의 6-task 구현 plan
- .gitignore: .worktrees/ 추가 (superpowers worktree skill 용)

피드백 항목 → task spec 매핑은 p9-dogfooding-feedback.md 의 표 참조.
실행 시작 task: p9-fb-06 (reset 명령) — 도그푸딩 막힘 강도 1위.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
claude-reviewer-01 requested changes 2026-05-02 17:59:56 +00:00
claude-reviewer-01 left a comment
Member

회차 1 — docs PR 정합성 위주 리뷰. 5 issue + 2 칭찬.

핵심 actionable:

  1. p9-fb-11.depends_on vs p9-fb-14.unblocks 양방향 정합 깨짐 — master index 표는 11 → 14 의존 명시, 14.unblocks 도 [11] 명시, 그러나 11.depends_on 비어있음. fix 권장: 11.depends_on = [p9-fb-14].
  2. p9-fb-0114 번과 wiring cross-ref 모호14 가 task ID 인지 도그푸딩 항목 번호인지 mix-up. 정정 필요.
  3. plan File Structure 의 tasks/HOTFIXES.md — n/a (skip) 모순 — Modify list 안에 있으면서 동시에 skip. list 에서 제거.
  4. p9-dogfooding-feedback.md item 14 의 READE typoREADME 한 글자 누락.
  5. plan task 4 handler 의 let _ = data_only; — pattern binding 자체를 _data_only 로 변경하는 게 관용적 (cosmetic).

전체 인상: spec 20 개 + master index + plan 1 개 — 분해의 깊이와 의존 추적의 명시성 모두 충실. 위 5 건만 정리하면 머지 가능.

회차 1 — docs PR 정합성 위주 리뷰. 5 issue + 2 칭찬. 핵심 actionable: 1. **`p9-fb-11.depends_on` vs `p9-fb-14.unblocks` 양방향 정합 깨짐** — master index 표는 `11 → 14` 의존 명시, 14.unblocks 도 [11] 명시, 그러나 11.depends_on 비어있음. fix 권장: 11.depends_on = [p9-fb-14]. 2. **`p9-fb-01` 의 `14 번과 wiring` cross-ref 모호** — `14` 가 task ID 인지 도그푸딩 항목 번호인지 mix-up. 정정 필요. 3. **plan File Structure 의 `tasks/HOTFIXES.md — n/a (skip)` 모순** — Modify list 안에 있으면서 동시에 skip. list 에서 제거. 4. **`p9-dogfooding-feedback.md` item 14 의 `READE` typo** — `README` 한 글자 누락. 5. **plan task 4 handler 의 `let _ = data_only;`** — pattern binding 자체를 `_data_only` 로 변경하는 게 관용적 (cosmetic). 전체 인상: spec 20 개 + master index + plan 1 개 — 분해의 깊이와 의존 추적의 명시성 모두 충실. 위 5 건만 정리하면 머지 가능.
@@ -0,0 +24,4 @@
- `crates/kebab-cli/src/main.rs` — add `Cmd::Reset` arm + handler
- `crates/kebab-cli/src/wire.rs``wire_reset` helper
- `README.md``kebab reset` in 명령 표 + Quick start safety note
- `tasks/HOTFIXES.md` — n/a (new feature, not deviation; skip)

(자기모순) **Modify:** 절의 마지막 항목 tasks/HOTFIXES.md — n/a (new feature, not deviation; skip)Modify list 안에 있으면서 동시에 skip 으로 명시 — 모순. "수정 안 함" 이면 Modify list 에서 빼야 함.

Why: plan 의 File Structure 절은 "이 PR 이 어떤 파일을 건드리는지" 의 명시적 ground truth. 건드리지 않는 파일이 list 에 있으면 reviewer 가 "왜 안 건드렸지?" 물을 수 있고, 자동화 도구 (예: git diff --stat | sort 와 비교) 가 false alarm.

How to apply: tasks/HOTFIXES.md — n/a ... 줄을 Modify list 에서 제거. "새 기능이라 HOTFIXES 항목 없음" 안내가 필요하면 별도 한 줄로 **HOTFIXES:** n/a — 신규 기능이지 deviation 아님. 로 분리.

(자기모순) `**Modify:**` 절의 마지막 항목 `tasks/HOTFIXES.md — n/a (new feature, not deviation; skip)` 가 `Modify list` 안에 있으면서 동시에 `skip` 으로 명시 — 모순. "수정 안 함" 이면 `Modify` list 에서 빼야 함. Why: plan 의 File Structure 절은 "이 PR 이 어떤 파일을 건드리는지" 의 명시적 ground truth. 건드리지 않는 파일이 list 에 있으면 reviewer 가 "왜 안 건드렸지?" 물을 수 있고, 자동화 도구 (예: `git diff --stat | sort` 와 비교) 가 false alarm. How to apply: `tasks/HOTFIXES.md — n/a ...` 줄을 `Modify` list 에서 제거. "새 기능이라 HOTFIXES 항목 없음" 안내가 필요하면 별도 한 줄로 `**HOTFIXES:** n/a — 신규 기능이지 deviation 아님.` 로 분리.
@@ -0,0 +742,4 @@
ResetScope::ConfigOnly
} else {
// `--data-only` explicit OR no scope flag at all → DataOnly
let _ = data_only;

(cosmetic) let _ = data_only; 로 unused warning 회피하는 것보다 패턴 매치에서 직접 prefix 로 _data_only 받는 쪽이 관용적. handler 시그니처 줄 data_only,data_only: _, 또는 enum variant pattern 의 binding 이름을 data_only_data_only 로 변경 가능.

Why: let _ = x; 는 unused 를 명시적으로 "버린다" 의도일 때 쓰는 idiom (보통 lock guard 같이 RAII 가 있을 때). 단순 boolean flag 의 unused warning suppression 으로는 의미 과잉.

How to apply: handler match arm 의 data_only, 줄을 data_only: _, 로 변경하고 본문의 let _ = data_only; 한 줄 제거. 더 명료.

(cosmetic) `let _ = data_only;` 로 unused warning 회피하는 것보다 패턴 매치에서 직접 prefix 로 `_data_only` 받는 쪽이 관용적. handler 시그니처 줄 `data_only,` → `data_only: _,` 또는 enum variant pattern 의 binding 이름을 `data_only` → `_data_only` 로 변경 가능. Why: `let _ = x;` 는 unused 를 명시적으로 "버린다" 의도일 때 쓰는 idiom (보통 lock guard 같이 RAII 가 있을 때). 단순 boolean flag 의 unused warning suppression 으로는 의미 과잉. How to apply: handler match arm 의 `data_only,` 줄을 `data_only: _,` 로 변경하고 본문의 `let _ = data_only;` 한 줄 제거. 더 명료.

(칭찬) Self-review 절의 One spec note we did NOT implement separatelyvector-only end-to-end integration test 누락을 솔직히 명시 + 그 이유 (Lance dir + embedding row 동시 seeding 비용) + reviewer pushback 시 same-PR follow-up 약속까지. plan 의 self-review 가 "빠진 건 없다" 를 반복하는 보일러플레이트가 아니라 의도적 trade-off 를 굳이 노출 — 정직성 + 미래 reviewer 의 작업량 ↓.

(칭찬) Self-review 절의 `One spec note we did NOT implement separately` — `vector-only` end-to-end integration test 누락을 솔직히 명시 + 그 이유 (Lance dir + embedding row 동시 seeding 비용) + reviewer pushback 시 same-PR follow-up 약속까지. plan 의 self-review 가 "빠진 건 없다" 를 반복하는 보일러플레이트가 아니라 의도적 trade-off 를 굳이 노출 — 정직성 + 미래 reviewer 의 작업량 ↓.
@@ -0,0 +220,4 @@
- `--json` 모드 호환: `answer.v1``conversation_id` / `turn_index` 필드 (13 번에서 추가) — 외부 도구가 session 추적 가능.
- **외부 AI 통합 효과** (README 의 외부 AI 섹션): Claude Code skill / MCP server 도 `--session` 으로 conversation context 보존. 이 부분이 multi-turn CLI 의 진짜 가치 — 내장 TUI 만 쓰는 사용자보다 외부 wrapper 사용자가 큼.
**spec 영향**: §7 RAG 절 multi-turn 정책 + §externalAI 통합 절 (READE 와 ARCHITECTURE 동기화) 에 session 모델 추가. CLI flag 표 (`--session` / `--repl`) README 갱신.

(typo) READEREADME. 영구 기록 문서이므로 fix 권장.

Why: 도그푸딩 feedback 의 항목 14 **spec 영향** 절이 §externalAI 통합 절 (READE 와 ARCHITECTURE 동기화) — README 의 R 한 글자 누락. 다른 곳들은 모두 정상 README.

How to apply: READEREADME 한 글자 추가.

(typo) `READE` → `README`. 영구 기록 문서이므로 fix 권장. Why: 도그푸딩 feedback 의 항목 14 `**spec 영향**` 절이 `§externalAI 통합 절 (READE 와 ARCHITECTURE 동기화)` — README 의 R 한 글자 누락. 다른 곳들은 모두 정상 `README`. How to apply: `READE` → `README` 한 글자 추가.
@@ -0,0 +274,4 @@
| [p9-fb-01](p9-fb-01-ingest-progress-callback.md) | Ingest progress callback | | 1 (backend) |
| [p9-fb-02](p9-fb-02-cli-progress-display.md) | CLI progress display | 01 | 1 (CLI) |
| [p9-fb-03](p9-fb-03-tui-ingest-background.md) | TUI ingest background + status | 01 | 1 (TUI) |
| [p9-fb-04](p9-fb-04-ingest-cancellation.md) | Cooperative cancellation | 01 | 2 |

(칭찬) 후속 작업 분리 (분해 결과) 표가 task ID + 제목 + 의존 + 출처 항목 4 컬럼으로 정리되어 있어 reviewer 가 한눈에 "어느 도그푸딩 항목이 어느 task 로 분해됐는지" 추적 가능. 특히 마지막 컬럼 feedback 항목 이 spec 분해의 traceability 를 한 번에 잡아냄. 16 항목 → 20 task 매핑이 1:N 인 케이스 (1 → 01/02/03, 13 → 15/16, 14 → 17/18) 도 표만 보면 즉시 파악.

(칭찬) `후속 작업 분리 (분해 결과)` 표가 task ID + 제목 + 의존 + 출처 항목 4 컬럼으로 정리되어 있어 reviewer 가 한눈에 "어느 도그푸딩 항목이 어느 task 로 분해됐는지" 추적 가능. 특히 마지막 컬럼 `feedback 항목` 이 spec 분해의 traceability 를 한 번에 잡아냄. 16 항목 → 20 task 매핑이 1:N 인 케이스 (1 → 01/02/03, 13 → 15/16, 14 → 17/18) 도 표만 보면 즉시 파악.
@@ -0,0 +281,4 @@
| [p9-fb-08](p9-fb-08-search-debounce.md) | Search debounce + Enter | | 6 |
| [p9-fb-09](p9-fb-09-tui-editor-restore.md) | External editor return restore | | 7 |
| [p9-fb-10](p9-fb-10-tui-cjk-input.md) | CJK input + wide-char | 12 | 8 |
| [p9-fb-11](p9-fb-11-ask-markdown-render.md) | Ask markdown render | 14 | 9 |

(정합성 / 의존 양방향 불일치) 표는 p9-fb-11 의 의존을 14 라고 적었는데 p9-fb-11.md frontmatterdepends_on[] 비어 있음. 한편 p9-fb-14.mdunblocks: [p9-fb-11] 은 11 → 14 의존을 명시. 두 spec 의 frontmatter 가 양방향 정합 깨짐.

Why: depends_on / unblocks 양방향 정합은 task 의존 그래프의 정확성을 결정. 실행 순서 자동 정렬 / 병렬화 가능 task 식별이 모두 이 frontmatter 에 의존. 한쪽만 채우면 grep 으로 의존 추적할 때 누락.

How to apply: 표가 source of truth (사람이 표를 보고 판단) 라면 tasks/p9/p9-fb-11-ask-markdown-render.mddepends_on: []depends_on: [p9-fb-14]. 표가 잘못이라면 표를 로 + 14 의 unblocks 도 비우기. 본 PR 의 plan 흐름 (theme → markdown render) 으로 보면 11 이 14 에 의존하는 게 맞음 — 11.depends_on 채우는 쪽 권장.

(정합성 / 의존 양방향 불일치) 표는 p9-fb-11 의 의존을 `14` 라고 적었는데 [p9-fb-11.md frontmatter](p9-fb-11-ask-markdown-render.md) 의 `depends_on` 은 `[]` 비어 있음. 한편 [p9-fb-14.md](p9-fb-14-tui-color-theme.md) 의 `unblocks: [p9-fb-11]` 은 11 → 14 의존을 명시. 두 spec 의 frontmatter 가 양방향 정합 깨짐. Why: `depends_on` / `unblocks` 양방향 정합은 task 의존 그래프의 정확성을 결정. 실행 순서 자동 정렬 / 병렬화 가능 task 식별이 모두 이 frontmatter 에 의존. 한쪽만 채우면 grep 으로 의존 추적할 때 누락. How to apply: 표가 source of truth (사람이 표를 보고 판단) 라면 `tasks/p9/p9-fb-11-ask-markdown-render.md` 의 `depends_on: []` → `depends_on: [p9-fb-14]`. 표가 잘못이라면 표를 `–` 로 + 14 의 unblocks 도 비우기. 본 PR 의 plan 흐름 (theme → markdown render) 으로 보면 11 이 14 에 의존하는 게 맞음 — 11.depends_on 채우는 쪽 권장.
@@ -0,0 +56,4 @@
- progress event 발신은 best-effort. receiver drop 되면 이후 send 무시 (panic 금지).
- 이벤트 ordering: `ScanStarted < ScanCompleted < (AssetStarted < AssetFinished)* < Completed|Aborted`. embed batch 는 asset 사이 임의 위치.
- `Aborted` 는 cancellation token (p9-fb-04) trigger 시. 혼자 발생 X — 14 번과 wiring.

(의도 불명확) Aborted 는 cancellation token (p9-fb-04) trigger 시. 혼자 발생 X — 14 번과 wiring.14 번 이 무엇 가리키는지 모호. 도그푸딩 피드백의 항목 14 (CLI multi-turn) 와 cancellation 은 무관. 짐작컨대 p9-fb-04 (cancellation) 와 p9-fb-03 (TUI background) 두 task 사이의 wiring 의도였던 것으로 보임 — task ID 와 항목 번호 mix-up.

Why: spec cross-ref 가 미래 reader 가 의존 / 흐름을 추적하는 핵심 device. 모호한 숫자 (14 번) 는 0 정보가 아니라 잘못된 정보 — task ID 인지 항목 번호인지 둘 중 하나만 의미.

How to apply: 두 가지 fix 가능. (a) 의도가 "cancel 신호 origin 명확화" 이면 Aborted 이벤트는 cancellation token (p9-fb-04) trigger 시에만 발신. 정도로 단순화. (b) p9-fb-03 의 IngestState.cancel_tx wiring 을 명시할 의도면 ... — p9-fb-03 의 IngestState.cancel_tx 와 wiring. 로 정정.

(의도 불명확) `Aborted 는 cancellation token (p9-fb-04) trigger 시. 혼자 발생 X — 14 번과 wiring.` 의 `14 번` 이 무엇 가리키는지 모호. 도그푸딩 피드백의 항목 14 (CLI multi-turn) 와 cancellation 은 무관. 짐작컨대 `p9-fb-04` (cancellation) 와 `p9-fb-03` (TUI background) 두 task 사이의 wiring 의도였던 것으로 보임 — task ID 와 항목 번호 mix-up. Why: spec cross-ref 가 미래 reader 가 의존 / 흐름을 추적하는 핵심 device. 모호한 숫자 (`14 번`) 는 0 정보가 아니라 잘못된 정보 — task ID 인지 항목 번호인지 둘 중 하나만 의미. How to apply: 두 가지 fix 가능. (a) 의도가 "cancel 신호 origin 명확화" 이면 `Aborted 이벤트는 cancellation token (p9-fb-04) trigger 시에만 발신.` 정도로 단순화. (b) p9-fb-03 의 IngestState.cancel_tx wiring 을 명시할 의도면 `... — p9-fb-03 의 IngestState.cancel_tx 와 wiring.` 로 정정.
altair823 added 1 commit 2026-05-02 18:01:27 +00:00
- p9-dogfooding-feedback.md item 14: README 오타 (READE → README)
- p9-fb-11.md frontmatter: depends_on=[p9-fb-14] 추가 (14.unblocks 와 양방향 정합)
- p9-fb-01.md Behavior contract: '14 번과 wiring' 모호 cross-ref 정정 — cancel wiring 은 p9-fb-04, TUI 신호는 p9-fb-03
- plan File Structure: 'tasks/HOTFIXES.md — n/a (skip)' 자기모순 제거 → 별도 HOTFIXES 절로 분리
- plan task 4 handler: let _ = data_only; 제거, pattern binding 자체를 data_only: _ 로 변경 (관용적)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
claude-reviewer-01 requested changes 2026-05-02 18:02:34 +00:00
claude-reviewer-01 left a comment
Member

회차 2 — 회차 1 지적 5건 모두 깔끔히 반영. 추가 nit 2건 (가독성).

  • tasks/p9/p9-dogfooding-feedback.md 권장 실행 순서 7번 항목의 5번 debounce 가 모호 (5번이 도그푸딩 항목인지 우선순위인지 task ID 끝자리인지). task ID p9-fb-08 로 명시 권장.
  • 같은 문서 11번 항목 11 prerequisite 도 모호. p9-fb-11 의 prerequisite 가 명확.

회차 1 fix 는 모두 정확히 반영 (READE / 14번과 wiring / HOTFIXES n/a 모순 / let _ = data_only / p9-fb-11.depends_on). 위 nit 2건만 정리하면 종료.

회차 2 — 회차 1 지적 5건 모두 깔끔히 반영. 추가 nit 2건 (가독성). - `tasks/p9/p9-dogfooding-feedback.md` 권장 실행 순서 7번 항목의 `5번 debounce` 가 모호 (5번이 도그푸딩 항목인지 우선순위인지 task ID 끝자리인지). task ID `p9-fb-08` 로 명시 권장. - 같은 문서 11번 항목 `11 prerequisite` 도 모호. `p9-fb-11 의 prerequisite` 가 명확. 회차 1 fix 는 모두 정확히 반영 (READE / 14번과 wiring / HOTFIXES n/a 모순 / let _ = data_only / p9-fb-11.depends_on). 위 nit 2건만 정리하면 종료.
@@ -0,0 +735,4 @@
yes,
} => {
use kebab_app::ResetScope;
// `--data-only` explicit OR no scope flag at all → DataOnly.

(칭찬) data_only: _, pattern binding + // The data_only: _ binding above is intentional — clap's group = "reset_scope" already enforces mutual exclusion ... 코멘트가 미래 reader 의 "왜 unused 인가" 의문을 코드 옆에서 즉시 차단. 회차 1 의 cosmetic 지적을 단순 변수명 수정으로 끝내지 않고 의도 명시까지 끌어올림.

(칭찬) `data_only: _,` pattern binding + `// The data_only: _ binding above is intentional — clap's group = "reset_scope" already enforces mutual exclusion ...` 코멘트가 미래 reader 의 "왜 unused 인가" 의문을 코드 옆에서 즉시 차단. 회차 1 의 cosmetic 지적을 단순 변수명 수정으로 끝내지 않고 의도 명시까지 끌어올림.
@@ -0,0 +300,4 @@
4. **p9-fb-15 / 16** (multi-turn 핵심) — 사용자 의도 (꼬리 물기) 직결.
5. **p9-fb-20** (citation) — 출처 보기, 도그푸딩 후속 검증의 prerequisite.
6. **p9-fb-07** (title fallback) — Inspect 가 비어있는 문제. 작은 size.
7. **p9-fb-19** (search cache) — 5번 debounce 와 함께 응답성.

(가독성 nit) 5번 debounce5번 이 모호 — 도그푸딩 항목 5 는 title fallback (debounce 아님), 우선순위 5 는 p9-fb-20 citation. 의도는 우선순위 8 (p9-fb-08 search debounce) 또는 도그푸딩 항목 6 (debounce) 였을 것.

Why: 같은 문서 안에서 N번 이 여러 번호 체계 (도그푸딩 항목 / 우선순위 / task ID 끝자리) 중 무엇을 가리키는지 불명확하면 reader 가 매번 추적해야 함.

How to apply: 5번 debouncep9-fb-08 debounce 로 task ID 명시. 같은 패턴이 다른 줄에도 있으면 일괄 정리.

(가독성 nit) `5번 debounce` 의 `5번` 이 모호 — 도그푸딩 항목 5 는 title fallback (debounce 아님), 우선순위 5 는 `p9-fb-20 citation`. 의도는 우선순위 8 (`p9-fb-08 search debounce`) 또는 도그푸딩 항목 6 (debounce) 였을 것. Why: 같은 문서 안에서 `N번` 이 여러 번호 체계 (도그푸딩 항목 / 우선순위 / task ID 끝자리) 중 무엇을 가리키는지 불명확하면 reader 가 매번 추적해야 함. How to apply: `5번 debounce` → `p9-fb-08 debounce` 로 task ID 명시. 같은 패턴이 다른 줄에도 있으면 일괄 정리.
@@ -0,0 +304,4 @@
8. **p9-fb-08** (debounce) — 작은 size, 즉시 효과.
9. **p9-fb-09** (editor restore) — 작은 size.
10. **p9-fb-12 → 13** (mode → cheatsheet) — UX 일관성 묶음.
11. **p9-fb-14** (theme) — 12 와 같은 batch 가능, 11 prerequisite.

(가독성 nit) 11 prerequisite 모호 — p9-fb-11 의 prerequisite (= 11 이 14 에 의존) 의미인지, priority 11 인지 즉시 안 잡힘. 회차 1 fix 로 p9-fb-11.depends_on=[p9-fb-14] 가 명시되었으므로 그 사실을 그대로 인용하는 게 명확.

Why: 직전 항목들은 12 와 같은 batch 가능 처럼 task ID 끝자리만 패턴이라 일관성 떨어짐.

How to apply: 12 와 같은 batch 가능, 11 prerequisitep9-fb-12 와 같은 batch 가능, p9-fb-11 의 prerequisite.

(가독성 nit) `11 prerequisite` 모호 — `p9-fb-11 의 prerequisite (= 11 이 14 에 의존)` 의미인지, `priority 11` 인지 즉시 안 잡힘. 회차 1 fix 로 `p9-fb-11.depends_on=[p9-fb-14]` 가 명시되었으므로 그 사실을 그대로 인용하는 게 명확. Why: 직전 항목들은 `12 와 같은 batch 가능` 처럼 `task ID 끝자리만` 패턴이라 일관성 떨어짐. How to apply: `12 와 같은 batch 가능, 11 prerequisite` → `p9-fb-12 와 같은 batch 가능, p9-fb-11 의 prerequisite`.
@@ -0,0 +4,4 @@
task_id: p9-fb-11
title: "Ask answer markdown rendering (bold/italic/code/list/table)"
status: planned
depends_on: [p9-fb-14]

(칭찬) 회차 1 지적의 depends_on=[p9-fb-14] 한 줄 fix 가 양방향 정합 (p9-fb-14.unblocks=[p9-fb-11] ↔ p9-fb-11.depends_on=[p9-fb-14]) 을 복원. 표 + 두 frontmatter 셋 다 동일한 의존 그래프 — 의존 추적용 grep 이 어느 방향으로도 동작.

(칭찬) 회차 1 지적의 `depends_on=[p9-fb-14]` 한 줄 fix 가 양방향 정합 (p9-fb-14.unblocks=[p9-fb-11] ↔ p9-fb-11.depends_on=[p9-fb-14]) 을 복원. 표 + 두 frontmatter 셋 다 동일한 의존 그래프 — 의존 추적용 grep 이 어느 방향으로도 동작.
altair823 added 1 commit 2026-05-02 18:03:01 +00:00
회차 2 의 가독성 nit 반영:
- '5번 debounce' → 'p9-fb-08 debounce' (task ID 명시)
- '12 와 같은 batch 가능, 11 prerequisite' → 'p9-fb-12 와 같은 batch 가능, p9-fb-11 의 prerequisite'
- 13번 항목 'prerequisite for 18' → 'prerequisite for p9-fb-18' (일관 패턴)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
claude-reviewer-01 approved these changes 2026-05-02 18:03:43 +00:00
claude-reviewer-01 left a comment
Member

회차 3 — 회차 2 nit 2건 모두 반영 + 13번 줄 (prerequisite for 18 → p9-fb-18) 까지 일괄 정리. 추가 actionable 없음 — APPROVE.

남은 본문 안의 10번 항목 / 12번 color role 같은 표기는 도그푸딩 피드백 원본 절 안에서 도그푸딩 항목을 가리키는 자연스러운 맥락 (회차 1 의 14번과 wiring 같은 spec body cross-ref 모호와 다름) — 정정 불필요.

총평: 도그푸딩 16 항목 → 20 task spec + 1 plan 분해. 두 차례 회차로 typo 1, 양방향 의존 정합 1, cross-ref 모호 1, 자기모순 1, cosmetic 1, 가독성 nit 2 정리. 머지 후 p9-fb-06 plan 부터 즉시 실행 가능.

회차 3 — 회차 2 nit 2건 모두 반영 + 13번 줄 (prerequisite for 18 → p9-fb-18) 까지 일괄 정리. 추가 actionable 없음 — APPROVE. 남은 본문 안의 `10번 항목` / `12번 color role` 같은 표기는 도그푸딩 피드백 원본 절 안에서 도그푸딩 항목을 가리키는 자연스러운 맥락 (회차 1 의 `14번과 wiring` 같은 spec body cross-ref 모호와 다름) — 정정 불필요. 총평: 도그푸딩 16 항목 → 20 task spec + 1 plan 분해. 두 차례 회차로 typo 1, 양방향 의존 정합 1, cross-ref 모호 1, 자기모순 1, cosmetic 1, 가독성 nit 2 정리. 머지 후 p9-fb-06 plan 부터 즉시 실행 가능.
@@ -0,0 +300,4 @@
4. **p9-fb-15 / 16** (multi-turn 핵심) — 사용자 의도 (꼬리 물기) 직결.
5. **p9-fb-20** (citation) — 출처 보기, 도그푸딩 후속 검증의 prerequisite.
6. **p9-fb-07** (title fallback) — Inspect 가 비어있는 문제. 작은 size.
7. **p9-fb-19** (search cache) — p9-fb-08 debounce 와 함께 응답성.

(칭찬) 5번 debouncep9-fb-08 debounce 정정 — 같은 줄에서 p9-fb-19 (search cache) 와 p9-fb-08 (debounce) 두 task ID 가 명시적으로 연결되어, reader 가 의존 / 시너지 한 줄로 파악.

(칭찬) `5번 debounce` → `p9-fb-08 debounce` 정정 — 같은 줄에서 `p9-fb-19` (search cache) 와 `p9-fb-08` (debounce) 두 task ID 가 명시적으로 연결되어, reader 가 의존 / 시너지 한 줄로 파악.
@@ -0,0 +304,4 @@
8. **p9-fb-08** (debounce) — 작은 size, 즉시 효과.
9. **p9-fb-09** (editor restore) — 작은 size.
10. **p9-fb-12 → 13** (mode → cheatsheet) — UX 일관성 묶음.
11. **p9-fb-14** (theme) — p9-fb-12 와 같은 batch 가능, p9-fb-11 의 prerequisite.

(칭찬) 11 prerequisitep9-fb-11 의 prerequisite 한국어 어순 + task ID 명시로 양쪽 모호성 동시 해소. 13번 줄 prerequisite for 18prerequisite for p9-fb-18 까지 일괄 정리해 우선순위 표 전체에 일관 패턴 (p9-fb-NN 풀 ID) 확립.

(칭찬) `11 prerequisite` → `p9-fb-11 의 prerequisite` 한국어 어순 + task ID 명시로 양쪽 모호성 동시 해소. 13번 줄 `prerequisite for 18` → `prerequisite for p9-fb-18` 까지 일괄 정리해 우선순위 표 전체에 일관 패턴 (`p9-fb-NN` 풀 ID) 확립.
altair823 merged commit 8784606028 into main 2026-05-02 18:03:58 +00:00
altair823 deleted branch docs/p9-dogfooding-decomposition 2026-05-02 18:03:59 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: altair823-org/kebab#48