만들기 · L3 · 심화 트랙

빌더 워크북 심화11

Contract Forge 워크북 — 대규모 상용 서비스용 딥다이브, 11차시.

버전 v2.0 · 2026-09-26 · 출처 Contract Forge 워크북

심화 트랙 색인 (A01~A11)

코어 16차시를 마친 뒤 이어서 공부하는 심화 11차시다. 풀24 트랙은 A01~A08, 마스터27 트랙은 A01~A11 전체를 이수한다.


심화 차시 목록

차시제목심화하는 코어 차시파일
A01프로덕션 6층 계약L05 feature contract 심화lessons/A01-production-6-layers.md
A02에이전트 계약과 빠진 것 비평L07 capability matrix 심화lessons/A02-agent-contract-and-critic.md
A03배포 계약: 프리뷰·카나리·롤백L11 배포 계약 심화lessons/A03-deploy-preview-canary-rollback.md
A04관측성·SPOF·런북L13 운영 계약 심화lessons/A04-observability-spof-runbook.md
A05비용·멱등성·enforcementL13 운영 계약 심화lessons/A05-cost-idempotency-enforcement.md
A06회귀 테스트와 AI 리팩터L14 유지보수 계약 심화lessons/A06-regression-and-ai-refactor.md
A07의존성·마이그레이션·청소L14 유지보수 계약 심화lessons/A07-dependency-migration-cleanup.md
A08run ledger·replay·memory policyL15 maturity-checklist 심화lessons/A08-run-ledger-replay-memory.md
A09추상화의 복리L15 maturity-checklist 심화lessons/A09-abstraction-leverage.md
A10성숙한 제품이 남긴 10가지 교훈L16 최종 발표 심화lessons/A10-mature-product-10-lessons.md
A11전 단계 공통 — 4개의 가로지르는 축L01~L16 전 차시 공통lessons/A11-cross-cutting-axes.md

트랙별 이수 범위


워크시트

각 심화 차시에 대응하는 워크시트는 worksheets/ 폴더에 있다. 차시를 마치면 대응하는 AW 파일을 열어 빈칸을 채운다.

워크시트대응 차시
AW01A01
AW02A02
AW03A03
AW04A04
AW05A05
AW06A06
AW07A07
AW08A08
AW09A09
AW10A10
AW11A11

A01. 프로덕션 6층 계약 — 기능 뒤에 숨은 여섯 개 약속

모듈: 빌드(심화) · 2시간

1. 오늘의 질문

"기능이 '완성'됐다고 할 때, 그 뒤에 아직 안 만든 약속이 몇 층이나 남아 있는가?"

이 질문에 6가지 항목으로 답할 수 있으면 오늘 수업을 제대로 들은 것이다.


2. 오늘 배울 용어


3. 쉬운 이야기

건물을 지을 때 '1층 벽'만 올렸다고 "집 완성"이라고 말하지 않는다. 지붕도 있어야 하고, 수도관도 있어야 하고, 비상구도 있어야 한다.

소프트웨어도 똑같다. 화면이 보이고 버튼이 눌리는 것은 1층일 뿐이다. 실서비스가 되려면:

AI는 1층을 빠르게 만든다. 3~6층이 비어 있어서 실서비스에서 터지는 것이 바이브 코더의 가장 흔한 실패 패턴이다.

데이터 vs 코드 실: "화면 문구가 바뀔 수 있나? 바뀌면 코드를 건드려야 하나, 설정 파일만 바꾸면 되나?" — 이 차이가 1층 계약의 핵심이다.


4. 실제 파일에서 찾기

아래 파일들이 각 층의 살아 있는 예시다. contract-forge 레포에서 직접 열어 확인한다.

1층 예시 — 데이터/콘텐츠 검증:

4층 예시 — 운영 토폴로지:

5층 예시 — 토글·버전:

6층 예시 — 추출/confidence:


5. 따라 하기

이 차시는 실행 명령보다 계약 설계가 중심이다. 아래 단계는 기존 생성물을 읽고 6층 표를 채우는 흐름이다.

단계 1 — 생성물 확인

먼저 validation-checklist.md를 열어 1층이 이미 채워졌는지 본다.

파일 경로: examples/hackathon-ai-tutor/output/validation-checklist.md
확인할 것: "error-count == 0" 항목이 pass인지 fail인지

결과 예시:

## PRD 품질 게이트
- [x] error-count == 0   ← PASS 이면 1층 통과
- [ ] ...

흔한 오류: 파일이 없으면 node ./bin/contract-forge.mjs generate 를 먼저 실행해 생성물을 만든다.

단계 2 — capability-matrix 읽기

capability-matrix.yaml에서 각 capability의 모드를 확인한다.

파일 경로: examples/hackathon-ai-tutor/output/capability-matrix.yaml
확인할 것: mode 값이 real / local / stub / disabled 중 어느 것인지

결과 예시:

- id: CAP-01
  name: AI 튜터 세션
  mode: local          ← 지금은 local 모드(비밀키 없이 동작)
  requiresSecrets: false
  fallback: stub

흔한 오류: requiresSecrets: true인데 mode가 real이면 배포 시 비밀키 없이 터진다. local로 내리거나 stub fallback을 확인한다.

단계 3 — 6층 점검 표 손으로 채우기

아래 표를 워크시트(AW01)에 옮겨 직접 채운다. "있나" 칸에 O / X / 미확인 중 하나를 적는다.

층질문있나
1 콘텐츠/데이터 검증error-count==0 통과?
2 생애주기 상태머신상태·전이가 명시됐나?
3 실패 모드끊김/타임아웃 복구가 있나?
4 운영 토폴로지SPOF가 어디인지 아나?
5 토글·버전기능을 재배포 없이 끄고 켤 수 있나?
6 추출 방법새 사람이 추측 없이 구조를 파악할 수 있나?

흔한 오류: 모든 칸에 "O"를 적고 싶은 충동이 든다. 증거(파일·명령 출력)가 없으면 반드시 "미확인"으로 남긴다.


6. 혼자 하기

자기 프로젝트(또는 input.json을 수정한 버전)를 대상으로:

  1. validation-checklist.md를 열어 1층 통과 여부를 확인하고, error가 있으면 이유를 한 줄로 쓴다.
  2. capability-matrix.yaml에서 mode: real인 항목을 찾아 "이 항목이 stub으로 대체 가능한지" 판단한다.
  3. 2층(상태 기계)이 지금 파일에 명시돼 있는지 찾아본다. 없으면 "2층 비어 있음 — 상태: 시작·진행·종료, 전이 조건 미정"이라고 적는다.

제출: 6층 표(단계 3) + 층별 근거 파일 경로 1개씩(없으면 "없음").


7. 실패 상황

실패 1 — 2층이 비어 있는 채 배포

세션이 "시작→종료" 외에 "중단됨" 상태를 갖지 않으면, 사용자가 브라우저를 닫고 다시 들어왔을 때 세션이 살아 있는지 죽은 것인지 코드가 모른다. 결과: 중복 과금 또는 데이터 유실.

왜 위험한가: 상태 전이를 공통 코드에 하드코딩하면, 나중에 "취소됨" 상태를 추가할 때 전체 코드를 뒤져야 한다.

실패 2 — 3층 없이 외부 API 사용

외부 AI API 타임아웃이 발생했을 때 감지 코드가 없으면, 사용자는 무한 로딩을 본다. 복구 계획도 없으면 수동 재시작이 유일한 방법이 된다.

왜 위험한가: 감지는 있는데 액션이 stub인 경우("telemetry만 있고 enforcement 없음")도 3층 미완이다. 로그만 남기고 아무 조치도 없으면 터진 후에도 계속 터진다.

실패 3 — 5층 없이 버그 배포

버그가 있는 기능을 끄는 버튼이 없으면 롤백이 유일한 방법이다. 롤백도 10분 걸리면 그 10분 동안 사용자 전체가 피해를 입는다.


8. 보완할 것과 대안

6층 중 하나라도 비었을 때 보강 방법:

[실: 데이터 vs 코드 점검] — 지금 보완하려는 항목이 "실행 중에 바뀌는 값(데이터)"인가, "배포할 때 결정되는 코드"인가? 데이터라면 JSON/YAML 파일 수정으로 해결 가능하고 재배포 없이 바꿀 수 있다. 코드라면 배포 사이클이 필요하다. 이 구분이 5층(토글)의 핵심이다.


9. 실패 시 축소 전략

시간이 부족하거나 팀이 작을 때 6층 전부를 한꺼번에 만들 수 없다. 이때 핵심 약속을 살리며 줄이는 순서:


10. 오늘의 워크시트

대응 워크시트: ../worksheets/AW01-production-6-layers.md

이 워크시트에서 완성하는 것:


11. 동료 리뷰 질문

짝과 서로 점검한다.

  1. 6층 표에서 "O(있음)"으로 표시한 항목마다 근거 파일 경로가 실제로 적혀 있는가? 경로가 없으면 "미확인"으로 바꿔야 한다.
  2. 3층(실패 모드) 칸에 "감지"만 있고 "복구 액션"이 비어 있지 않은가? telemetry만 있고 enforcement가 없으면 미완이다.
  3. 실패 시 축소 전략에서 "핵심 약속 1개"가 명확히 적혀 있는가? "다 줄인다"가 아니라 "이것만은 살린다"가 있어야 한다.

12. 오늘의 단어장

용어내 말로 설명 (빈칸)
production
state machine
SPOF
blast radius
confidence label
telemetry vs enforcement

[실: false certainty 점검] — 위 표에서 내가 채운 설명 중 "이건 확실히 맞다"고 느끼는 칸을 하나 골라라. 그 설명을 뒷받침하는 파일이나 명령 출력이 있는가? 없으면 likely 또는 inferred 라벨을 붙인다.

[실: 증거 없는 완료 금지 점검] — 오늘 채운 6층 표에서 "O"로 표시한 항목이 있다면, 각각에 대해 "어느 파일의 어느 줄이 이것을 증명하는가?"를 말할 수 있는가? 말할 수 없으면 "O" → "미확인"으로 되돌린다.


13. 다음 차시 예고

다음 차시 A02 — agent contract와 completeness-critic에서는, 오늘 찾은 "비어 있는 층"을 AI 구현 에이전트에게 "여기까지만 만들어라"라고 경계를 그어 주는 계약으로 바꾼다. 오늘의 6층 점검 표가 A02의 시작 재료가 된다.

여기까지가 미리보기입니다

나머지 자료는
회원에게 열려 있습니다

무료로 가입하시면 이 자료의 전체 내용을 이어서 보실 수 있습니다.

회원가입하고 이어 보기

이미 회원이시면 로그인