Harness = Complex → Simple 변환 — 메타 인사이트
"harness는 complex를 어떻게 simple로 변환할 거냐" — 사용자의 종합 명제. 모든 조사 자료(이 프로젝트 14 노트 + stateless-llm-sdk 14 노트)를 한 명제로 압축하면 이 한 줄이 남는다. 이 노트는 synthesis-for-v1 위에 얹는 왜 그 결정인지의 layer.
한 줄
Harness는 복잡도를 흡수해서 사용자에게 simple을 주는 변환기다. 모든 harness 시도는 어떤 complex를 어떤 simple로 바꿀지의 결정. simple은 공짜가 아니라 strategic 사고의 산출물 (Matt thesis).
추상적 작동 구조
핵심: 복잡도는 사라지지 않는다. 어디로든 간다 (열역학 비유). harness가 흡수하면 사용자에게 simple, harness가 노출하면 사용자에게 complex.
Complex → Simple 변환의 5 mechanism
이 프로젝트의 모든 fundamentals + frontier 노트를 변환 mechanism 단위로 추출:
| Mechanism | 무엇을 흡수 | 사용자에게 simple | 출처 노트 |
|---|---|---|---|
| 1. Layer 분리 | 책임 혼재 | 한 layer에 한 관심 | protocol-theory-lamport-tanenbaum · evolution-function-calling-to-mcp |
| 2. Spec/Contract | vague input | immutable contract 한 번 작성 | evolution-mcp-to-skills · ouroboros-meta-layer-deep-dive |
| 3. Lazy Loading | context 폭발 | 필요할 때만 보임 | frontier-tool-gateway-and-compression |
| 4. Math Gate | "준비됐나?" 주관성 | 수치로 자동 결정 | ouroboros-meta-layer-deep-dive |
| 5. Event Log = Truth | reproducibility 부담 | replay·rollback 자유 | research-to-production-gap (12% pattern) |
→ 이 5가지가 카테고리 fundamentals의 작동 mechanism. 각 시도들은 5 중 어느 것을 어떻게 채택하는지로 차별화.
Complex 별 Simple 변환 매트릭스
조사한 모든 reference·frontier·fundamentals를 복잡도 → simple 변환 cell로 정리:
| Complex (사용자가 안 보고 싶은 것) | Simple (사용자가 보는 것) | Mechanism |
|---|---|---|
| vague human input | Socratic interview → spec | Spec/Contract + Math Gate |
| LLM의 stochastic output | math gate (verification) | Math Gate |
| agent 의도 파악 | EventStore (replay) | Event Log |
| tool 발견·등록 | MCP protocol (list_tools) | Layer 분리 |
| context 폭발 | lazy loading + summarization | Lazy Loading |
| multi-agent coordination | single agent + isolation | Layer 분리 |
| reproducibility | event sourcing + checkpoint | Event Log |
| vendor 차이 | runtime abstraction | Layer 분리 |
| irreversible failure | ship-and-roll-back as normal | Event Log |
| 새 tool 추가 | config 한 줄 (MCP) | Layer 분리 + Spec |
| skill 공유 | SKILL.md frontmatter | Spec/Contract |
| 다른 학내로 복제 | 공유 layer + segment specific layer | Layer 분리 |
약점 / 함정 — Simple을 안 만드는 anti-pattern
복잡도를 사용자에게 노출하는 패턴들:
Anti-pattern 1: vibe coding (사용자 input 안 잡음)
- Karpathy의 원래 vibe coding: "forget that the code even exists"
- 사용자 vague input을 그대로 LLM에 던짐 → 1차 ok → 2차 worse → 3차 garbage
- Mechanism 1·2·4 missing
- → Karpathy 본인이 retire. 산업 컨센서스 reverse.
Anti-pattern 2: shallow module 양산
- AI agent의 자연 경향: 작은 파일 100개
- 사용자가 모든 layer 들여다봐야 사용 가능
- Ousterhout의 deep module 정반대
- → Matt 강연 핵심 비판.
/improve-codebase-architectureskill로 대응
Anti-pattern 3: product silo
- VS Code ext는 VS Code만, Cursor rule은 Cursor만
- 사용자가 각 product마다 학습
- Mechanism 1 (Layer 분리) missing — protocol 표준 부재
- → MCP 운동의 출발점
Anti-pattern 4: monolithic AGENTS.md
- 한 파일에 모든 agent 정의
- 시간이 지나면 navigate 불가
- → modular skills/contexts로 분리
Anti-pattern 5: 모든 tool이 같은 비용
- Goose의 약점 — context rot 직격
- Mechanism 3 (Lazy Loading) missing
- → Anthropic Skills 차등 비용 모델
Anti-pattern 6: 모든 결정을 사람이 verify
- "Looks good"이 verification
- Mechanism 4 (Math Gate) missing
- → Ouroboros Ambiguity score, automated eval
Anti-pattern 7: model context = session
- history dump 그대로 LLM에 전달
- context rot 직격
- Mechanism 5 (Event Log = Truth) missing
- → OpenAI Apr 2026 명시 비판
대안 흐름 — 산업이 simple을 만드는 방법
각 mechanism이 서로 강화. Goose는 1+3, Claude Code는 1+2+3, Ouroboros는 1+2+3+4+5 (전부).
→ 완성도는 5 mechanism 중 몇 개를 어떻게 결합하는가. Ouroboros가 5 모두 채택한 가장 완성된 사례.
인사이트 — 10가지
1. Simple의 방향이 명확
모든 harness 시도가 같은 5 mechanism을 향해 수렴. 우연이 아닌 fundamentals의 자연 압력. Lamport·Tanenbaum의 distributed system fundamentals + Hickey의 Simple Made Easy + Ousterhout deep module이 root.
2. Hickey의 Simple ≠ Easy
사용자가 가리키는 simple = entanglement 없음 (Hickey). easy = 친숙함. 2024-2025 vibe coding은 easy가 simple을 이긴 시기. 2026 fundamentals 회귀 흐름은 simple이 다시 우세.
3. Deep module = simple interface
Ousterhout 명제. AI 시대 결정적 — AI가 shallow module 양산하는 경향 → 사람의 strategic 사고가 simple interface 강제. Matt thesis와 직결.
4. Simple은 strategic 사고의 산출물
공짜가 아님. 사용자가 simple하게 사용할 수 있게 하려면 시스템 design이 strategic이어야. → Matt thesis: 사람=strategic, AI=tactical. simple은 strategic layer의 결과물.
5. 복잡도는 사라지지 않는다
열역학 비유. 어디로든 간다:
- harness가 흡수 → 사용자 simple
- harness가 노출 → 사용자 complex (anti-pattern)
- 일부는 영원히 사라지지 않음 — fundamentals layer
→ harness 설계는 복잡도 흡수의 선택. 어떤 복잡도를 흡수할지가 design.
6. Simple의 layer 의존성
한 layer가 simple하려면 위/아래 layer가 받쳐줘야:
- Tool 호출이 simple → MCP protocol layer가 받쳐줘야
- Agent loop가 simple → spec layer가 받쳐줘야
- Spec이 simple → ambiguity gate가 받쳐줘야
→ Simple은 layer stack 전체의 협력 결과. 한 layer만 simple하게는 불가.
7. Anti-pattern은 simple을 만들지 못하는 패턴
7 anti-pattern 모두 5 mechanism 중 하나라도 missing. mechanism 결합이 simple 완성도. 이게 ouroboros-meta-layer-deep-dive의 6.5/7 cover와 정렬.
8. Simple의 정의는 segment 마다 다름
| Segment | Simple의 의미 |
|---|---|
| 비개발자 학생 | config 한 줄, zero-coding |
| 개발자 학생 | layer 명확, customizable |
| 학내 marketplace | 표준 protocol, cross-product |
| 다른 학내 복제 | 공유 layer 분리 |
| v1.0 사용자 | 학내 vocabulary + 학내 endpoint zero-config |
→ 어느 simple을 우선시할지가 v1.0 결정의 input. ⚠️ 사용자 결정 자리 (paradigm-comparison).
9. Math Gate는 simple의 invisible 형태
Math Gate(Ambiguity 0.2, Convergence 0.95)는 background에서 작동하면 simple, user-facing이면 complex. Ouroboros가 user-facing — 비개발자 segment에서는 invisible 변형 필요. Ousterhout information hiding의 직접 적용.
10. Simple의 진짜 시험 = ship-and-roll-back
12% production 도달 cohort의 공통 패턴 4 (named ownership · scoped success · automated eval · ship-and-roll-back). 이 중 ship-and-roll-back이 simple의 가장 깊은 신호:
- ship이 공포 → simple 미달성
- ship이 normal operation → simple 달성
- → Mechanism 5 (Event Log = Truth)가 결정적
학내 segment에서 simple 우선순위 — ⚠️ 가설
⚠️ 모두 AI 추정. 사용자 검토 필요.
학내 segment에서 어떤 simple이 1순위인지 가설:
1순위 (사실상 필수): config 한 줄로 시작 (zero-config)
→ Mechanism 1 (Layer 분리) + Anthropic Skills 패턴
2순위: 학내 vocabulary 그대로 사용 (학번·과목 코드 변환 X)
→ Mechanism 2 (Spec/Contract: ubiquitous language)
3순위: token quota 안에서 충분 (학내 1000 req/day)
→ Mechanism 3 (Lazy Loading)
4순위: ship-and-roll-back 부담 없음 (실수 회복 자유)
→ Mechanism 5 (Event Log = Truth)
5순위 (선택): math gate (background로만, user-facing X)
→ Mechanism 4 (Math Gate)의 invisible 변형
→ 가설: 1·2·3·5순위가 결정적, 4는 production-grade 작업 비율에 따라 결정. 학내 학생 작업의 production 비율 데이터가 부재.
v1.0 결정에 영향 — 사용자 결정 자리
이 메타 명제가 paradigm-comparison·synthesis-for-v1·trade-off-five-options에 input:
| 결정 | Complex → Simple lens의 input |
|---|---|
| 가정 4 (Tool/MCP) | 어떤 tool 발견의 simple을 원하는가 → MCP protocol or 자체 |
| 가정 5 (차등 비용) | context 폭발의 simple → lazy loading 채택 여부 |
| 가정 11 (학내 1순위) | 학내 사용자의 simple 우선순위 5가지 |
| 가정 13 (standalone vs meta-layer) | 어떤 복잡도를 흡수할지의 layer 위치 |
| Math Gate 채택 여부 | 사용자에게 visible? invisible? |
→ 결정은 사용자가. 이 노트는 왜 그 결정인지의 fundamentals 근거.
종합 — 왜 이 명제가 모든 분석을 통합하는가
이게 모든 조사가 수렴하는 자리. 28+ 노트를 한 명제 + 5 mechanism + 10 인사이트로 압축한 이유.
관련
-
- ouroboros-meta-layer-deep-dive — 7 fundamentals (mechanism의 카테고리 시각)
- trade-off-five-options — 5 옵션의 simple/complex 측정
- segment-application-non-developer-majority — segment별 simple 정의
- synthesis-for-v1 — Q1~Q7 결정 path (이 메타 명제가 input)
- worse-is-better — simple이 이긴다는 명제
- postels-law-and-robustness — 단순한 spec + 관대한 receiver
- protocol-theory-lamport-tanenbaum — layer가 simple 형성
- research/stateless-llm-sdk/software-fundamentals-thesis — Matt thesis
- research/stateless-llm-sdk/research-to-production-gap — 12% pattern
- research/stateless-llm-sdk/design-principles — 7 원칙 (deep module 등)
- research/stateless-llm-sdk/paradigm-comparison — 사용자 결정 자리
Sources
- Rich Hickey — Simple Made Easy (InfoQ, 2011)
- A Philosophy of Software Design — John Ousterhout (2018)
- Distributed Systems — Tanenbaum
- Matt Pocock — Software Fundamentals Matter More Than Ever
- Anthropic — Effective Harnesses for Long-Running Agents
- Q00/ouroboros architecture
- Stanford AI Index 2026 — 88% Never Reach Production