커밋 하나로 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.