문제: 원칙은 있는데, 구조가 없었다
커밋 하나로 4개 파일, 329줄. 빌드 로그로 보면 하찮은 숫자다. 하지만 이 커밋은 Drewgent의 의사결정 인프라를 바꿨다. 제조업 품질공학의 6개 패턴을 AI 에이전트 거버넌스로 동형매핑하고, 3개 층위로 enforcement를 구조화한 작업이다.
feat(harness): manufacturing-bridge 6패턴 + 3-tier enforcement. 트리거는 lazymac2x/agent-wiki의 에이전트-제조 동형사상 개념. “제조 공장 바닥에서 50년 넘게 검증된 품질 패턴을, 에이전트 시스템에 그대로 적용할 수 있지 않을까?”라는 질문에서 시작됐다.
문제: 원칙은 있는데, 구조가 없었다
Drewgent에는 이미 점진제동(graduated remediation)과 자동정지+HITL(jidoka) 같은 원칙이 system prompt에 박혀 있었다. 하지만 두 가지 문제가 있었다:
- 원칙과 enforcement 사이에 간격 — “하지 마”는 말로 써 있지만, 구조적으로 막고 있지 않음
- 패턴 간 관계가 정의되지 않음 — ponytail, tiered autonomy, manufacturing 패턴이 서로 어떤 관계인지 명시되지 않음
도요타 생산방식(TPS)이 50년간 발전시킨 품질 패턴에는 이 문제에 대한 답이 이미 있었다. Poka-yoke(포카요케), Andon(안돈), Jidoka(지도카), SPC, 3-hyun(三現), FMEA. 각각 다른 층위에서, 다른 overhead로 작동한다.
What I Built: 3-Layer Enforcement Architecture
6개 패턴을 enforcement overhead 기준으로 3개 Layer로 나눴다:
Layer 0 — Structural (항상 ON, overhead 0)
→ poka-yoke: OS/파일시스템 레벨에서 차단
→ watcher exclude, chmod 600, vault_cli.py, 禁 blind_write
Layer 1 — Principles (항상 ON, wisdom)
→ andon(점진제동): 4단계 대응, launchd ThrottleInterval
→ jidoka(자동정지+HITL): AskUserQuestion, kanban_block
→ SPC(flaky vs systematic): cron_state.json 분류
→ 3-hyun(두눈 실증): CI-green ≠ live-works, D1 직접 쿼리
Layer 2 — Process (OFF by default, 명시적 호출)
→ FMEA: RPN = severity × occurrence × detection
→ bridge-lint.sh: config-driven 태그 검증
핵심 설계 결정은 Layer 2의 기본값을 OFF로 한 것이다. 모든 프로세스를 항상 돌리면 overhead가 시스템을 삼킨다. Layer 0과 1은 항상 켜져 있고, Layer 2는 필요할 때만 — 예를 들어 공개 레포 협업이나 중요한 cron job 생성 시 — 켠다.
Slice 1: Patterns Registry — manufacturing-bridge.md
정본 파일 하나에 6개 패턴의 정의, Layer, maturity, 태그를 전부 박았다. YAML frontmatter에 patterns 레지스트리를 포함시켜서, bridge-lint.sh가 이 파일을 읽어 태그를 검증한다.
패턴마다 maturity 필드가 있다. 현재 5개는 PROVEN, FMEA만 DRAFT. maturity가 올라가면 Layer를 내리거나(overhead 감소) 자동화를 추가한다. 패턴은 설명보다 싸다 — provenance 태그 하나로 설계 근거를 추적할 수 있으면, 그걸로 충분하다.
Slice 2: bridge-lint.sh — Config-Driven Tag Validator
79줄짜리 bash 스크립트. manufacturing-bridge.md의 patterns 레지스트리를 읽어서, 변경된 .md 파일의 frontmatter에 유효한 패턴 태그가 있는지 검증한다.
$ bash scripts/bridge-lint.sh
=== bridge-lint (Layer 2) — 등록 패턴: 6 ===
변경 없음. pass.
이 스크립트는 pre-commit에 걸려 있지 않다. Layer 2는 OFF by default라서, 명시적으로 bash scripts/bridge-lint.sh를 호출해야만 돈다. DREWGENT_MODE=lab이 설정되어 있으면 자동으로 skip한다. 이게 의도된 설계다 — Layer 2는 방해가 되어서는 안 된다.
Slice 3: Poka-yoke — The Star Pattern
6개 패턴 중에서 단연 poka-yoke(구조적 불가능)이 가장 강력하다. 이유는 단순하다: “하지 마”라고 말하는 것과, 구조적으로 못 하게 막는 것은 완전히 다른 enforcement 레벨이다.
Drewgent의 poka-yoke 적용 목록:
- watcher exclude: vault.key, secrets_vault.json은 opencode가 아예 읽을 수 없음
- chmod 600: DB/Admin credential 파일은 권한으로 접근 차단
- knowledge.db isolation: MCP로는 접근 불가, CLI-only
- vault_cli.py 의무화: API 키를 평문으로 저장할 방법 자체를 없앰
- 禁 blind_write: tool 설계상, 파일을 읽지 않으면 쓸 수 없음
- launchd KeepAlive 패턴:
SuccessfulExit: false고정으로 재시작 조건을 구조적으로 고정
ponytail은 poka-yoke의 코드 레벨 인스턴스다. ponytail의 6단계 체크리스트는 “불필요한 코드가 애초에 생성되지 않게” 구조적으로 막는다. 이 관계를 manufacturing-bridge.md에 명시적으로 링크했다. 중복이 아니라, 같은 패턴의 다른 레이어 적용이다.
Why Manufacturing Patterns?
에이전트 시스템과 제조 공장은 isomorphic하다:
- 에이전트 = 생산 라인 작업자
- 툴 호출 = 공정 단계
- 오류 = 불량 부품
- 시스템 프롬프트 = 작업 표준
- 로그 = 품질 기록
도요타가 50년간 발전시킨 품질 패턴은 에이전트 시스템이 지금 겪고 있는 문제를 이미 해결했다: 어떻게 하면 인간의 감독 없이도 시스템이 품질을 유지할 수 있는가.
spc(flaky vs systematic 분류)가 대표적이다. cron job이 한 번 실패했다고 alarm을 울리면, 결국 아무도 alarm을 신경 쓰지 않게 된다. 도요타는 “단발 vs 반복”을 구분하는 통계적 공정 관리를 1960년대부터 쓰고 있었다. 60년 늦었지만, 같은 패턴을 적용했다.
Key Design Decisions
| 결정 | 선택 | 버린 것 | 이유 |
| Layer 구조 | 3-tier (0/1/2) | 단일 규칙 목록 | overhead 계층화. 급할 때는 Layer 2 침묵 |
| 기본값 | Layer 2 OFF | 모든 규칙 활성화 | FMEA는 필요할 때만. 항상 켜면 시스템 마비 |
| 레지스트리 포맷 | YAML frontmatter | 별도 DB/JSON | 정본 파일 하나로 registry + 설명 통합 |
| 태그 검증 | bash (79줄) | Python/Node.js | 의존성 제로. launchd + macOS native |
| ponytail 관계 | 명시적 링크 | 별도 유지 | “중복이 아니라 적용 레이어 차이”라고 정의 |
이 결정들은 manufacturing-bridge.md의 frontmatter에 provenance로 기록되어 있다. session: "2026-07-11 quality pattern refactoring" — 언제, 왜 이렇게 결정했는지가 태그 하나로 추적된다.
결과
이 커밋 이후 Drewgent의 모든 quality 논의는 이 6개 패턴을 축으로 돌아간다. 새 cron job을 만들 때는 “FMEA가 필요할까? 아니면 그냥 Layer 0/1로 충분한가?”를 먼저 묻는다. 새 규칙을 추가할 때는 “이건 poka-yoke(구조적)여야 할까, andon(점진적)이면 될까?”를 묻는다.
패턴은 설명보다 싸다. provenance 태그 하나로 설계 근거를 추적할 수 있으면, 긴 문서가 필요 없다. 그리고 패턴이 시스템에 박히면, 매번 같은 논의를 반복하지 않아도 된다.
329줄. 4개 파일. 패턴 6개. Layer 3개. 완벽한 건물이 아니라, 앞으로 모든 결정을 구조적으로 더 좋게 만드는 뼈대를 심은 커밋이다.
Inspired by lazymac2x/agent-wiki — manufacturing↔agent isomorphism.