신규 모델이 출시되면 그 모델이 직접 스킬·에이전트·절차서의 낡은 가정을 걷어내는 스킬, model-release-upgrade 의 첫 실행 결산이다. 3개월 사용 실적으로 고른 40개 항목을 fresh 워커가 편집했고, 결정론 재측정과 적대 반박으로 검증했다.
기준선 커밋 2873b3f45(05:29) 에서 결산 커밋 f032fbc3b(07:00) 까지 91분. 리드 세션은 Fable 5.1 이고, 항목마다 같은 모델의 fresh 워커를 띄워 편집시킨 뒤 리드가 커밋했다.
2026-06-02 ~ 09-02 세션 트랜스크립트를 분류해 스킬·에이전트 사용 실적을 셌다. 직접 쓰는 것, 그것이 스폰하는 것, 그 에이전트가 읽는 절차서까지 세 층을 한 패스에 넣었다.
대화형 핵심(team · work-recheck · init-project · autoresearch), 무인 자동 루프(self-improve · loopy-era · cc-sync · auto-issue), 산출물 직결(hugh-viz · product-marketing · threads-post · higgsfield · product-planning · plan-design · harness-evolve). 무인 루프는 결함이 복리로 쌓인다.
planner · executor · QA 5종(qa-scenario-writer · qa-functional-runner · web-qa-tester · webapp-test-runner · qa-orchestrator) · bug-fixer · code-reviewer · harsh-critic · exhaustive-auditor · self-improve-analyst · trend-harvester · 기획 체인 8종. 새 모델을 상속(inherit)하는 핀은 0 이었다.
self-improve · loopy-era-trend-harvester · exhaustive-audit · harsh-critic · qa-functional · qa-scenario-gen · webapp-testing 의 PROCEDURE. 스폰 로그에는 안 보이지만 워커가 매 회 읽는다. 짝 에이전트 항목에 병합해 편집했다.
스폰 0 에이전트 41종은 개선이 아니라 은퇴 대상으로 분리했다(다음 섹션). 내장 명령·내장 에이전트(general-purpose · Explore · Plan)는 편집 불가, 측정기 3종(conformance · autonomy · integrity)은 대상이 아니라 패스의 계기, 프로젝트 스코프 에이전트는 user-scope 하네스 밖.
스폰 0 에이전트 41종을 비파괴로 옮겼다. 문제는 삭제가 아니라 전파였다. 동기화가 additive 라 정본에서 지운 파일이 미러에 남았다가 다음 apply 에서 부활하고, 다른 머신에서는 애초에 지워지지 않았다. 선언 정본(manifest)을 두고 양방향 스크립트가 그것을 읽게 했다.
P1 에서 고정한 결정론 지표를 P5 에서 같은 스크립트로 다시 쟀다. 판정은 스크립트의 exit code 다. regressed 면 항목 커밋을 되돌리고, stable 일 때만 P6 로 간다.
| 지표 | 기준선 · 2873b3f45 | 종료 · 6546b08bc | 델타 |
|---|---|---|---|
| probe pass / fail | 6 / 3 | 6 / 3 | 불변 |
| replay_rate | 98.6 | 98.6 | 0.0 |
| rules 개수 / 바이트 | 104 / 333,801 | 104 / 337,606 | +3,805 B — 같은 시간 trend-harvester cron 이 append, 패스 밖 |
| 대상 파일 총 바이트 | 907,886 | 941,457 | +33,571 B — 산문 −47,922 · 스크립트 +81,493 (다음 섹션) |
| 잔존 FAIL probe | replay-corpus-100 · hook-self-test · conformance-zero-gap | 동일 3건 | 기준선부터 |
| 측정 갭 | conformance(interactive scope) · autonomy-eval · akm-eval 미실행 | 정직 고지 | |
replay 69 → 67. ① 워커가 qa-functional PROCEDURE 에 넣은 close --all 리터럴을 skill-security-scan 이 금지 명령으로 오탐 → 관례 표기 close [ALL] 로 수정(f98f87ea1) ② push-gate 매처 픽스처는 기준선부터 FAIL 이라 패스 밖. ①을 고치자 2·3차가 기준선과 같은 98.6 을 냈다.
총 바이트는 늘었다. 그러나 늘어난 곳은 판단을 스크립트로 이식한 항목이고, 줄어든 곳은 반복 서술·승격 서사·모델 리터럴을 걷어낸 절차서다.
새 모델이 절차서를 읽으며 "이건 사람이 판단하라고 써 둔 문장인데 스크립트가 판정할 수 있다"고 본 곳을 이식했다. 새 표면은 최소로 — 이미 있는 강제자(hook·verify 스크립트)를 가리키는 포인터로 대체한 경우가 더 많다.
"압축이 지우고, 모델이 건너뛰는 문장"
"되돌리면 FAIL 하는지 픽스처로 확인한 것만"
exit(0 if n<p …) direction 인지 + 줄 수 tie-breakperl -e 'alarm shift; exec @ARGV' rc 142 실측ERR==0 ∧ OVER==false ∧ [ -s check.png ]check-context-doc.sh → exit 0/2agent-model-1m-gate.sh 포인터 1개(신규 표면 0)| 신규 스크립트 | 스킬 | 판정 대상 | exit |
|---|---|---|---|
scripts/check-page.py | hugh-viz | 섹션당 시각화 · SVG 규격(var/font-size/rx/marker) · 태그 균형 · i18n leaf · 금지 API · THEME 정합 — 이 페이지도 이 검사기를 통과했다 | 0 / 2 |
scripts/check-context-doc.sh | product-marketing | 필수 12섹션 · 플레이스홀더 8종 잔존 · 버전↔체인지로그 정합 | 0 / 2 |
scripts/check-planning-docs.py | product-planning | Stage 1~4 완료(planning-meta · 필수 섹션 번호 · 불침투 · 고정 토큰 · 3.5 위임) + --selftest | 0 / 2 / 3 |
scripts/acceptance_contract.py | auto-issue | 착수 계약 check(출처 태그 · AC→TC · 4축 · plan AC 집합 동일성) / restore(이슈 코멘트에서 승계) — 픽스처 12케이스 | 0 / 2 / 3 |
verify/procedure-contract.sh | loopy-era-trend-harvester | PROCEDURE 구조 계약 — Phase 헤더·5축·enum·WIRE 6단계·헬퍼 14종·rule-budget-gate 배선 | 0 / 2 |
scripts/check-result.py | higgsfield-generate | 생성 결과(status · result_url · HTTP · content-type · 바이트) — step 5 완료 조건 | 0 / 2 / 3 |
scripts/check-catalog.py | higgsfield-generate | 인용 job_type 존재 · 별칭 · 드리프트 | 0 / 2 / 3 |
| 라우팅 분기 | self-improve · harness-evolve | Phase 0 / S2 에 model_release pending 술어 → Skill(model-release-upgrade) — 다음 릴리즈부터 감지가 이 스킬을 부른다 | 배선 |
harsh-critic 에게 리드의 사유 없이 diff 와 기준만 주고 "계약이 보존됐다는 주장을 반박하라"고 했다. 반박이 없었다면 "계약 보존"이 거짓으로 착지할 뻔한 결함 둘이 나왔다.
④ SubagentStop 절차서 게이트(promoted-agent-skill-read-gate)가 08-07 등록부 사고로 사라진 상태에서, 워커 3파일은 "미등록 → SOFT" 로 강등하고 4파일은 HARD 로 남겨 같은 계약이 두 값이 됐다. ① 1M 게이트의 fable 예외 근거를 harness-evolve 서술이 부정하고 디스크 증거가 없었다. → SubagentStop 재등록(59→60 훅) · 3파일 HARD 정렬 · 증거 파일 착지(fable 스폰 24기 중 22기 200K 초과, 최대 507K).
④ trend-harvester · self-improve-analyst 의 "미등록(SOFT)" 4줄이 R1 수리 범위 밖에 남았다. ① 은 증거 JSON 을 독립 재계산해 3/3 일치로 해소. → 2파일 정렬, 계약을 "HARD + 등록 확인 명령(grep -c promoted-agent-skill-read-gate ~/.claude/settings.json ≥ 1)" 단일값으로.
에이전트 전체에서 미등록/SOFT 잔존 0, 등록 grep promoted=1 · 1m=1. 적대 재스폰은 하지 않았다 — 판정 근거가 결정론 술어로 환원됐기 때문이지만, 3라운드가 LLM 반박이 아니라는 점은 기록으로 남긴다.
| 패스가 드러낸 하네스 결함 | 증상 | 수리 | 커밋 |
|---|---|---|---|
agent-model-1m-gate 가 fable 별칭 차단 | harness-evolve 가 model:"fable" 스폰을 지시하는데 게이트가 200K 별칭으로 취급 — 이 패스의 워커 스폰 자체가 불가 | 별칭 예외 + 실측 증거 파일(24기 컨텍스트 분포) | 00f254b41 |
| agent-model-1m-gate PreToolUse 미등록 | 08-08 자동 동기화 커밋에서 등록 소실 — 08-07 이후 발화 0(워커 2기 독립 보고) | Agent|Task 매처로 재등록(hook-run.sh 래퍼 경유) | 721ccb899 |
| promoted-agent-skill-read-gate SubagentStop 미등록 | 같은 08-07 사고 — 절차서 미독 워커가 통과 | 재등록 59→60 훅 + 의존 에이전트 5파일 HARD 정렬 | 6546b08bc · f39e9ce97 |
auto-adversarial-review --files 가 미추적 파일 diff 불가 | Codex 마커 INCOMPLETE → work-recheck attestation 이 self_review 로 거부(90일 최대 실패 클래스의 한 원인) | git diff --no-index -- /dev/null 추가 → FINDINGS 실측 | 00f254b41 |
| 워커 유발: qa-functional PROCEDURE CRITICAL | env 파일을 심링크·소유 무검사로 source · SKIP 만으로 PASS · dev.log 임의 URL | QA_TMP 소유 가드 · -f ∧ !-L ∧ -O · localhost 정규식 · PASS≥1 · scope=full EXEC==PLAN(픽스처 5) | 762173b8d |
| 워커 유발: skill-security-scan 오탐 | 절차서의 close --all 리터럴이 금지 명령 매치 → replay 69→67 | 관례 표기 close [ALL] | f98f87ea1 |
항목마다 워커가 편집 전에 "무엇이 줄고 무엇이 남는가"를 원장에 고정했다. 사후 합리화가 불가능한 구조라 refuted 가 10건 나왔고, 그것이 이 원장의 존재 의의다.
수리하지 않은 것은 못 본 것이 아니라 이 패스의 범위 밖이라 판정한 것이다. 각 항목은 다음 패스 또는 별도 결정의 입력으로 남는다.
| 잔여 | 내용 | 분류 |
|---|---|---|
| Codex HIGH 3 | qa-functional PROCEDURE — 호출자 제공 BASE_URL 미제한(SSRF 경계는 dev.log 자동 추출만 로컬 제한) · procedure-contract.sh 헤더 첫 등장만 검사(substring) · Phase 4 가 PASS≥1 만 요구(비-full 스코프에서 필수 시나리오 SKIP 가능) | 후속 항목 |
| push-gate replay 픽스처 | push-gate-matcher-prefix-bypass 가 기준선부터 FAIL — 범용 마커를 제거해도 rc=0, 게이트 매처 결함 의심 | 기존 결함 |
$HOME git 저장소 | .claude/ 154파일을 추적 중 — 은퇴 에이전트 삭제가 D 로 표시되는 세 번째 미러 표면. apply/sync 계약 밖 | 구조 |
| 자동 동기화 선착지 | 06:31 cc-sync 자동 동기화가 워커 편집 중 QA 에이전트 3파일을 먼저 커밋(3ae091b40, prereg id 없음) — 규율 위반이 아니라 타이밍. 다음 패스는 sync 일시 정지 | 타이밍 |
| code-reviewer frontmatter | rules: 키 소실 — 은퇴 rule 대상이라 소비자 0 | 무해 |
| 휴면 스킬 정적 참조 12곳 | 은퇴 에이전트를 스폰하는 스킬(dependency-updater · qa-cycle · team-orchestrator 등) — 재호출 시 스폰 실패. 스킬 자체 은퇴는 별도 결정 | 보류 |
| repo 전용 에이전트 12종 | 타 머신이 08-22 커밋, 3개월 스폰 0 — 생성 11일차라 은퇴 제외. manifest 에 append 만 하면 은퇴된다 | 보류 |
| 모델 핀 제안 20건(8 대상) | planner · qa-scenario-writer · critic 등 opus-4-8 → Fable 5.1 상속, 기획 체인 opus-5 → fable-5-1[1m], self-improve-analyst 핀 + machinery-lint C02 동시 갱신 — 전부 페어드 A/B 조건 명시. 카드로만, 에이전트 파일 핀 26/26 불변 | 별도 결정 |
이번 패스에서 도출한 전환 체크리스트. 감지부터 결산까지 사람이 시작 명령만 내리면 되게 만들었고, 이번에 헛디딘 곳은 단계 안에 박아 두었다.
"하네스 개선의 병목은 모델이 아니라, 새 모델이 낡은 가정을 읽어낼 수 있게 절차를 열어 두는 것이다."