Methodology

/apt-scw

v24

SourceCodeWorld — TDD implementation of crystallized Contracts.

사용법

/apt-scw

Claude Code CLI 또는 연결된 에이전트에서 호출합니다.

상세 설명

/apt-scw — SourceCodeWorld: TDD Implementation

> **SCW = Contract가 실행 코드가 되는 곳.**
> 코드 = Contract의 물질화(materialization).
> KG가 정본(canonical), 코드는 구현 공간.
> 코드가 contract를 구현하지만, 코드를 의미론적 정본과 혼동하면 안 된다.

⛔ GATE CHECK (Hook 강제)

> `apt-gate-check.sh`가 자동 실행. ST Gate 미통과 시 `permissionDecision: deny`.
> `$PROJECT`는 apt-progress.md의 `## Anchor:` 에서 읽는다.
> BLOCKED 시: `/apt-st` → `/taliban` → ST Gate 통과 → `/apt-scw` 재호출.

---

TDD Strange Loop

```
1. Contract의 acceptance_criteria에서 테스트 작성 (RED)
2. 테스트가 통과하는 최소 코드 구현 (GREEN)
3. 리팩토링 (REFACTOR)
4. FulfillmentGate 7 checks
5. 통과 → Contract status = Fulfilled
```

같은 레이어의 AtomicSpan은 **완전 독립**이므로 **병렬 구현 가능**.
Contract가 인터페이스 역할 — 각 Task는 자기 Contract만 이행.

---

KG Ref 주석 — 롱기누스 필수

> "SourceCodeWorld의 코드 파일은 KG 노드 참조를 주석으로 포함해야 한다.
> 이는 코드↔KG 양방향 추적성(traceability)을 보장한다."

### 규칙

```python
# KG: TASK_OM_GPU_Modal_Hardening          ← 파일 상단: 이 파일이 구현하는 Task
# KG: CONTRACT_OM_GPUAllocateIO           ← 클래스/함수: 준수하는 Contract

class ModalGPUProvider(GPUProvider):
    def allocate(self, name, gpu_type, ...) -> GPUInstance:  # CONTRACT_OM_GPUInstance
        ...
```

1. **파일 상단**: `# KG: TASK_xxx` (이 파일이 구현하는 SemanticTask)
2. **클래스/함수 docstring**: `# KG: CONTRACT_xxx` (준수하는 Contract/DTO)
3. **주요 로직**: `# KG: ATOM_xxx` 또는 `SPAN_xxx` (관련 Span 참조)

**KG ref 없는 코드 = 롱기누스 추적 불가 = APT 위반.**

---

SemanticTask 구현 단위

| 속성 | 규칙 |
|------|------|
| estimated_lines | **≤ 500줄** (바이브코딩 최적 단위) |
| target_file | 단일 파일 |
| acceptance_criteria | 실행 가능한 테스트 |
| impact_tests | **필수** (TDAD) — 빈 값 = BLOCKING violation |

> "Task estimated_lines > 500 → Span을 더 분해해야 함"
> "Contract가 잘게 쪼개져야 Task도 잘게 나뉨"

---

SCW 실행 절차

### Step 1: Contract + Task 로드

```cypher
MATCH (sa:SemanticAnchor {name: $PROJECT})-[:HAS_ROOT]->(root)
MATCH (root)-[:DECOMPOSES_TO*1..10]->(atom:AtomicSpan)
MATCH (atom)-[:CRYSTALLIZES_TO]->(st:SemanticTwin)
MATCH (st)-[:HAS_CONTRACT]->(c:AptContract)
MATCH (st)-[:HAS_TASK]->(t:SemanticTask)
WHERE c.status = 'CRYSTALLIZED'
RETURN atom.name, c.name, c.input_type, c.output_type, c.acceptance_criteria,
       t.name, t.target_file, t.estimated_lines, t.impact_tests
ORDER BY atom.name
```

### Step 2: Task별 TDD 루프

각 Task에 대해:

```
2a. acceptance_criteria → 테스트 파일 작성 (RED)
    - 테스트가 먼저. 코드 전에 테스트.
    - impact_tests 경로에 작성

2b. 테스트 통과하는 최소 코드 구현 (GREEN)
    - target_file에 작성
    - # KG: TASK_xxx, CONTRACT_xxx 주석 포함

2c. 리팩토링 (REFACTOR)
    - 테스트 여전히 통과 확인
    - 중복 제거, 명확성 개선
```

### Step 

PH6 Feedback — Strange Loop

SCW 실행 중 발견된 문제:
- **Task FAIL** → Span 재분해 필요 → SP로 피드백
- **Contract 불충분** → ST로 피드백
- **새로운 요구** → SA 업데이트

```
SCW → SP 피드백: "이 Span의 분해가 틀렸다"
SCW → ST 피드백: "이 Contract의 타입이 부족하다"
SCW → SA 피드백: "프로젝트 범위 변경 필요"
```

> "APT의 피드백 루프(PH6)는 과학의 자기수정과 동일.
> 괴델이 증명했듯이 어떤 체계도 자기 완전성을 보장 못하므로,
> 외부 피드백(사용자, 실행 결과)을 통한 지속적 수정이 유일한 해결책."

---

What NOT To Do

| 금지 | 이유 | 대안 |
|------|------|------|
| 테스트 없이 코드 작성 | TDD 위반 | RED → GREEN → REFACTOR |
| KG ref 주석 생략 | 롱기누스 추적 불가 | # KG: TASK_xxx 필수 |
| impact_tests 비워두기 | TDAD BLOCKING violation | 테스트 경로 명시 |
| 500줄 초과 파일 | Task 단위 초과 | SP로 돌아가 추가 분해 |
| Contract 무시하고 코드 | 물질화가 아닌 임의 구현 | Contract 7대 필드 준수 |
| 코드를 정본으로 취급 | KG가 canonical | Neo4j Canonicality 원칙 |
| executor = reviewer | 자기 승인 금지 | Taliban D20 protocol |

메타데이터

name apt-scw
version 24
description >
v24 KG 정본 기반 재설계. AptClarificationNote 반영.
# KG ATOM_Skill_apt_scw, CONTRACT_apt_scw

같은 카테고리