Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 68 additions & 0 deletions docs/handoffs/2026-07-13-qa-wayfinder-907-resolved-handoff.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Handoff — QA wayfinder 맵 #904 (#907 resolved · frontier #908/#909/#910)

**날짜:** 2026-07-13 · **세션:** #907(반복 prod 뮤테이션 viability) grilling → codex 교차검증 REVISE → 개정 resolve · 보안 에스컬레이션
**맵:** [#904](https://github.com/decodedcorp/decoded/issues/904) 🗺️ 운영사이트(decoded.style) 에이전틱 QA

---

## 이게 뭔가 (한 줄)

decoded.style 컨슈머 사이트 QA 시나리오 매트릭스 + 반복 harness 설계 spec을 확정하는 wayfinder 맵. **계획까지**(구현은 `/to-tickets → /implement`). 이번 세션은 **frontier 티켓 #907을 resolve**하고 다음 frontier를 정리.

## 이번 세션에 완료된 것

### ✅ #907 반복 prod 뮤테이션 viability — **RESOLVED·CLOSED**

파이프라인: **AFK 백엔드 사실조사(Rust `api-server`) → HITL grilling(5분기) → codex 적대적 교차검증(REVISE) → 재-grill(2) → 개정 resolve.**

**채택 기준:** prod 반복 QA 허용 = ①모든 side-effect(sync/async DB·스토리지·인덱스·AI)에 검증된 inverse + ②비용 fail-closed + ③실사용자 노출0, **일 때만.**

- **safe core (prod 반복):** login · QA↔QA follow(직렬) · comment(QA포스트) · look-set save(사전부재확인) · **읽기(수용된 예외** — 글로벌 집계 노이즈 known-risk 문서화, 서버측 QA-제외는 후속)
- **강등(local/mock or 조건부 수동 canary):** post create/decode/try · VTON · post-like · signup · report
- **QA 계정 ≥2**(직렬 뮤테이션; 병렬은 lease pool)
- **안전 rail:** manifest 삭제(ID+owner+run_id+시각 일치) · 다신호 cleanup 검증(DB404+피드/프로필 부재+인덱스 task 완료) · R2 잔여물 gap 명시

**codex가 잡은 교훈(다음 세션도 유의):** 초안 grilling이 **3개 틀린 전제** 위에 있었음 — 실코드로 전부 확정: ①포스트 GET=`view_count`++·`view_log` INSERT(읽기≠side-effect0) ②Style DNA build=Gemini 호출(반복루프≠$0) ③`delete_post`가 R2 미정리(create→delete≠self-cleanup). **원인=조사를 5질문에 바운드→더 넓은 side-effect 표면 놓침.** 결정 티켓은 **엔드포인트별 side-effect 전수**를 얕게라도 훑고, 외부 모델 교차검증을 붙일 것.

- resolution 상세 = [#907](https://github.com/decodedcorp/decoded/issues/907) resolution 코멘트(추상). 맵 #904 Decisions-so-far 등재 완료.

## 현재 frontier (전부 OPEN·unclaimed)

#905/#906/#907 closed.

| 티켓 | type | 무엇 | 노트 |
| --- | --- | --- | --- |
| [#908](https://github.com/decodedcorp/decoded/issues/908) | grilling | harness 아키텍처(결정적/탐색적/하이브리드) | **먼저 권장** — #909 매트릭스 shape. **#907이 mechanism 입력 넘김**(run ledger·fail-closed 예산 차단기·스토리지 cleanup/TTL·account lease pool·서버측 QA 집계 제외·AI mock/격리 프로젝트) — #908 pointer 코멘트에 등재 |
| [#909](https://github.com/decodedcorp/decoded/issues/909) | grilling | 시나리오 우선순위 + 매트릭스 | C9 뮤테이션 행을 **엔드포인트별 inverse 검증표**로 재구성(#907). signup=commissioning 체크리스트. pointer 코멘트 등재 |
| [#910](https://github.com/decodedcorp/decoded/issues/910) | grilling | 세부 컴포넌트 검증 해상도(Storybook 없음) | 독립. prep 코멘트=대상집합(25 vs 74 DS배럴)·회귀자동화 vs 육안 |

**prep 코멘트:** frontier 티켓에 AFK prep 첨부됨(workflow wfllzo7kz). ⚠️ **#909 prep은 VTON auth 노출이 redact됨**(아래 보안 참조) — 나머지 매트릭스 뼈대는 유효.

## 🔒 보안 항목 (QA 범위 밖 — landed)

- **VTON 무인증·무비용상한 발견**: `/api/v1/vton`이 인증·rate-limit·비용상한 없이 원격 Vertex 호출(아이템 체이닝 증폭) → GCP 쿼터가 유일 방벽. **QA 이슈 아닌 독립 보안 이슈.**
- vault 보안노트 작성+커밋(decoded-docs `Inbox/2026-07-13-vton-unauth-uncapped-security-finding.md`, file:line 근거, 팀 triage 대상). ⚠️ **vault branch `codex/marketing-research`에 커밋됨·미push** — 팀 공유하려면 push 필요.
- **공개 노출 redaction 완료**: `decodedcorp/decoded`는 **PUBLIC**. #907·#909 prep 코멘트의 악용상세(무인증·무상한·file:line) 제거, 4개 티켓 전부 clean 확인.

## 재개 방법

- `/wayfinder #904` — **권장 #908 먼저**(아키텍처가 #909 shape + #907 mechanism 입력 수령). #910 독립.
- 병렬: frontier 3개 서로 다른 세션 동시 claim 가능(순수 결정 티켓, 브랜치 불필요). 착수 전 `gh issue edit <N> --add-assignee @me`.

## ⚠️ 규약·주의 (이 맵 특유 + 이번 세션 발견)

- **PUBLIC repo**: 민감/악용 상세(엔드포인트 auth·비용·file:line·취약점)는 **로컬·vault만**, 공개 트래커(이슈·맵)엔 **추상 결론만**. Claude auto-mode classifier가 위반 차단. 사용자에게 공개 게시 여부 명시 확인.
- **⚠️ 워크트리 공유 위험**: 메인 워크트리를 다른 세션들이 수시로 branch checkout(홈페이지 작업 등) → **untracked 파일이 sweep으로 소실**(이전 QA 핸드오프가 이렇게 사라짐). **핸드오프는 반드시 커밋**(이 파일은 격리 worktree `docs/904-qa-wayfinder-907-handoff` 브랜치에 커밋됨). #904 작업 자체는 GitHub 이슈+`docs/qa/`라 브랜치 무관.
- **grilling=HITL**: 결정은 사람. 사실은 조사. 결정 티켓 resolve는 세션당 1개.

## 남은 수동 액션

- 맵 #904를 GitHub **Project #3**에 수동 추가(gh 토큰 project scope 없음).
- vault 보안노트 **push**(팀 공유 시) — 현재 `codex/marketing-research`에 로컬 커밋만.

## 참조

- 맵: [#904](https://github.com/decodedcorp/decoded/issues/904) · 인벤토리: `docs/qa/consumer-surface-inventory.md`(dev)
- 맵 규약: `docs/agent/setup/issue-tracker.md` § Wayfinding operations · handoff 규약: `docs/agent/handoff.md`
- 제품 본질: `/CONTEXT.md` · 라우트: `docs/agent/web-routes-and-features.md`
- 겹침: 이미지 최적화 #810(perf, 중복회피) · i18n #767/#768(SEO) · Style DNA 무드 #802/#849
1 change: 1 addition & 0 deletions docs/handoffs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ status vocab: `active`(이어가는 중) · `blocked`(외부 의존 대기) · `
| ----------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------- |
| **active** | AI 하네스 표준화 | [2026-06-25-ai-harness-standardization](2026-06-25-ai-harness-standardization-handoff.md) |
| **active** | Locale / i18n | [2026-06-18-locale-i18n-harness](2026-06-18-locale-i18n-harness.md) (P2 1b-2·Phase2/3 잔여 — P3 완료) |
| **active** | QA wayfinder #904 | [2026-07-13-qa-wayfinder-907-resolved](2026-07-13-qa-wayfinder-907-resolved-handoff.md) (#907 resolved · frontier #908/#909/#910 — #908 먼저) |
| **blocked** | Entity 검색 잔여 | [2026-07-02-entity-search-remaining](2026-07-02-entity-search-remaining-handoff.md) (배포 후 확인 + 임베딩 — #759 완료) |
| **blocked** | dev→main Release | [2026-06-28-dev-main-release](2026-06-28-dev-main-release-handoff.md) (팀 승인 + prod migration 대기) |

Expand Down