docs(product): alignment findings ledger 시작
This commit is contained in:
129
docs/17_product_alignment_findings.md
Normal file
129
docs/17_product_alignment_findings.md
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
# 17. Product Alignment Findings
|
||||||
|
|
||||||
|
Last Updated: 2026-03-15
|
||||||
|
|
||||||
|
이 문서는 `16_product_alignment_audit_plan.md`를 실제로 운영하기 위한 **findings ledger**다.
|
||||||
|
|
||||||
|
목표는 단순하다.
|
||||||
|
|
||||||
|
> VibeRoom의 core loop에서 발견된 기획-구현 불일치를
|
||||||
|
> severity, 실제 영향, 수정 상태 기준으로 누적 관리한다.
|
||||||
|
|
||||||
|
이 파일은 단순 회고 메모가 아니다.
|
||||||
|
|
||||||
|
- 어떤 문제가 있었는지
|
||||||
|
- 무엇을 약속하고 있었는지
|
||||||
|
- 실제로는 어떻게 동작했는지
|
||||||
|
- 어느 파일을 건드렸는지
|
||||||
|
- 지금은 열린 문제인지, 수정됐지만 브라우저 확인이 남았는지
|
||||||
|
|
||||||
|
를 한 번에 보게 만드는 운영 문서다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. 상태 정의
|
||||||
|
|
||||||
|
### `open`
|
||||||
|
|
||||||
|
- 아직 수정 전
|
||||||
|
- 다음 작업 라운드에서 다뤄야 함
|
||||||
|
|
||||||
|
### `fixed-awaiting-browser`
|
||||||
|
|
||||||
|
- 코드와 문서는 정리됨
|
||||||
|
- 브라우저 기준 최종 QA가 남아 있음
|
||||||
|
|
||||||
|
### `closed`
|
||||||
|
|
||||||
|
- 코드 / 문서 / 브라우저 확인까지 끝남
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. 현재 범위
|
||||||
|
|
||||||
|
이번 ledger v1은 아래 core loop 범위만 다룬다.
|
||||||
|
|
||||||
|
- `/app`
|
||||||
|
- `/space`
|
||||||
|
- `/stats`
|
||||||
|
- review handoff
|
||||||
|
- break / pause / return semantics
|
||||||
|
- Pro personalized handoff
|
||||||
|
|
||||||
|
`/settings`, `/admin`, landing shell의 정합성 감사는 다음 slice로 미룬다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Findings
|
||||||
|
|
||||||
|
| ID | Severity | Area | Product Promise | Actual Behavior | Affected Files | Status | Next Action |
|
||||||
|
| --- | --- | --- | --- | --- | --- | --- | --- |
|
||||||
|
| ALN-001 | P1 | `/space` Goal Complete / Break semantics | `잠깐 쉬기`는 블록을 닫고 break로 넘어가는 것처럼 읽힘 | 실제로는 overlay만 닫고 reminder만 예약되어 break 의미가 깨졌음 | `src/widgets/space-focus-hud/ui/SpaceFocusHudWidget.tsx`, `src/shared/i18n/messages/space.ts` | fixed-awaiting-browser | `잠시 비우기 -> pause + reminder`가 실제 체감상도 맞는지 브라우저 확인 |
|
||||||
|
| ALN-002 | P1 | `/app` Weekly Review primary entry | `/app`이 Weekly Review의 primary entry라고 정의됨 | current session이 있으면 review entry가 완전히 사라져 primary entry가 끊겼음 | `src/widgets/focus-dashboard/ui/FocusDashboardWidget.tsx`, `docs/15_app_stats_entry_flow_spec.md` | fixed-awaiting-browser | resume 상태에서 review entry 발견성과 우선순위 확인 |
|
||||||
|
| ALN-003 | P2 | `/space` secondary review teaser | `방금 끝낸 흐름까지 review에 담아둘까요?`처럼 read-after-write를 약속했음 | 실제로는 generic `/stats`만 열고, 방금 끝낸 흐름을 별도 handoff하지 않았음 | `src/shared/i18n/messages/space.ts`, `src/widgets/space-workspace/ui/SpaceWorkspaceWidget.tsx` | fixed-awaiting-browser | setup drawer teaser가 과장 없이 자연스럽게 읽히는지 확인 |
|
||||||
|
| ALN-004 | P1 | Pro personalized handoff | `/stats`에서 추천 ritual로 돌아간다고 말했음 | 실제로는 `/app` 문구만 바뀌고 start behavior는 기본 ritual 그대로였음 | `src/widgets/focus-dashboard/ui/FocusDashboardWidget.tsx`, `src/shared/i18n/messages/app.ts` | fixed-awaiting-browser | `entryPreset`이 실제 scene/sound/timer 시작값으로 적용되는지 검증 |
|
||||||
|
| ALN-005 | P2 | `/space` intent card interaction | rail, edit, expand/collapse의 역할이 분리돼야 함 | goal 클릭과 edit 진입이 섞여 예측 가능성이 낮았음 | `src/widgets/space-focus-hud/ui/IntentCapsule.tsx`, `docs/13_space_intent_card_collapsed_expanded_spec.md` | fixed-awaiting-browser | desktop/mobile에서 expand와 edit 구분이 분명한지 확인 |
|
||||||
|
| ALN-006 | P2 | `/space` Goal Complete 2단계 인지 | 1단계 choice와 2단계 next 입력이 명확히 구분돼야 함 | 사용자 입장에서는 `돌아가기 / 다음 목표로 바로 시작` 화면이 top-level 분기처럼 읽히기 쉬움 | `src/widgets/space-focus-hud/ui/GoalCompleteSheet.tsx`, `src/shared/i18n/messages/space.ts` | open | choice view와 next view의 제목, 구조, motion, context label을 더 분리하는 기획 필요 |
|
||||||
|
| ALN-007 | P2 | Weekly Review discoverability | review는 `/app`의 primary ritual이어야 함 | 데이터 gate와 currentSession 조건에 따라 사용자에게 “아예 없는 기능”처럼 느껴질 수 있음 | `src/widgets/focus-dashboard/ui/FocusDashboardWidget.tsx`, `docs/15_app_stats_entry_flow_spec.md` | open | low-data 상태와 resume 상태를 포함한 discoverability 정책 재정의 |
|
||||||
|
| ALN-008 | P1 | `잠시 비우기`와 `Break`의 제품 의미 | break는 reward/reset, pause는 recovery로 분리돼야 함 | 현재는 카피와 트레이는 개선됐지만, 제품 차원의 최종 정의와 시각 분리까지 완전히 닫히진 않았음 | `docs/10_refocus_system_spec.md`, `docs/11_away_return_recovery_spec.md`, `src/widgets/space-focus-hud/ui/GoalCompleteSheet.tsx`, `src/widgets/space-focus-hud/ui/ReturnPrompt.tsx` | open | `잠시 비우기`, active break, return(break)를 하나의 최종 state model로 재정의 |
|
||||||
|
| ALN-009 | P3 | Spec / current-state drift | 다음 세션 문서가 실제 구현과 맞아야 함 | intent card, goal complete, review entry 관련 오래된 표현이 여러 spec에 남아 있었음 | `docs/10_refocus_system_spec.md`, `docs/13_space_intent_card_collapsed_expanded_spec.md`, `docs/90_current_state.md`, `docs/session_brief.md`, `../../current_context.md` | fixed-awaiting-browser | 이후 라운드부터는 fix와 문서 갱신을 같은 커밋에서 닫는지 점검 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. 요약 판단
|
||||||
|
|
||||||
|
### 현재 이미 수습된 축
|
||||||
|
|
||||||
|
- break/pause 카피와 실제 동작의 큰 충돌
|
||||||
|
- `/app` resume 상태의 review entry 공백
|
||||||
|
- `/space` review teaser 과장 카피
|
||||||
|
- Pro ritual handoff의 실동작 부재
|
||||||
|
- intent card interaction ambiguity 일부
|
||||||
|
|
||||||
|
### 아직 열린 축
|
||||||
|
|
||||||
|
- `Goal Complete` 2단계 구조의 인지 부담
|
||||||
|
- low-data / resume 상태에서 review discoverability
|
||||||
|
- `잠시 비우기`와 진짜 break의 최종 state model
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. 다음 실행 우선순위
|
||||||
|
|
||||||
|
### 1. Static audit continuation
|
||||||
|
|
||||||
|
다음 문서가 필요하다.
|
||||||
|
|
||||||
|
- route-flow matrix
|
||||||
|
- state contract matrix
|
||||||
|
|
||||||
|
즉, 다음 라운드는 `설명 가능한 표`를 만드는 단계다.
|
||||||
|
|
||||||
|
### 2. Browser audit
|
||||||
|
|
||||||
|
반드시 아래 순서로 확인한다.
|
||||||
|
|
||||||
|
1. `/app` no-session entry
|
||||||
|
2. `/app` resume + review entry
|
||||||
|
3. `/app -> /stats -> /app`
|
||||||
|
4. `/space` goal complete choice
|
||||||
|
5. `/space` goal complete next
|
||||||
|
6. `/space` 잠시 비우기
|
||||||
|
7. `/space` return(focus)
|
||||||
|
8. `/space` return(break)
|
||||||
|
9. `/space` complete -> setup -> review teaser
|
||||||
|
|
||||||
|
### 3. 다음 수정 라운드의 우선순위
|
||||||
|
|
||||||
|
1. ALN-008
|
||||||
|
2. ALN-006
|
||||||
|
3. ALN-007
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. 운영 규칙
|
||||||
|
|
||||||
|
- 새로운 mismatch를 찾으면 이 문서에 먼저 기록한다
|
||||||
|
- severity 없이 추가하지 않는다
|
||||||
|
- `fixed-awaiting-browser`는 브라우저 확인 전까지 닫지 않는다
|
||||||
|
- 실제 fix가 끝나면 관련 commit hash를 이 문서에 추가한다
|
||||||
@@ -14,8 +14,8 @@ Last Updated: 2026-03-15
|
|||||||
|
|
||||||
## 현재 우선순위
|
## 현재 우선순위
|
||||||
|
|
||||||
1. `Product Alignment Audit` findings ledger 시작
|
1. `Core Loop Alignment` static audit
|
||||||
2. `Core Loop Alignment` static/browser audit
|
2. `Core Loop Alignment` browser audit
|
||||||
3. `Weekly Review` recovery 집계 연결
|
3. `Weekly Review` recovery 집계 연결
|
||||||
|
|
||||||
## 최근 세션 상태
|
## 최근 세션 상태
|
||||||
@@ -99,6 +99,10 @@ Last Updated: 2026-03-15
|
|||||||
- full review 강제 이동 없이 `/stats`를 여는 secondary entry로만 동작한다.
|
- full review 강제 이동 없이 `/stats`를 여는 secondary entry로만 동작한다.
|
||||||
- 방금 끝낸 흐름을 반영한다고 과장하지 않는 카피로 정리했다.
|
- 방금 끝낸 흐름을 반영한다고 과장하지 않는 카피로 정리했다.
|
||||||
- 다음 구현은 weekly review의 실제 recovery 집계 연결이다.
|
- 다음 구현은 weekly review의 실제 recovery 집계 연결이다.
|
||||||
|
- `Product Alignment Audit` 운영을 시작했다.
|
||||||
|
- `16_product_alignment_audit_plan.md`를 기준 문서로 추가했다.
|
||||||
|
- `17_product_alignment_findings.md`에 core loop의 P1/P2 mismatch를 수집하기 시작했다.
|
||||||
|
- 다음 라운드는 route-flow matrix와 state contract matrix를 만드는 static audit이다.
|
||||||
- 유료화 포지셔닝을 `Calm Session OS`로 재정의했다.
|
- 유료화 포지셔닝을 `Calm Session OS`로 재정의했다.
|
||||||
- Free는 기본 집중 시작, Pro는 더 잘 이어가기라는 메시지로 정리했다.
|
- Free는 기본 집중 시작, Pro는 더 잘 이어가기라는 메시지로 정리했다.
|
||||||
- old `Scene Packs / Sound Packs / Profiles` 중심 카피를 `Daily plan / Rituals / Weekly review` 구조로 교체했다.
|
- old `Scene Packs / Sound Packs / Profiles` 중심 카피를 `Daily plan / Rituals / Weekly review` 구조로 교체했다.
|
||||||
|
|||||||
@@ -35,6 +35,8 @@
|
|||||||
- `17_product_alignment_findings.md`가 생성된다
|
- `17_product_alignment_findings.md`가 생성된다
|
||||||
- 최소한 P1 / P2 finding이 route, promise, actual behavior, affected file 기준으로 정리된다
|
- 최소한 P1 / P2 finding이 route, promise, actual behavior, affected file 기준으로 정리된다
|
||||||
- 이미 수정된 항목과 아직 열린 항목이 분리된다
|
- 이미 수정된 항목과 아직 열린 항목이 분리된다
|
||||||
|
- 진행 상태:
|
||||||
|
- 완료
|
||||||
- 검증:
|
- 검증:
|
||||||
- 문서 self-review
|
- 문서 self-review
|
||||||
- 커밋 힌트:
|
- 커밋 힌트:
|
||||||
@@ -57,6 +59,8 @@
|
|||||||
- `/app`, `/space`, `/stats`의 primary CTA와 secondary CTA가 표로 정리된다
|
- `/app`, `/space`, `/stats`의 primary CTA와 secondary CTA가 표로 정리된다
|
||||||
- pause / return / complete / review handoff의 상태 의미가 문서화된다
|
- pause / return / complete / review handoff의 상태 의미가 문서화된다
|
||||||
- static mismatch가 severity와 함께 분류된다
|
- static mismatch가 severity와 함께 분류된다
|
||||||
|
- 진행 상태:
|
||||||
|
- 다음 작업
|
||||||
- 검증:
|
- 검증:
|
||||||
- source-of-truth 문서 대조
|
- source-of-truth 문서 대조
|
||||||
- 커밋 힌트:
|
- 커밋 힌트:
|
||||||
|
|||||||
Reference in New Issue
Block a user