d3ro-voice/docs/tdd-red/03-cleanup-and-consolidation.md
Yun Chan c3ddd36c6f
Some checks failed
deploy-site / deploy (push) Failing after 40s
docs: record the 1.1.0 release and add the infrastructure map
Release notes for 1.1.0 were split between an Unreleased section and the
version section, so the published notes would have omitted the update-feed
and desktop changes. Everything shipping in this version now sits under one
`## [1.1.0]` heading.

`docs/map/` becomes the entry point for what infrastructure exists per
platform and how far each feature is developed, with a documented update
protocol so feature work and this map do not drift apart again. The release
guide now states that installer binaries live in the update feed rather than
the repository.
2026-09-16 23:27:52 +09:00

90 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 03 · 삭제(Cleanup)와 통폐합(Consolidation)·구조화
**목적**: 02에서 '의미 없는 RED'로 분류된 것을 **삭제/수정**하고, 흩어진 테크닉·용어·도구적 접근을 **하나의 구조**로 통폐합한다.
---
## 1단계 · 삭제 (없는 것/가짜 것을 제거)
"없는 것" = 행위가 없어서 **존재 이유가 없는** RED. 다음을 명시적으로 제거한다.
- [ ] [02-#1] 단정 없는 `expect(true)` 류 · 태어나서 한 번도 실제 결함을 잡은 적 없는 테스트 삭제
- [ ] [02-#3] 프라이빗 메서드/내부 구현 세부 테스트 → 제거 또는 블랙박스 행위 테스트로 재작성
- [ ] [02-#4] 전부 목으로 만든 인공 시스템 테스트 → 실제 경계 통합 테스트로 교체 (단, 순수 로직 계층에 한정 — 네이티브/경계 서비스는 예외)
- [ ] [02-#5] 복붙 기대값(자기검증 파괴) 테스트 → 손으로 쓴 기대값으로 교체
- [ ] [02-#6] 커버리지 %만 위한 테스트(단정 축소) 제거
- [ ] [02-#9] 전 계층에 중복된 동일 시나리오 테스트 → 최저 충분 계층 하나로 축소
- [ ] [02-#8] 비결정/flaky 테스트 → 격리(owner 지정)·수리·**수리 불가 시 삭제**
- [ ] [02-추가] 죽은 테스트(실행 안 됨·스킵·영구 스킵·대상 코드 소멸) 삭제 — 02 DELETE에 11번째로 승격
- [ ] [02-추가] AI 에이전트가 추가한, 이유를 설명할 수 없는 '검증용 더미' 테스트 삭제
- [ ] [02-#2/#5] 테스트 목록에 없는 즉흥·무의도 구현 세부 테스트 제거
> 삭제 후 **정리 국면**에서는 뮤테이션 점수 회귀 없음을 변경 파일 증분으로 확인(커버리지 말고). 삭제가 행위 보호를 깨면 유지한 채 재작성.
---
## 2단계 · 통폐합 (흩어진 것들을 하나의 축으로)
기존에 별개로 통용되던 개념들을 "출처(사양/행위)"라는 단일 축으로 묶는다.
### 2-1. 테스트 전략 통폐합 → 하나의 포트폴리오
| 통폐합 전 (산재) | 통폐합 후 (하나의 축: 검증 계층) |
|---|---|
| unit / integration / e2e / system | **테스트 피라미드**(많은 단위 + 적당한 통합 + 소수 E2E) |
| TDD / ATDD / BDD / SDD | **Spec → 수용 기준 → 테스트**의 단일 사양 흐름 |
| approval / golden master / snapshot | **승인 테스트**(대용량 출력 비교) — 용도만 다름 |
| characterization test | **특성화** = 기존 동작 보호용 승인 (RED 정의 예외) |
| example / property / contract / mutation | **검증 보강 세트**: 예(가독성)+프로퍼티(넓이)+계약(경계)+뮤테이션(강도) |
### 2-2. TDD 3상 → "RED가 중심인 단일 피드백 루프"로 통합
RED를 독립된 절차가 아니라 **루프의 첫 반복 게이트**로 재배치:
```
[Spec] → [RED: 행위 하나 명세+실패증명] → [GREEN: 최소구현] → [REFACTOR: 행위 불변 정리]
↑__________________ TRACE/회귀 누적 ___________________│
```
- 여기서 "RED"는 02의 12가지 **패턴 카탈로그**(5축 충족)에 맞는 테스트만 허용한다.
- GREEN에서 단정·테스트를 고치지 않는다(two hats).
- REFACTOR는 행위를 바꾸지 않으며 항상 전체 스위트 초록 유지.
### 2-3. 빨강의 3가지 구현 전략 → 하나의 '진행 규칙'으로
`Fake it → Triangulate → Obvious`를 "**불확실함이 크면 작게, 확신이 있으면 일반 구현**"이라는 하나의 규칙으로 통합. (Beck: Obvious가 확실하면 바로 그것.)
### 2-4. 에이전트 시대 프레임워크와 인간 TDD 통합 → SHORT-SPEC + LONG-TRACE 루프
- **빠른 계층(short loop)**: 단위·통합 테스트 — 에이전트가 로컬에서 초 단위로 실행 (Alderson)
- **느린 계층(long gate)**: E2E·수용 테스트 — PR/CI에서 실행, **보호 경로**·독립 (Alderson, 2026 TDD-Agent)
- **사양 계층(spec)**: 수용 시나리오(긴 시나리오) — 올바른 것을 만드는가 (SDD)
---
## 3단계 · 구조화 (용어·책임·소유권 정리)
| 항목 | 확정 |
|---|---|
| "**의미 있는 RED**" = 행위·단정·예상된 실패·결정성·의도 5축 충족 (02) | KEEP |
| "**의미 없는 RED**" = 5축 위반(8종) + 별도 프로세스 금지(2종: 의례적·에이전트 약화) — 02-10가지 | DELETE/수정 |
| RED의 목적 = **사양 명세 + 독립 검증 + 완료 게이트** (2026 재정의) | 정의 |
| 테스트의 책임 주체 = **프로그래머** (고객/에이전트 부담 전가 금지) | Shore |
| 커버리지 = 진단, 뮤테이션 = 단정 강도, 시나리오 커버리지 = 행위 완성 (5052) | 매트릭스 |
| 에이전트 테스트 = 초안, 인간 리뷰 필수 (95) | 가드레일 |
| 테스트 이름 규칙 = `동작_시나리오_기대` (02: 설명력 패턴; SOURCES 46) | 표준 |
| 구조 = AAA / Given-When-Then (47) | 표준 |
---
## 산출물 요약
```
의미 있는 RED 12개 ← KEEP
의미 없는 RED 10개 ← DELETE/REWRITE
전략 5묶음 ← 통폐합 (피라미드/사양/승인/특성화/검증보강 — 특성화는 승인과 별도 행 유지)
TDD 3상 ← 단일 루프로 통합
빨강 3전략 ← 하나의 진행 규칙
빠른/느린/사양 ← 3-계층 구조화
8개 용어 ← 확정(구조화)
```