| name | spec-diff |
| description | Compare paired _TOBE.md and _ASIS.md docs to identify code/spec drift and refactor scope. |
Spec Diff: Tobe vs As-Is Drift ๋ฆฌํฌํธ
Overview
Tobe ์คํ ๋ฌธ์(_TOBE.md)์ As-Is ๋ฌธ์(_ASIS.md)๋ฅผ ๋น๊ตํ์ฌ ์ด๋๊ฐ ์ผ์นํ๊ณ , ์ด๋๊ฐ driftํ๋์ง ๋ฆฌํฌํธ๋ฅผ ์์ฑํ๋ค. ๊ฐ drift์ ๋ํด ์ฒ๋ฆฌ ์ ํ์ง๋ฅผ ์ ์ํ๋ค. ์ฝ๋๋ฅผ ์ง์ ์ฝ๊ฑฐ๋ ์์ ํ์ง ์๋๋ค.
When to Use
_TOBE.md์ _ASIS.md๊ฐ ๊ฐ์ ๋ชจ๋์ ๋ํด ์กด์ฌํ ๋
- ๋ฆฌํฉํ ๋ง ๋ฒ์๋ฅผ ์ ํ๊ธฐ ์ ์ ์คํ๊ณผ ์ฝ๋์ ๊ดด๋ฆฌ๋ฅผ ํ์
ํ ๋
- ์์ด์ ํธ๊ฐ ์ฝ๋ฉํ ๊ฒฐ๊ณผ๊ฐ ์คํ์์ ์ผ๋ง๋ ๋ฒ์ด๋ฌ๋์ง ์ถ์ ํ ๋
- "์คํ์ด๋ ์ฝ๋๊ฐ ์ผ๋ง๋ ๋ค๋ฅธ์ง ๋น๊ตํด", "drift ํ์ธ" ์์ฒญ ์
When NOT to use:
_TOBE.md ๋๋ _ASIS.md๊ฐ ์์ ๋ (๋จผ์ doc-separator / reverse-doc ์คํ)
- ์ฝ๋๋ฅผ ์ง์ ๋ถ์ํ ๋ (โ reverse-doc)
- ํผํฉ ๋ฌธ์๋ฅผ ๋ถ๋ฆฌํ ๋ (โ doc-separator)
- "์ด๋ ์ชฝ์ด ๋ง๋ค"๋ ํ๋จ์ด ํ์ํ ๋ (์ด ์คํฌ์ ์ฐจ์ด๋ง ๊ธฐ์ ํ๋ค)
Drift ๋ถ๋ฅ ์ฒด๊ณ (Quick Reference)
| ์นดํ
๊ณ ๋ฆฌ | ์๋ฏธ | ๊ถ์ฅ ์กฐ์น |
|---|
[MATCH] | ์คํ๊ณผ ์ฝ๋ ์ผ์น | ์์ |
[DRIFT-HARMLESS] | ๋ค๋ฅด์ง๋ง ๊ธฐ๋ฅ ์ํฅ ์์ (๋ณ์๋ช
, ์์, ์ถ๊ฐ ๋ก๊น
) | ์คํ์ ์ฝ๋์ ๋ง์ถฐ ์
๋ฐ์ดํธ |
[DRIFT-FUNCTIONAL] | ๋์์ด ๋ค๋ฆ. ๊ฒฐ๊ณผ ์ํฅ ๊ฐ๋ฅ (๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ, ๋น ์ง ์กฐ๊ฑด) | ํ
์คํธ๋ก ์ํฅ ํ์ธ โ ์ฝ๋ ์์ or ์คํ ์
๋ฐ์ดํธ |
[DRIFT-STRUCTURAL] | ๊ตฌ์กฐ๊ฐ ๋ค๋ฆ (ํด๋์ค ๊ณ์ธต, ๋ชจ๋ ๋ถ๋ฆฌ, ์
์ถ๋ ฅ ํ์
) | ์ธํฐํ์ด์ค ์ฌ์ ์. ํต์ฌ์ด๋ฉด ๋ฆฌํฉํ ๋ง |
[MISSING-IN-CODE] | ์คํ์ ์์ผ๋ ๋ฏธ๊ตฌํ | ํ์์ฑ ํ๋จ ํ ๊ตฌํ or ์คํ์์ ์ ๊ฑฐ |
[MISSING-IN-SPEC] | ์ฝ๋์ ์์ผ๋ ์คํ์ ์์ (์์ด์ ํธ ์์ ์ถ๊ฐ) | ์คํ์ ์ถ๊ฐ or ์ฝ๋์์ ์ ๊ฑฐ |
Drift ์ฌ๊ฐ๋: STRUCTURAL 2๊ฐ ์ด์ ๋๋ FUNCTIONAL 5๊ฐ ์ด์์ด๋ฉด HIGH.
์ถ๋ ฅ ํ์: {module_name}_DRIFT.md
# {๋ชจ๋๋ช
} - Drift ๋ฆฌํฌํธ
> ์์ฑ์ผ: {๋ ์ง}
> Tobe ๊ธฐ์ค: {_TOBE.md ํ์ผ๊ฒฝ๋ก}
> As-Is ๊ธฐ์ค: {_ASIS.md ํ์ผ๊ฒฝ๋ก}
## ์์ฝ
| ์นดํ
๊ณ ๋ฆฌ | ๊ฑด์ |
|---------|------|
| MATCH | N |
| DRIFT-HARMLESS | N |
| DRIFT-FUNCTIONAL | N |
| DRIFT-STRUCTURAL | N |
| MISSING-IN-CODE | N |
| MISSING-IN-SPEC | N |
**Drift ์ฌ๊ฐ๋**: {LOW / MEDIUM / HIGH / CRITICAL}
## ์์ธ ํญ๋ชฉ
### [์นดํ
๊ณ ๋ฆฌ] ํญ๋ชฉ๋ช
- Tobe: {์คํ ๊ธฐ์ }
- As-Is: {์ฝ๋ ์ค์ }
- ์ํฅ: {์์ ์ํฅ ๋๋ "์์"}
- ๊ถ์ฅ: {์ ํ์ง ์ ์}
(๋ชจ๋ ํญ๋ชฉ์ ๋ํด ๋ฐ๋ณต)
## ์ฐ์ ์ฒ๋ฆฌ ๋์
(STRUCTURAL, FUNCTIONAL ์ค ์ํฅ ๋ฒ์ ํฐ ๊ฒ๋ถํฐ)
## ๋ค์ ๋จ๊ณ ์ ์
(๋ฆฌํฌํธ ๊ธฐ๋ฐ ๊ตฌ์ฒด์ ์ก์
์์ดํ
)
์ํฌํ๋ก์ฐ
- Tobe ๋ฌธ์์ As-Is ๋ฌธ์๋ฅผ ๋ชจ๋ ์ฝ๋๋ค.
- ๊ธฐ๋ฅ ๊ธฐ์ค์ผ๋ก ๋งค์นญํ๋ค (์ด๋ฆ์ด ์๋๋ผ ๋์์ผ๋ก ๋์).
- ์ถ์๋๊ฐ ๋ค๋ฅด๋ฉด As-Is ํจ์๋ค์ Tobe์ ์ถ์ ๊ธฐ๋ฅ์ ๊ทธ๋ฃนํํด์ ๋น๊ต. ๊ทธ๋ฃนํ ๋ถ๊ฐํ ํจ์๋
[MISSING-IN-SPEC].
- ๊ฐ ๋จ์๋ฅผ 6๊ฐ ์นดํ
๊ณ ๋ฆฌ๋ก ๋ถ๋ฅํ๋ค.
- ๋ถ๋ฅ ๊ฒฐ๊ณผ๋ฅผ Drift ๋ฆฌํฌํธ๋ก ์์ฑํ๋ค.
- ์ฐ์ ์ฒ๋ฆฌ ๋์์ ์ํฅ ๋ฒ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค.
Common Mistakes
| ์ค์ | ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ |
|---|
| "์ฝ๋๊ฐ ํ๋ ธ๋ค" (ํ๋จ) | ์ฐจ์ด๋ฅผ ๊ธฐ์ ํ๊ณ ์ ํ์ง๋ฅผ ์ ์ |
| ์ด๋ฆ ๊ธฐ์ค ๋งค์นญ | ๊ธฐ๋ฅ ๊ธฐ์ค ๋งค์นญ ("feasibility checker" = validate_placement()) |
| ํ๋จ ๋ถ๊ฐํ ๊ฒ์ ์ต์ง ๋ถ๋ฅ | [ํ๋จํ์] ํ๊ทธ๋ก ์ฌ๋์๊ฒ ๋๊น |
| ์ฝ๋๋ฅผ ์ง์ ์ฝ์ | As-Is ๋ฌธ์๋ง ์ฐธ์กฐ |
| ๋ชจ๋ drift๋ฅผ "๊ณ ์น ๋ฌธ์ "๋ก ์ทจ๊ธ | ๋์ํ๋ ์ฝ๋์ drift๋ ์คํ ์
๋ฐ์ดํธ๊ฐ ๋ง์ ์ ์์ |