# 파괴 모드 플레이 피드백 수정 계획 근거: [후속 설계](../specs/2026-10-30-destruction-playtest-fixes.md). 기존 브랜치 `codex/destruction-six`에서 진행한다. ## 최신 범위 변경 사용자가 분쇄기를 제거하기로 확정했다. 기존 톱·망치 개선은 보존한다. 분쇄기 2판과 전용 코드를 제거하고 총204판·톱201~202·망치203~204, 세부 모드21종으로 맞춘다. 살아 있는 고유 ID와 기존200판 순서는 유지한다. 게임/문서 검사·새 번호의 완료/다음 판/저장과 두 해상도 화면을 재검증하고, 최종 독립 리뷰에 제거 영향만 추가 검토한다. 아래 선택 대기 문장은 결정 전 이력이다. 1. 마지막 잔재의 실제 표면·가림·바닥 침투를 재현한다. 바닥 두께 보존과 손 뗌 시 도구 숨김을 테스트로 고정한다. 2. 전동톱 빈 공간 추적과 접촉 중 진동 갱신을 연결하고 이탈·종료·취소를 검사한다. 3. 망치 그립 축·들기/하강/접촉/반동을 정하고, Mode가 실제 충격 시점의 손상·피드백·채점 시작을 소유하도록 연결한다. 4. 단위·타입·빌드를 확인하고 두 해상도에서 실제 입력과 연속 화면을 검수한다. 일정 간격 화면 쓸기로 완료를 시도하고 남는 잔재는 도구를 치운 화면에서 확인한다. 5. 영향 E2E·생명주기 회귀, 독립 코드·시각 리뷰를 수행한다. 기존 기획서·진행 상태와 미검증 항목을 갱신한다. 6. 분쇄기 조작은 별도 사용자 선택 뒤 구체화한다. 선택 전 현재 자동 공급을 개선 완료로 표시하지 않는다. ## 실행 기록 - 재현: 돔 젤리 바닥 25셀(1.217%)의 투영 삼각형 136개가 손을 뗀 뒤에도 망치 뒤에 가려졌다. 한 셀의 최대 눌림 정점은 바닥 아래로 내려갔다. 표면 생성 자체는 한 셀도 정상 유지했다. - 망치 원인: 기존 입력 직후 손상이 먼저 생기고 이후 망치가 올라갔다 내려와 실제 착지 시 추가 충격이 없었다. - 바닥 보존과 타격 자세 테스트는 각각 수정 전 실패를 확인했다. 통합 후 4파일 33개 테스트 통과. 손 뗌 후 도구를 원위치에 유지하던 기존 검사는 새 가림 해소 계약으로 갱신했다. - 톱·망치의 후속 화면·회귀·독립 리뷰를 완료했다. 분쇄기 새 조작과 실제 기기 촉감은 미확정/미검증이다. - 일정 간격 화면 쓸기 첫 실행에서 톱 203·204판은 보이는 2셀이 반복해서 남았다. 중심 광선만 접촉에 쓰던 원인으로, 실제 도구 폭 안의 표면 가장자리까지 접촉을 검사하되 도구 중심은 포인터 광선에 유지하도록 수정했다. 가까운 한 셀/먼 빈 공간/중심 비보정 테스트의 RED→GREEN을 확인했다. - 도구 폭 수정 후 파괴 단위 7파일 63개·TypeScript·프로덕션 빌드 통과. 앞선 전체 단위는 192파일 3,117개 통과였고, 이후 추가한 한 셀 폭 검사를 포함한 변경 영역을 다시 확인했다. - 기존 파괴/생명주기 E2E는 Chromium 데스크톱·모바일과 WebKit 75개 통과. 새 자연 입력 검사의 첫 실행은 14통과/1실패였다. 모바일 206판에서 같은 방향을 두 번 쓸고 나서 화면 좌측에 보이는 5셀이 남았고, 완료 조건을 완화하지 않았다. 두 번째 경로를 세로 쓸기로 바꾼 뒤 같은 판의 실제 터치 단독 검사를 통과했다. 다른 브라우저의 변경된 경로도 재확인한다. - 양해상도 4판의 일정 간격 쓸기에서 전량 0 완료를 확인했다. 잔재 캡처는 손 뗌 뒤 2.2초를 진행해 장식 파편을 먼저 치웠고, 망치 40ms 연속 원본은 준비 동작 중 재료 유지와 충격 이후 파손을 함께 기록했다. `.playwright-mcp/destruction-feedback/`에 원본·보고서를 둔다. - DocsSite 첫 테스트는 샌드박스의 로컬 listen 제한으로 6통과/1실패 후 허용 환경에서 7개 통과했다. 첫 정적 검사는 새 근거 문서 2개의 원문 내보내기 누락으로 링크 4개를 지적했고 생성 목록을 보완했다. Astro 캐시 쓰기 제한 후 허용 환경에서 타입·빌드·정적 HTML 11개 링크 검사까지 통과했다. - 가로·세로 쓸기만으로도 모든 경우가 끝나는 것은 아니었다. 변경 경로의 데스크톱 206판에는 보이는 한 셀이 남았다. 최종 검사는 두 번 쓸기 뒤에도 남으면 손 뗌·파편 정리 후 **실제 스크린샷의 젤리 화소가 보이는지** 검사하고 그 화면 위치를 눌러 마무리한다. 206판 3환경 재검증 3개 통과. 앞선 나머지 12개는 첫 쓸기 또는 충격 시점 검사에서 통과해 해당 결과를 재사용한다. 일반 입력의 1별 이상 완료를 요구하며, 3별 가능성은 별도의 기존 실제 입력 검사와 양해상도 경로에서 확인한다. - 실시간 톱 동작의 진동 요청은 두 해상도에서 19~20회, 마지막 요청은 중단(0)이었다. 동시 E2E 중 측정된 CPU 평균 약2.7ms·p95 4.4~4.7ms, 최대 프레임 간격 26.2~36ms이며 실기기 성능 보증으로 해석하지 않는다. - `gpt-6.1-sol / medium` 최종 독립 코드·시각 리뷰는 Critical·Important 없이 톱·망치 수정 범위를 승인했다. 녹색 톱 잔재 화소 검출 누락 Minor를 보완했고 리뷰어가 파괴 단위 7파일 63개를 독립 재실행해 통과했다. 망치의 사각 머리 외형과 사용자가 느끼는 세기는 사람 손 평가가 남는다. - ADB에서 승인된 실제 S22 Ultra 연결을 확인했다. 기존 앱 WebView 진단 소켓이 응답하지 않아 현재 번들 실행·네이티브 햅틱 진단에 진입하지 못했다. 앱 설치·데이터는 변경하지 않았고 이번 진단 프로세스·포트 포워딩을 종료·제거했다. Android/iOS 실제 촉감 검증은 미완료이며 에뮬레이터는 사용하지 않았다. - 현재 수정은 작업 브랜치의 미커밋 변경이다. 로컬 main 재병합·원격 푸시·운영 배포는 실행하지 않았다. 분쇄기는 새 조작 선택을 기다린다. ## 분쇄기 제거 후 최종 검증 - 사용자의 최종 제거 결정에 따라 활성 총204판·세부21종, 톱201~202·망치203~204로 정리했다. 기존200판 순서와 남은4판 고유ID를 보존했다. 분쇄기 공급·롤러·압축·격자 소비와 디버그feed를 제거했다. 기존 분쇄기 별·도감 기록은 퇴역ID/재료 목록을 통해 보존하고 이어하기를 살아 있는 판으로 복원한다. - TypeScript·프로덕션 빌드 통과. 전체 단위 최초191파일/3,114개 통과·1개 실패는 기존 원본81판 전용 퇴역 목록 가정이었다. 원본 보존·중복 방지·퇴역 비활성 보증을 유지하면서 새로 퇴역한 집합이 정확히 분쇄기2개인지 검사하도록 수정했다. 관련4파일30개·타입 재검증 통과. 독립 리뷰어는 파괴/진행9파일84개와 해당 퇴역검사3개를 별도 실행해 통과했다. - Chromium 데스크톱·모바일, WebKit의 실제 완료·모든 별·FAIL/Retry·Next·저장·취소·숨김·복구·자원·자연 입력·디버그 계약 **111개 통과(6.0분)**. 로그 `/private/tmp/jelly-no-shred-e2e.log`. 자연 입력은 화면 쓸기 뒤 보이는 잔재를 눌러 마무리하며 일정 쓸기만으로 항상 끝난다고 해석하지 않는다. - 새201~204판의 두 해상도32장·망치40ms20장과 실제 원본 잔재를 다시 검수했다. `.playwright-mcp/destruction-without-shredder/`의 8개 완주 경로 모두 원본0 완료. 모바일204판의 동일 방향 쓸기3회는33.35초2별이며 다른 입력에서는3별 가능성을 별도 확인했다. 독립 코드·시각 추가 리뷰에서 중요 결함 없음. - DocsSite204판·세부21종·분쇄기 미노출 생성 목록 테스트7개와 타입/빌드/정적HTML11개 링크 검사를 통과했다. 원래 `/destruction-six/` URL과 초기206판 검증은 이력으로 유지한다. 현재 수정은 `codex/destruction-six`의 미커밋 변경이며 main 재병합·배포 전이다. 실제 기기 촉감·사용자 손맛 확인은 남았다. ## main 반영 요청 사용자가 작업 완료 후 main 병합·푸시를 승인했다. 최종 전체 단위와 필수 모바일 E2E를 검증하고 검증본을 커밋한 뒤, 지정 실행 담당이 main에 병합·푸시한다. 이전 미배포·미커밋 문장은 당시 실행 이력이다. 원격 SHA 확인과 운영 에셋 식별자 대조로 반영을 확인한다. - main 푸시 전 최종 전체 단위 **192파일 3,115개 통과(161.47초)**. 필수 `npm run e2e:mobile`은 검증된 현재 dist를 쓰는 전용 설정으로 실행해 **724개 통과·27개 사전 제외·실패0(22.3분)**. 로그는 `/private/tmp/jelly-main-push-unit.log`·`/private/tmp/jelly-main-push-mobile.log`다. 기능 소스는 앞선 독립 리뷰 이후 변경하지 않았으며, 문서의 운영 반영 상태만 사용자 승인에 맞춰 갱신했다.