Claude Code가 작업에 맞는 harness를 런타임에 스스로 작성한다. 이 업데이트가 제시한 6 오케스트레이션 패턴과 3 실패모드는 새로운 게 아니라 — 내 user-scope harness가 이미 hook·rule·skill로 결정화해 둔 것이다. dynamic workflow는 이를 ultracode opt-in 시 런타임 JS 오케스트레이션으로 격상한다.
출처 — claude.com/blog · A harness for every task · Thariq Shihipar, Sid Bidasaria
새 도구를 도입하지 않는다. /init-project §12와 /team Phase 3는 이미 Workflow opt-in 연결점을 갖고 있다. ultracode opt-in 게이트가 켜질 때에만 이 두 지점이 dynamic workflow의 6 패턴으로 펼쳐진다.
기존 harness는 코딩에 최적화된 단 하나였다. 정적 워크플로우(claude -p · Agent SDK)는 모든 엣지케이스를 수용하느라 generic하다. Opus 4.8 + dynamic workflows는 use-case 전용 harness를 즉석에서 JS로 작성한다 — subagent를 spawn/coordinate하고, 모델 선택·worktree 격리·체크포인트 resume까지 스스로 결정한다.
"모든 케이스를 수용하는 범용 harness"
"작업 전용 harness를 런타임에 자가 작성"
블로그가 명명한 6개 패턴은 내가 이미 정적으로 결정화한 것이다. 각 카드의 초록 칩이 내 harness의 기존 구현이다 — dynamic workflow는 이를 런타임 JS로 재조립할 뿐.
분류 에이전트가 작업 유형을 결정한 뒤, 유형별로 다른 에이전트/동작으로 라우팅.
작업을 잘게 쪼개 각 단계에 에이전트를 병렬 실행 → barrier에서 구조화 결과를 하나로 머지.
spawn된 각 결과를 별도 에이전트가 rubric/기준으로 적대적으로 반박 검증.
N개 아이디어 생성 → rubric/검증으로 필터, 중복 제거 → 최고 품질·검증된 것만 반환.
N개 에이전트가 서로 다른 접근으로 같은 작업에 경쟁 → pairwise 판정으로 승자 도출.
작업량이 불명일 때 고정 패스가 아니라 stop 조건(새 발견 없음/에러 0)까지 반복 spawn.
dynamic workflow가 막으려는 3가지 실패모드는, 내 harness가 항상 켜진 정적 방어(hook/rule)로 이미 차단하던 것이다. ultracode가 켜지면 동적 방어(spawn된 verifier/loop)가 추가되어 — 두 층에서 동시에 막는다.
복잡한 멀티파트 작업을 부분 완료(50 중 35)한 뒤 "완료" 선언.
자기 결과/판정을 선호 — 특히 자기 출력을 rubric으로 자가 검증할 때.
compaction 이후 원래 목표와 "don't do X" 제약이 점진적으로 손실.
정적 floor가 전부 user-scope 상시는 아니다. bias·laziness 핵심 방어(adversarial-review · premature-completion)는 user-scope hook이라 모든 프로젝트에서 항상 ON. 반면 acceptance · goal-drift(task-quality-gate · hard-process-contract)는 project-scope — /init-project를 돌린 프로젝트에만 설치된다(전역 자동 설치는 의도적 미배선). 미-init 프로젝트는 user-scope 방어만 받는다.
그리고 block-강제는 아키텍처상 PreToolUse[Workflow] 한 곳뿐이다 — 도구 실행 후(PostToolUse·Stop)엔 차단이 불가능하고, Workflow는 async dispatch라 그 뒤로는 측정만 가능하다. 그래서 비용 게이트가 단일 지점인 것이 맞다.
분석에서 멈추지 않고 harness에 적용했다. canonical 패턴 카탈로그 rule 1개를 추가하고, 이미 Workflow를 언급하던 두 스킬에 cross-reference를 연결했다 — additive·reversible.
핵심은 "언제 안 쓸지"다. dynamic workflow는 토큰을 더 쓴다 — 고가치·복잡 작업 전용이다. 그래서 무조건 Workflow도, ultracode일 때만도 아니다: /init-project·/team이 "이 작업이 workflow로 갈 만한가"를 판단(classify-and-act)해서 그럴 때만 Workflow로 진행한다(ultracode · "workflow" 요청 · 대규모 migration/refactor · N-rule 검증 등). 그 외 일반 작업은 기본값 Agent 병렬. 이 판단은 SOFT지만 — escalate 시 workflow-cost-gate.sh(HARD)가 패턴 선언을 강제하는 backstop이다.
"For regular coding tasks, ask: does it really need more compute? Most traditional coding tasks do not need a panel of 5 reviewers."
이 경제성 원칙은 prose가 아니라 HARD hook으로 강제된다 — workflow-cost-gate.sh(PreToolUse[Workflow])가 script에 6 패턴 중 하나가 선언되지 않으면 exit 2로 차단하고, 모든 호출을 .claude/logs/workflow.jsonl에 측정한다. "패턴을 못 대면 Workflow 대신 Agent 병렬" = compute 낭비를 구조적 마찰로 차단. (우회: WORKFLOW_COST_GATE=0)
가장 깊은 변화: 실행이 markdown prose가 아니라 결정론적 JS 제어흐름이라서 — workflow 코드 자체가 작업 라이프사이클을 강제한다. md는 "하라"고 요청만 하지만, JS 루프는 "안 하면 못 끝낸다"로 강제한다. ~/.claude/workflows/team-deliver.js가 args.tasks=[{id,spec,acceptance}]를 받아 5단계를 코드로 닫는다.
log(declared N tasks: ...) — 처리할 항목을 먼저 명시한다. 빠뜨리면 추적에 드러남.
각 task를 worktree 격리 agent로 빠짐없이 순회 구현 — pipeline이 항목을 건너뛸 수 없음.
각 결과를 adversarial verify — acceptance 기준 반박, 숨김/no-op으로 통과 금지.
VERIFY_SCHEMA가 {done, evidence, criterion}을 강제 — evidence 비면 미완료 처리.
done && evidence 아닌 항목은 incomplete[]로 노출, all_done은 전부 충족 시에만 true.
반환 records[{id, done, evidence, criterion}]의 evidence를 .qa-evidence.json의 acceptance_verified[]로 매핑 → project-scope task-quality-gate.sh(HARD acceptance 게이트)가 그 evidence를 검증한다. 동적 workflow(ceiling)가 evidence를 생산하고, 정적 HARD 게이트(floor)가 받는 폐루프. prose 규칙(completion-verification · acceptance-criteria)이 "하라"고 요청만 하던 걸, 이제 JS 루프 + HARD 게이트가 "evidence 없으면 못 끝낸다"로 강제한다.
Workflow 작성 시 6개 canonical 패턴명(classify-and-act 등)으로 즉시 매핑. 매번 오케스트레이션을 재발명하지 않아 탐색 토큰 절감.
3 실패모드를 정적 hook(항상 ON) + 동적 workflow(opt-in)의 양층에서 차단. ultracode가 꺼져 있어도 laziness·bias·drift 방어는 그대로 유지된다.
/init-project→/team의 goal-edge handoff가 dynamic workflow resume에서도 goal-drift 방어로 작동. 체크포인트 = 파일 상태이므로 compaction 후에도 복원.
"does it really need more compute?"를 prose가 아닌 exit 2로 강제. workflow-cost-gate.sh가 패턴 미선언 Workflow를 차단 — 일반 코딩은 Agent 병렬, 고가치만 Workflow.
모든 Workflow 호출이 .claude/logs/workflow.jsonl에 자동 기록 — 사용 패턴·source. 정량 추적 + soft→hard 승격 메트릭 공급.