배치 규범 · 워크플로우 문서 · CI 검증 연결 · 싱글턴 정리 - #22
Merged
Merged
Conversation
계획서가 스스로 모순이었다. 규칙 절에는 "테스트를 먼저 쓰고 옮긴다"고 적어놓고 실행 절차는 "복사 → 테스트"로 적혀 있었다. 뷰 안 로직은 테스트를 쓸 수가 없다(테스트 타깃이 App/을 못 본다). 그래서 "리팩터링 전에 테스트"를 글자 그대로 적용하면 시작을 못 한다. 대신 옮기기 전에 원본을 돌려 기대값을 뽑아두고, 그 값으로 새 타입을 검증한다. 그러면 옮기다 생긴 실수가 정답으로 굳지 않는다. 추출할 때마다 세 줄을 기록하는 절차도 넣었다 — 무엇과 같이 움직였나, 뷰에 무엇이 남았나, @query가 필요했나. 13개가 쌓이면 PATTERNS의 적합도를 추론이 아니라 관측으로 다시 채운다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
이름 붙은 아키텍처 대신 규범 문서로 간다. 근거는 DECISIONS.md D2에 있고, 요지는 이 저장소에서 실제로 일관성을 만든 것이 DesignSystem/README.md였다는 것이다 — 규범 드리프트가 두 버전 연속 0이다. 지금 확정할 수 있는 것만 담았다. 미정인 다섯 개는 "미정"이라고 적어뒀다 — 빈칸이 보여야 채워진다. 특히 데이터 접근을 어느 갈래로 통일할지는 추출을 해봐야 근거가 생긴다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
절차만 적힌 문서였는데, 각 단계가 왜 생겼는지를 사건과 숫자로 붙였다. 근거를 지우면 다음 세션이 "이 단계 왜 있지?" 하고 걷어낸다. 담은 것: 네 버전의 지표 추이와 그 해석, 단계마다 담당 규칙·지표·성적, 각 단계를 만든 실제 사건(14개 목록 중 절반이 사라진 것, 시뮬레이터 1,015회로 산 것, 스와이프 3연속 오진), 워크플로우 어디에서 무엇이 검증되는지, 그리고 못 잡은 것 넷과 그것이 어느 칸의 부재였는지. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
계약 검사는 실패시킨다 — entitlements·plist·버전 일치는 컴파일도 테스트도 통과하면서 틀릴 수 있고, v1.3.0에서 두 번 물렸다. 품질 기준선은 실패시키지 않고 기록만 한다. 리팩터링 중에는 숫자가 잠깐 나빠지는 구간이 있고, 그때마다 빨간불이면 규칙이 일을 막는다. 대신 매 실행에 GitHub 요약으로 남겨 추세를 본다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
RootTabView가 이미 같은 인스턴스를 .environment로 주입하고 있는데 여기서만 .shared를 직접 불렀다. 같은 타입을 두 방식으로 쓰면 테스트나 프리뷰에서 갈아끼울 자리가 사라진다. 동작은 같다. 다만 환경 주입이 빠진 경로가 있으면 런타임에 크래시하는 종류의 변경이라 컴파일로는 못 잡는다 — 호출부 둘(TodoRow, TimelineBlock)이 모두 RootTabView 아래인 것을 확인했고, 검증 카드로도 넘긴다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
"되물었으면 다음 프롬프트를 돕는 한 줄을 남긴다"가 규칙(R5)과 스킬(/intake)에는 있는데 워크플로우 문서와 도식에는 빠져 있었다. 그리고 v1.3.0에서 다섯 번 되묻고 한 번도 안 남겼다 — 규칙에 "같은 종류가 반복될 때만"이라는 단서가 있었고, 판단이 필요한 규칙은 판단하기 전에 잊힌다. "검토는 매번, 남기는 것은 판단"으로 바꿨다. 답을 받은 직후에 남길 것이 있나를 매번 보고, 없으면 안 남긴다. 두 번째로 같은 종류가 갈리면 반드시 남긴다. 지표는 안 만들었다. 셀 수는 있지만 지표를 늘리는 것도 비용이라 한 버전 지켜보고 정한다. 그 사실도 문서에 적어뒀다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
R3의 담당 지표인 검증 통과율의 원본 데이터다. v1.2.0 이후 한 줄도 안 쌓여 있었다 — 카드는 나갔는데 결과를 안 적었다. 라이브 액티비티 메뉴는 이번 싱글턴 변경(#22)의 확인이다. 환경 주입으로 바꾼 뒤에도 문구가 관찰을 따라 바뀌는 것을 실기기에서 확인했다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
변경 사항
DECISIONS.md의 권고 넷을 그대로 실행합니다. 커밋 다섯 개로 나눴습니다.
1. 계획서를 고쳤습니다 (
5b04932) — 스스로 모순이었습니다. 규칙 절에는 "테스트를 먼저 쓰고 옮긴다"고 적어놓고 실행 절차는 "복사 → 테스트"였습니다.뷰 안 로직은 테스트를 쓸 수가 없어서(테스트 타깃이
App/을 못 봅니다) "리팩터링 전에 테스트"를 글자 그대로는 못 합니다. 대신 옮기기 전에 원본을 돌려 기대값을 뽑아두고 그 값으로 새 타입을 검증합니다. 그러면 옮기다 생긴 실수가 정답으로 굳지 않습니다. 추출할 때마다 세 줄을 기록하는 절차도 넣었습니다.2. 코드 배치 규범 (
35338e6, D2) — 이름 붙은 아키텍처 대신 규범 문서로 갑니다. 지금 확정 가능한 것만 담고 미정 다섯 개는 "미정"이라고 적어뒀습니다. 특히 데이터 접근을 어느 갈래로 통일할지는 추출을 해봐야 근거가 생깁니다.3. 워크플로우 문서 재작성 (
db8f975) — 절차만 있던 것을 근거까지 담아 다시 썼습니다. 네 버전 지표 추이, 단계마다 담당 규칙·지표·성적, 각 단계를 만든 실제 사건, 어디에서 무엇이 검증되는지, 그리고 못 잡은 것 넷과 그것이 어느 칸의 부재였는지.4. CI에 두 스크립트 (
5848405, D4) — 계약 검사는 실패시키고, 품질 기준선은 기록만 합니다. 리팩터링 중에는 숫자가 잠깐 나빠지는 구간이 있고 그때마다 빨간불이면 규칙이 일을 막습니다.5. 싱글턴 두 줄 (
89bc12b, D5-A) —TodoActions가 이미 주입된 환경을 쓰게 했습니다.확인 등급
새로 만든 기준(review-criteria.md)을 이 PR부터 적용합니다.
🔴 반드시 보세요 — 하나
Mosco/App/Features/Calendar/TodoActions.swift— 싱글턴을 환경 주입으로 바꿨습니다. 컴파일로는 못 잡는 종류입니다. 환경 주입이 빠진 경로가 있으면 런타임에 크래시합니다. 호출부 둘(TodoRow,TimelineBlock)이 모두RootTabView아래인 것을 확인했지만, 확인은 사람이 합니다. 아래 카드 1번.🟡 훑어보세요
.github/workflows/ci.yml— 단계 둘 추가. 이 PR의 CI 실행 자체가 검증입니다.🟢 안 보셔도 됩니다
docs/**문서 넷. 되돌리기가 한 줄입니다.체크리스트
// TEMP:0건확인한 것
tools/artifact_check.sh와quality_baseline.py를 로컬에서 돌려 통과를 봤고, CI YAML은 파싱해서 단계 순서를 확인했습니다.TodoActions를 쓰는 곳은TodoRow:176과DayTimelineView:226둘뿐이고, 둘 다RootTabView가 주입하는 환경 아래입니다.SettingsScreen이 시트로 뜨면서도 같은 환경을 이미 쓰고 있어서, 시트 경계에서 환경이 끊기지 않는 것도 확인했습니다.검증 카드
■ 라이브 액티비티 메뉴 [실기기 권장]
이 카드가 통과하면 D5의 나머지(튜토리얼 창, 테마 색)도 같은 방식으로 갈 수 있습니다.
위임했으면 쌌을 곳
없었습니다. 문서 작성은 이번 세션의 맥락이 필요했고, 나머지는 파일 두세 개짜리였습니다.
관련 이슈
없음 (DECISIONS.md D1·D2·D4·D5 실행)