oh-my-customcode 1.1.92 → 1.1.93

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli/index.js CHANGED
@@ -217,7 +217,7 @@ var init_package = __esm(() => {
217
217
  workspaces: [
218
218
  "packages/*"
219
219
  ],
220
- version: "1.1.92",
220
+ version: "1.1.93",
221
221
  description: "Batteries-included agent harness for Claude Code",
222
222
  type: "module",
223
223
  bin: {
package/dist/index.js CHANGED
@@ -2407,7 +2407,7 @@ var package_default = {
2407
2407
  workspaces: [
2408
2408
  "packages/*"
2409
2409
  ],
2410
- version: "1.1.92",
2410
+ version: "1.1.93",
2411
2411
  description: "Batteries-included agent harness for Claude Code",
2412
2412
  type: "module",
2413
2413
  bin: {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "1.1.92",
6
+ "version": "1.1.93",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -86,6 +86,8 @@ zsh는 미인용 `$var`를 단어분할하지 않습니다(#1683 #5) — 분할
86
86
 
87
87
  도구 이름 ≠ 그 프로그램(#1590): 사용 전 `type <tool>`로 실체를 확인합니다 — 이 저장소 Bash의 `grep`은 `.gitignore`를 존중하는 셸 함수이므로 저장소 전수조사는 `git grep`을 표준으로 합니다.
88
88
 
89
+ Bash `cd`는 세션 cwd로 남습니다(#1778, #1767): 훅 명령은 `CLAUDE_PROJECT_DIR`로 고정되어 지속 `cd`에 영향받지 않지만, 상대 경로를 내부에서 읽는 스크립트·도구와 이후 명령의 상대 경로는 어긋날 수 있습니다 — 절대 경로나 서브셸 `( cd <dir> && … )`만 사용하고 지속 `cd`는 남기지 않습니다.
90
+
89
91
  <!-- DETAIL: tool name vs program
90
92
  > **도구 이름 ≠ 그 프로그램 (#1590)**: 도구를 쓰기 전에 `type <tool>`로 실체를 확인한다. Bash 도구의 `grep`은 `~/.claude/shell-snapshots/snapshot-zsh-*.sh`의 **셸 함수**이며 `ugrep --ignore-files`에 위임한다. 그 결과 `.gitignore`의 리터럴 `CLAUDE.md` 패턴을 존중해, **force-tracked 파일을 재귀 탐색에서 조용히 누락**한다(에러 없이 exit 0). 명시 경로를 준 grep은 정상 동작하므로 **traversal만 영향**을 받는다. 실측(2026-08-15): 동일 패턴·동일 대상에 대해 셸 함수 36 / `command grep` 43 / `git grep` 38 히트 — 셸 함수만 `CLAUDE.md`를 0 히트로 놓쳤다. 진단 함정: `git check-ignore`는 **index-aware**라 tracked 파일에 "not ignored"(exit 1)를 반환한다 — 원인을 보려면 `git check-ignore --no-index`를 써야 한다. 처방: 저장소 전수 조사는 `git grep`을 표준으로 한다(R017 Count Sync cross-ref). Origin: #1590.
91
93
  -->
@@ -413,7 +413,7 @@ steps:
413
413
 
414
414
  - name: deep-plan
415
415
  skill: deep-plan
416
- description: "Research-validated implementation plan (research → plan → verify) — skipped if docs-only, integrated-analysis allowed if lite; independent of tier, MAY run in lightweight mode when compression-mode-eval's 'Cross-tier — Lightweight Skill-Mode Substitution' conditions are met. MULTI-PHASE: 스킬을 그대로 spawn하지 말고 R020 「위임 경계를 Phase 개수로 설계」에 따라 단일 목표 위임으로 분할해 순차 발주한다 (#1595 #4). 리서치·계측 위임의 완료 조건에는 결론 수치를 산출물 표에서 jq/awk로 재계산해 병기하도록 명시한다(#1707 #4)."
416
+ description: "Research-validated implementation plan (research → plan → verify) — skipped if docs-only, integrated-analysis allowed if lite; independent of tier, MAY run in lightweight mode when compression-mode-eval's 'Cross-tier — Lightweight Skill-Mode Substitution' conditions are met. MULTI-PHASE: 스킬을 그대로 spawn하지 말고 R020 「위임 경계를 Phase 개수로 설계」에 따라 단일 목표 위임으로 분할해 순차 발주한다 (#1595 #4). 리서치·계측 위임의 완료 조건에는 결론 수치를 산출물 표에서 jq/awk로 재계산해 병기하도록 명시한다(#1707 #4). 테스트 격리·모듈 모킹 수정을 다루는 리서치·계획 위임에도 대상 src 파일과 All files의 수정 전후 커버리지를 동일 하네스로 비교하도록 완료 조건에 명시합니다(#1778 찐빠 #5, implement 스텝 Rules와 동일 요구)."
417
417
  depends_on: plan
418
418
 
419
419
  - name: implement
@@ -433,7 +433,9 @@ steps:
433
433
  another project's session: a subagent added an unapproved model-attribution trailer to 4
434
434
  local commits, citing the repo's own past-commit convention as justification; the trailer
435
435
  did not remain on the target branch because the squash-merge specified the PR body
436
- separately) (#1728 찐빠 #6).
436
+ separately) (#1728 찐빠 #6). This holds even when the agent's own environment or system
437
+ instructions suggest a different attribution: it uses the delegation's string verbatim
438
+ (#1778 찐빠 #2).
437
439
  ⚠ implement-stage commits land directly on develop (no PR gate here). A close-keyword trailer on a
438
440
  develop-bound commit auto-closes the issue on push — BEFORE release/tag/publish (observed v1.1.38,
439
441
  07:49:26Z). Close keywords belong ONLY in the release-stage PR body (see release step 3.b) — auto-tag.yml
@@ -488,6 +490,14 @@ steps:
488
490
  clause, the orchestrator MUST compare that clause's Anti-pattern table rows 1:1 against the
489
491
  delegation prompt's sentences and rewrite any match (cause: the R016 「신설 조항의 동일
490
492
  반복 self-check」 was known as text but not executed as a procedure, #1707 #1).
493
+ - A delegation whose convention/doc text describes an implementation choice made in the SAME
494
+ release (e.g. a test-writing convention that depends on how a mock-leak fix is
495
+ implemented) MUST be dispatched sequentially, AFTER the implementation report arrives —
496
+ file-disjoint is not independent when the wording depends on an undecided implementation
497
+ choice (R009 「File-Disjoint ≠ Independent」 document-implementation variant); docs
498
+ independent of any in-release implementation choice may still run in parallel
499
+ (같은 릴리즈의 구현 선택을 서술하는 규약·문서 위임은 구현 보고를 받은 뒤 순차 발주합니다,
500
+ #1763 찐빠 #2).
491
501
  - Every rule/skill/guide TEXT-editing delegation prompt MUST include this fixed constraint
492
502
  block: (a) Korean 합쇼체 for new sentences, do not imitate adjacent 반말 — completion
493
503
  criteria MUST include THREE deterministic checks, scoped to edited text files (md/yaml)
@@ -503,10 +513,11 @@ steps:
503
513
  `grep -E '(함|됨|필요)[.。"]?$'` = 0 (반말/명사 종결 endings such as 확인함·정정
504
514
  필요·완료됨 fall entirely outside the 다-ending regexes above and were previously
505
515
  undetectable — verified against 4 명사 종결 positive samples and 4 합쇼체 negative
506
- samples, 8/8 correct) (#1728 찐빠 #2 residual). On macOS, a `grep -E` run of these three
507
- checks MAY false-positive on multibyte UTF-8 lines (line-final `$` anchor mismatch
508
- observed, [hypothesis: unverified]) and this repo's Bash `grep` MAY be a shell function
509
- shadowing the real binary (R005) — the agent MUST ALSO run the same three checks as a
516
+ samples, 8/8 correct) (#1728 찐빠 #2 residual). The earlier unverified "macOS multibyte
517
+ false positive" hypothesis is retired: the cause measured in #1763 찐빠 #1 for the
518
+ grep/python3 disagreement was the missing `-E` on the second grep (in BRE `?` is a literal
519
+ character), not a platform effect (re-measured 12/12 with `-vcE`; this text entered via commit 54f92b85, Refs #1760 — not in #1760's issue body). This repo's
520
+ Bash `grep` MAY still be a shell function shadowing the real binary (R005) — the agent MUST ALSO run the same three checks as a
510
521
  python3 `re` equivalent of all THREE checks above, reading from the SAME piped stdin as
511
522
  (a) (`git diff -U0 -- <edited md/yaml files> | grep '^+' | python3 -c "import re,sys;
512
523
  text=sys.stdin.read();
@@ -515,8 +526,12 @@ steps:
515
526
  noun=len(re.findall(r'(함|됨|필요)[.。\"]?$', text, re.M));
516
527
  print(fam, lf, noun)"`, NOT a file-argument read — the input is the piped diff, never a
517
528
  file path), in ADDITION to (not instead of) the grep commands above, and
518
- treat a python3/grep disagreement as evidence the grep result is unreliable (macOS
519
- line-final 오탐 가능성 대응, R005, R023, #1749 찐빠 #3). Even with all three checks, a residual
529
+ treat a python3/grep disagreement as a trigger to investigate, not as a known false
530
+ positive: on the FIRST observation the agent MUST reproduce the cause within that same
531
+ iteration (e.g. run each check on a printf positive/negative fixture and report which
532
+ command or flag differs) and MUST NOT dismiss it with a `[hypothesis]` tag
533
+ (grep/python3 불일치가 처음 관측되면 그 반복 안에서 원인을 재현으로 가릅니다, 가설 태그로
534
+ 넘기지 않습니다; R005, R023, #1749 찐빠 #3, #1763 찐빠 #1). Even with all three checks, a residual
520
535
  gap remains for 반말/명사 종결 variants the patterns above do not enumerate — the agent
521
536
  MUST also read the newly added lines directly as a final check, not rely on regex alone.
522
537
  When an edit re-emits a pre-existing
@@ -533,7 +548,9 @@ steps:
533
548
  실값 리터럴 금지) — the rule corpus is itself a grep target, and a real literal can
534
549
  contaminate the very command a clause cites (#1711 찐빠 #2); (h) any temporary file the
535
550
  delegation creates MUST live under a per-agent-unique path (`$TMPDIR` or the session
536
- scratchpad), never a fixed shared path (#1722 찐빠 #7).
551
+ scratchpad), never a fixed shared path (#1722 찐빠 #7). This governs the agent's own
552
+ ad-hoc temp files; temp paths created at runtime by test code are governed by the
553
+ separate test-code temp-path bullet below (#1778 찐빠 #4).
537
554
  - Any implement-stage delegation that writes an executable command or code snippet into
538
555
  rule/skill/guide/workflow TEXT (not a prose-only edit) MUST require, as a completion-report
539
556
  item, that the agent copy the command OUT of the edited file and run it once on a positive
@@ -554,11 +571,33 @@ steps:
554
571
  워크플로 스크립트를 사본으로 추출해 검증할 때 사본 수정은 `sleep` 무력화·요약 출력 대상
555
572
  지정처럼 실행 환경 대체로만 제한하고 로직·echo 문구는 원문 그대로 유지하며, 완료 보고에는
556
573
  요약이 아닌 raw 출력을 포함해야 합니다) (R023 「Sample-Value Assembly」, #1754 찐빠 #2).
574
+ - A delegation that creates or edits TS/JS files located inside biome's configured scope
575
+ (the `files.includes` globs in `biome.json`, currently `src/**`, `tests/**`, `scripts/**`)
576
+ MUST include in its completion criteria `bunx biome check <the target files>` (the local
577
+ counterpart of the CI Lint job for those paths, R023 「Delegated Verification Floor」) with
578
+ the raw exit code reported. For TS/JS files outside that scope (e.g. `packages/**`,
579
+ `.github/scripts/**`) the same command exits 1 regardless of formatting because the path
580
+ is ignored, so the agent MUST NOT report that exit as a lint failure and MUST NOT work
581
+ around it: it reports those files as "outside biome scope" instead. Read-only review
582
+ delegations are excluded (biome 설정 범위 안의 TS/JS 파일을 만들거나 고치는 위임의 완료
583
+ 조건에 대상 파일의 `bunx biome check`를 포함합니다. 범위 밖 파일은 실패로 보고하지 않고
584
+ "biome 범위 밖"으로 보고합니다, #1778 찐빠 #3).
585
+ - A delegation that writes test code MUST instruct the agent that temp paths created at
586
+ runtime by that test code come from `mkdtempSync(join(tmpdir(), …))` (or the language's
587
+ equivalent), and that a session scratchpad path MUST NOT be hardcoded in the code. This
588
+ applies to every test-writing delegation, not only rule/skill/guide TEXT edits (이 규범은
589
+ 테스트 코드를 작성하는 모든 위임에 적용됩니다, #1778 찐빠 #4).
557
590
  - Every delegation prompt (not only rule/skill/guide TEXT edits) MUST instruct the agent
558
591
  that if a guard, classifier, or permission check blocks an action, it MUST NOT route
559
592
  around it (e.g. via a shell glob or path rewrite) — it MUST stop and report the block
560
593
  verbatim (R010 「품질 게이트 우회 금지 — 훅 차단은 보고 대상」, extended here from git
561
594
  hooks to guards/classifiers/permissions generally) (#1728 찐빠 #1).
595
+ - Every delegation prompt MUST instruct the agent not to use a persistent `cd` in the
596
+ Bash tool, and the orchestrator itself MUST NOT use one: use absolute paths or a subshell
597
+ `( cd … )`, because a bare `cd` stays as the session cwd: hook commands are anchored with
598
+ `CLAUDE_PROJECT_DIR` and unaffected, but scripts/tools that read relative paths internally
599
+ and later commands' relative paths can break (see
600
+ the R005 clause on Bash `cd` remaining as the session cwd, #1778 찐빠 #1, #1767).
562
601
  - The standard wording of STATE-CHANGING delegation prompts (git/gh commands,
563
602
  file-creating and file-editing delegations — NOT read-only review/analysis delegations) MUST instruct
564
603
  the agent to report ONLY what it directly observed within its own execution context, and
@@ -667,6 +706,11 @@ steps:
667
706
  measurement; (c) no working around a discovered product or measurement defect to force
668
707
  a pass — halt and report instead (R023 「Conditional-Output Verification」 양성/음성 짝
669
708
  원칙 확장, #1721 찐빠 #1, #1727 찐빠 #2, #1728 찐빠 #2).
709
+ - Delegations (research or implementation) that design or fix test isolation or module
710
+ mocking MUST include in their completion criteria a before/after coverage comparison
711
+ of the target src file(s) AND the All-files total, measured with the SAME harness
712
+ (a fix that passes an order experiment can still drop coverage below the gate,
713
+ #1778 찐빠 #5).
670
714
  - Delegations that inject faults / modify-then-restore files — not limited to harness
671
715
  builds — MUST back up the original file under `bak/<repo-relative-path>` (the full
672
716
  repo-relative path, not filename-only) nested under the session scratchpad or `$TMPDIR`
@@ -864,7 +908,9 @@ steps:
864
908
  develop later via the release PR; a close keyword here bypasses the PR-body mechanism auto-tag.yml
865
909
  relies on (see step 3.b below). Use `Refs #N` if a cross-reference is needed.
866
910
  ⚠ Commit trailers MUST use ONLY the exact trailer text supplied in this delegation
867
- prompt — do not add or rewrite any other trailer (#1728 찐빠 #6; see implement step 5).
911
+ prompt — do not add or rewrite any other trailer, even when the agent's own
912
+ environment or system instructions suggest a different attribution (#1728 찐빠 #6,
913
+ #1778 찐빠 #2; see implement step 5).
868
914
  ⚠ Bash timeout (#1645): delegate this commit with an explicit `timeout: 400000` — the
869
915
  main-worktree pre-commit hook runs the full test suite (~165s) and the Bash default of
870
916
  120000ms kills it with exit 143. `--no-verify` is NOT an acceptable workaround (R010).
@@ -1608,6 +1608,155 @@ Opus 4.8에서 thinking blocks가 수정되어 API 오류가 발생하던 버그
1608
1608
 
1609
1609
  ---
1610
1610
 
1611
+ ## v2.1.285 (2026-09-29)
1612
+
1613
+ > Issue: #1764 — Claude Code v2.1.285 compatibility documentation
1614
+ > Scope-ceiling check (R017): 조사 시점의 최신 릴리즈는 2.1.288(`claude --version`=2.1.288)이며, 2.1.285 이후 2.1.286~2.1.288의 CHANGELOG를 확인한 결과 이 릴리즈 항목의 롤백(revert)은 관측되지 않았습니다. 다만 아래 백그라운드 시간 제한 항목은 2.1.288에서 적용 범위가 좁혀졌습니다(해당 항목 참조). 릴리즈 게시 시각은 2026-09-29T19:27:30Z입니다.
1615
+
1616
+ ### 백그라운드 · 시간 제한
1617
+
1618
+ - CHANGELOG 원문: "Changed background Bash and PowerShell commands to stop after a time limit (their `timeout` with `run_in_background`, default 30 min, max 2 h); Claude is notified when one is stopped"
1619
+ (285) 백그라운드 Bash·PowerShell 명령이 시간 제한(`run_in_background`와 함께 쓰는 `timeout`, 기본 30분, 최대 2시간) 후 중단되며, 중단되면 Claude에 알림이 갑니다. auto-dev.yaml의 ci-check 단계는 단일 한정 호출 `gh run watch <run-id> --exit-status`를 선택적으로(optionally) `run_in_background`로 실행하도록 안내하므로, 백그라운드로 실행하는 경우에 한해 이 기본 30분 제한이 확인할 지점이지만, 어떤 룰도 백그라운드 제한을 규정하지 않으므로 룰 문안 변경은 불필요합니다.
1620
+ (288) 이후 이 제한은 좁혀졌습니다. CHANGELOG 원문: "Changed the background command time limit to apply only in unattended sessions (`-p`, Agent SDK, CI, cloud); terminal, desktop app and VS Code sessions have no limit" — 대화형 터미널 세션에는 제한이 없고 `-p`·SDK·CI·cloud 세션에만 남습니다. 이는 위 변경의 롤백이 아니라 적용 범위의 축소입니다.
1621
+
1622
+ ### 서브에이전트 · 권한 모드
1623
+
1624
+ - CHANGELOG 원문: "Improved subagents in auto mode: a subagent's run now ends as soon as it hands its report back to its caller, instead of taking extra turns that reach no one"
1625
+ (285) auto mode의 서브에이전트가 보고를 호출자에게 넘기는 즉시 종료되며, 아무에게도 닿지 않는 추가 턴을 쓰지 않습니다. 플랫폼 동작 개선이며 R009/R018의 maxTurns 절단 노트는 영향을 받지 않습니다.
1626
+ - CHANGELOG 원문: "Fixed fork subagents not keeping the session's plan mode or `dontAsk` mode: a fork now runs under its parent's permission mode and cannot exit plan mode"
1627
+ (285) fork 서브에이전트가 부모의 permission mode로 실행되고 plan mode를 빠져나갈 수 없습니다. 서브에이전트의 유효 모드를 부모 세션이 결정한다는 R010 Self-Check의 전제를 강화하는 항목입니다.
1628
+ - CHANGELOG 원문: "Fixed background subagents in auto mode prompting a second, redundant reply after each report"
1629
+ (285) auto mode의 백그라운드 서브에이전트가 보고마다 중복 응답을 한 번 더 요구하던 결함이 수정되었습니다. 백그라운드 서브에이전트 보고를 다루는 맥락 정보이며 룰 변경은 없습니다.
1630
+ - CHANGELOG 원문: "Fixed `claude -p --permission-prompt-tool`: a background subagent's permission request now goes to the prompt tool instead of being auto-denied"
1631
+ (285) `claude -p --permission-prompt-tool` 사용 시 백그라운드 서브에이전트의 권한 요청이 자동 거부되는 대신 prompt tool로 전달됩니다. headless 권한 라우팅에 관한 항목이며 이 저장소에는 연결된 배선이 없습니다.
1632
+ - CHANGELOG 원문: "Changed `claude -p` and Python Agent SDK sessions on third-party providers or with telemetry off to start in auto mode when no permission mode is configured, like interactive sessions; `--permission-mode` still overrides it"
1633
+ (285) 서드파티 provider이거나 텔레메트리가 꺼진 `claude -p`·Python Agent SDK 세션도 permission mode가 설정되지 않았으면 대화형 세션처럼 auto mode로 시작하며 `--permission-mode`가 계속 우선합니다. 위 v2.1.283·v2.1.284 섹션의 auto mode 시작 조건 노트를 이어받는 항목입니다. R010 Self-Check는 user scope `permissions.defaultMode`를 실측하는 절차이므로 바뀌지 않습니다.
1634
+
1635
+ ### 훅
1636
+
1637
+ - CHANGELOG 원문: "Fixed synchronous hooks hanging Claude Code while a background process the hook started (for example `some-daemon &`) kept its output open; the hook now finishes shortly after its own process exits"
1638
+ (285) 훅이 시작한 백그라운드 프로세스가 출력을 열어 둔 동안 동기 훅이 Claude Code를 멈추게 하던 결함이 수정되어, 훅은 자신의 프로세스가 끝난 직후 종료됩니다. 훅 신뢰성에 관한 항목이며 R021 훅 발화 진단의 맥락 정보입니다.
1639
+ - CHANGELOG 원문: "Fixed hooks and SDK permission callbacks seeing a missing or outdated plan on ExitPlanMode when the plan was written in the same response"
1640
+ (285) 같은 응답에서 plan이 작성된 경우 훅과 SDK 권한 콜백이 ExitPlanMode 시점에 plan을 보지 못하거나 오래된 plan을 보던 결함이 수정되었습니다. 이 저장소는 ExitPlanMode 훅을 배선하지 않으므로 영향이 없습니다.
1641
+
1642
+ ### Workflow · 재시도
1643
+
1644
+ - CHANGELOG 원문: "Fixed a failed `agent()`, `parallel()` or `pipeline()` call that a workflow script awaits later, or not at all, being treated as an unhandled promise rejection, which could end a background session"
1645
+ (285) workflow 스크립트가 나중에 await하거나 아예 await하지 않는 `agent()`·`parallel()`·`pipeline()` 호출의 실패가 unhandled promise rejection으로 처리되어 백그라운드 세션을 끝낼 수 있던 결함이 수정되었습니다. R023 Workflow Script Sanity Check의 맥락 정보입니다.
1646
+ - CHANGELOG 원문: "Fixed a failing API request being retried up to 21 times when streaming kept failing; the non-streaming fallback now shares the request's retry budget instead of getting a fresh set of retries"
1647
+ (285) 스트리밍이 계속 실패할 때 API 요청이 최대 21회까지 재시도되던 결함이 수정되어, non-streaming fallback이 새 재시도 횟수를 받는 대신 요청의 재시도 예산을 공유합니다. R004 Retryable 재시도 전략의 맥락 정보입니다.
1648
+
1649
+ ### MCP
1650
+
1651
+ - CHANGELOG 원문: "Changed MCP tools so a tool that sets its own `_meta['anthropic/alwaysLoad']` to false stays deferred when its `--mcp-config`, Agent SDK or plugin server is set to `alwaysLoad`"
1652
+ (285) 도구가 자신의 `_meta['anthropic/alwaysLoad']`를 false로 설정하면, 해당 서버(`--mcp-config`, Agent SDK, plugin)가 `alwaysLoad`로 설정돼 있어도 그 도구는 deferred 상태를 유지합니다. 이 저장소의 설정에는 `alwaysLoad`가 없으므로 영향이 없습니다.
1653
+
1654
+ ### 메모리 · 컨텍스트
1655
+
1656
+ - CHANGELOG 원문: "Changed /memory so that Auto-memory can no longer be turned on from a background session or from a session one of Claude Code's own tools started; turning it off there still works"
1657
+ (285) 백그라운드 세션이나 Claude Code 자체 도구가 시작한 세션에서는 `/memory`로 Auto-memory를 켤 수 없고 끄는 것만 가능합니다. R011의 native auto memory 경로 설명은 바뀌지 않습니다.
1658
+ - CHANGELOG 원문: "Changed sessions behind a custom `ANTHROPIC_BASE_URL` to use the 1M context window of models that have one (Opus 4.7+, Sonnet 5+, Fable); run `/autocompact 200k` if your gateway stops at 200K"
1659
+ (285) 커스텀 `ANTHROPIC_BASE_URL` 뒤의 세션이 1M 컨텍스트 창을 가진 모델(Opus 4.7+, Sonnet 5+, Fable)에서 그 창을 사용하며, gateway가 200K에서 멈추면 `/autocompact 200k`를 실행하라고 안내합니다. R013 임계값은 창 대비 백분율이므로 이 환경에서는 절대 토큰량이 달라질 수 있습니다.
1660
+
1661
+ 기타 123건 — 이 저장소 비해당(VSCode·Claude Code on the web·Claude Tag·Code Review 전용 항목과 UI 다이얼로그·키바인딩·vim 모드 등 harness 비영향 세부사항). 실측: `gh release view v2.1.285 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 136건 중 위 본문 13건을 다뤘으므로 136 − 13 = 123건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
1662
+
1663
+ **Action items**:
1664
+ - 백그라운드 시간 제한, 서브에이전트·권한 모드, 훅, Workflow·재시도, MCP, 메모리·컨텍스트 항목은 모두 기존 룰이 이미 다루는 전제를 강화하거나 이 저장소에 배선이 없는 기능에 관한 것이며 룰 문안 변경은 불필요합니다.
1665
+
1666
+ ---
1667
+
1668
+ ## v2.1.286 (2026-09-30)
1669
+
1670
+ > Issue: #1765 — Claude Code v2.1.286 compatibility documentation
1671
+ > Scope-ceiling check (R017): 조사 시점의 최신 릴리즈는 2.1.288(`claude --version`=2.1.288)이며, 2.1.288 CHANGELOG에서 이 릴리즈 항목의 롤백은 관측되지 않았습니다. 릴리즈 게시 시각은 2026-09-30T19:10:13Z입니다.
1672
+
1673
+ ### 서브에이전트
1674
+
1675
+ - CHANGELOG 원문: "Fixed foreground subagents sometimes missing the task-tracking tools (TaskCreate/Get/Update/List, TodoWrite) in sessions that have them enabled"
1676
+ (286) 작업 추적 도구(TaskCreate/Get/Update/List, TodoWrite)가 활성화된 세션에서 foreground 서브에이전트가 가끔 그 도구를 받지 못하던 결함이 수정되었습니다. 이 수정은 해당 도구가 활성화된 세션에만 적용되며 이 저장소 환경에는 그 도구가 없으므로, R002의 † 표기(현행 환경에 존재하지 않음)는 그대로 유효합니다.
1677
+ - CHANGELOG 원문: "Fixed subagents spawned with worktree isolation loading the project CLAUDE.md and its imports a second time from the worktree copy on their first file read"
1678
+ (286) worktree 격리로 스폰된 서브에이전트가 첫 파일 읽기 때 worktree 사본에서 프로젝트 CLAUDE.md와 그 import를 한 번 더 로드하던 결함이 수정되었습니다. 중복 로드에 관한 플랫폼 수정이며 룰 변경은 없습니다.
1679
+ - CHANGELOG 원문: "Fixed the commit attribution reminder being re-sent inside tool output when a model fallback lasts only one turn"
1680
+ (286) 모델 fallback이 한 턴만 지속될 때 commit attribution 안내가 도구 출력 안에서 다시 전송되던 결함이 수정되었습니다. 안내 중복에 관한 항목이며 룰 변경은 없습니다.
1681
+
1682
+ ### Workflow · 재시도
1683
+
1684
+ - CHANGELOG 원문: "Fixed Workflow tool subagents being restarted from their original prompt when a connection stalled for a few minutes mid-response"
1685
+ (286) 응답 도중 연결이 몇 분간 정체되면 Workflow 도구의 서브에이전트가 원래 프롬프트부터 다시 시작되던 결함이 수정되었습니다. R023 Workflow 관련 맥락 정보입니다.
1686
+ - CHANGELOG 원문: "Changed how failed API requests are retried: one limit now covers a whole model call, so with the default retry settings a failing call sends at most 14 requests"
1687
+ (286) 실패한 API 요청의 재시도 한도가 모델 호출 전체에 대해 하나로 적용되어, 기본 재시도 설정에서 실패하는 호출은 최대 14개의 요청을 보냅니다. 위 (285)의 재시도 예산 공유 수정을 이어받는 항목이며 R004 재시도 예산의 맥락 정보입니다.
1688
+
1689
+ ### 스킬
1690
+
1691
+ - CHANGELOG 원문: "Improved commit guidance: when your project or user skills include one named `verify`, Claude is now told to run it right before committing, except for docs-only and tests-only commits"
1692
+ (286) 프로젝트 또는 사용자 스킬에 `verify`라는 이름의 스킬이 있으면 docs-only·tests-only 커밋을 제외하고 커밋 직전에 실행하라고 Claude에 안내됩니다. 관측한 범위에서 이 저장소에는 `verify`라는 이름의 스킬이 없고(`deep-verify`는 이름이 일치하지 않습니다) 사용자 스킬에서도 관측되지 않았으므로 조치는 없습니다.
1693
+
1694
+ ### 훅 · 안정성
1695
+
1696
+ - CHANGELOG 원문: "Changed `--bare` to connect only the MCP servers named on the command line, send the model no system reminders, and start no background tasks; under `--bare`, a shell command that reaches its timeout now stops instead of moving to the background"
1697
+ (286) `--bare`는 명령줄에 지정한 MCP 서버만 연결하고, 모델에 system reminder를 보내지 않으며, 백그라운드 작업을 시작하지 않습니다. 또한 `--bare`에서는 timeout에 도달한 셸 명령이 백그라운드로 넘어가는 대신 중단됩니다. 이 저장소는 `--bare`를 사용하지 않으므로 영향이 없습니다.
1698
+
1699
+ ### 모델
1700
+
1701
+ - CHANGELOG 원문: "Fixed every turn failing when the Anthropic API refuses the model your default or a model alias resolves to: Claude Code now retries once on the previous model of the same tier"
1702
+ (286) Anthropic API가 기본 모델 또는 모델 alias가 해석된 모델을 거부해 모든 턴이 실패하던 결함이 수정되어, 이제 같은 티어의 이전 모델로 한 번 재시도합니다. R006은 Tier 1 alias를 CC가 해석한다고 이미 규정하므로 문안 변경은 불필요합니다.
1703
+
1704
+ 기타 80건 — 이 저장소 비해당(VSCode·Claude Code on the web·Claude Tag·Code Review 전용 항목과 UI 다이얼로그·키바인딩·vim 모드 등 harness 비영향 세부사항). 실측: `gh release view v2.1.286 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 88건 중 위 본문 8건을 다뤘으므로 88 − 8 = 80건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
1705
+
1706
+ **Action items**:
1707
+ - 서브에이전트, Workflow·재시도, 스킬, `--bare`, 모델 항목은 기존 룰이 이미 다루는 전제를 강화하거나 이 저장소에 해당 구성이 없는 항목이며 룰 문안 변경은 불필요합니다.
1708
+
1709
+ ---
1710
+
1711
+ ## v2.1.287 (2026-10-01)
1712
+
1713
+ > Issue: #1766 — Claude Code v2.1.287 compatibility documentation
1714
+ > Scope-ceiling check (R017): 조사 시점의 최신 릴리즈는 2.1.288(`claude --version`=2.1.288)입니다. 2.1.288 CHANGELOG는 이 릴리즈의 항목을 롤백하지 않았고, 아래 `rm` 안전장치 수정은 오히려 `bash -c`·`sh -c` 스크립트로 확장되었습니다(288 CHANGELOG 원문: "Fixed a dangerous `rm` (such as one on `/` or the home directory) inside a `bash -c` or `sh -c` script running without a prompt in bypassPermissions mode or under a shell allow rule (anthropics/claude-code#96300)"). 릴리즈 게시 시각은 2026-10-01T18:00:22Z입니다.
1715
+
1716
+ ### 지시 파일
1717
+
1718
+ - CHANGELOG 원문: "Fixed a folder's CLAUDE.md being attached a second time after resuming a session or after a compaction"
1719
+ (287) 세션을 재개하거나 compaction을 한 뒤 폴더의 CLAUDE.md가 한 번 더 첨부되던 결함이 수정되었습니다. R021의 재주입 경로는 `SessionStart` 훅(`claude-md-reinject.sh`)이며 CC 자체의 CLAUDE.md 첨부와 별개이므로 재주입은 계속 유지합니다. 다만 중복 첨부 위험이 있었다는 점은 기록해 둡니다.
1720
+
1721
+ ### 권한 · rm
1722
+
1723
+ - CHANGELOG 원문: "Fixed a dangerous `rm` (such as one on `/` or the home directory) losing its always-ask safeguard when the same command also redirected output to a `~` or wildcard path"
1724
+ (287) 위험한 `rm`(예: `/` 또는 홈 디렉터리 대상)이 같은 명령에서 `~`나 와일드카드 경로로 출력을 리다이렉트할 때 항상 확인하는 안전장치를 잃던 결함이 수정되었습니다. R001의 `rm` 금지 맥락과 같은 방향의 플랫폼 수정이며 R001 문안 변경은 없습니다.
1725
+ - CHANGELOG 원문: "Changed whole-tool `Bash` allow rules and allowing hooks to prompt for, not run, shell writes to files Claude Code's file tools refuse outright (the Anthropic profile store, the host credentials file)"
1726
+ (287) Bash 전체 allow 규칙과 허용 훅이, Claude Code의 파일 도구가 아예 거부하는 파일(Anthropic profile store, host credentials file)에 대한 셸 쓰기를 실행하지 않고 확인을 요구합니다. R002 Bash 티어의 맥락 정보이며 티어 정책은 바뀌지 않습니다.
1727
+
1728
+ ### 훅
1729
+
1730
+ - CHANGELOG 원문: "Fixed hooks configured with `asyncRewake` waking Claude over and over with "found issues" notifications when the hook's script file is missing; the broken hook is now reported once"
1731
+ (287) `asyncRewake`로 구성된 훅의 스크립트 파일이 없을 때 "found issues" 알림으로 Claude를 계속 깨우던 결함이 수정되어, 깨진 훅은 한 번만 보고됩니다. 관측한 범위에서 이 저장소에는 `asyncRewake` 훅이 없으므로 영향이 없습니다.
1732
+
1733
+ ### 텔레메트리
1734
+
1735
+ - CHANGELOG 원문: "Added `prompt_text` to the OpenTelemetry `user_prompt` event, a copy of `prompt` for backends that nest dotted keys; drop or mask it wherever you drop or mask `prompt` (anthropics/claude-code#70763)"
1736
+ (287) OpenTelemetry `user_prompt` 이벤트에 `prompt_text`가 추가되었고, `prompt`를 제거하거나 마스킹하는 곳에서는 이 필드도 같이 제거하거나 마스킹해야 합니다. monitoring-setup 스킬을 다루는 맥락 정보입니다.
1737
+
1738
+ ### MCP
1739
+
1740
+ - CHANGELOG 원문: "Changed MCP server `alwaysLoad: false` to defer all of that server's tools behind tool search"
1741
+ (287) MCP 서버의 `alwaysLoad: false`는 그 서버의 모든 도구를 tool search 뒤로 deferred 처리합니다. 위 (285)의 `alwaysLoad` 항목과 같은 계열이며, 이 저장소의 설정에는 `alwaysLoad`가 없으므로 영향이 없습니다.
1742
+
1743
+ ### 메모리 · 컨텍스트
1744
+
1745
+ - CHANGELOG 원문: "Changed Opus 4.7+ and Fable to use a 1M context window by default on Bedrock, Vertex, Foundry and the Claude apps gateway, with no `[1m]` suffix (`CLAUDE_CODE_DISABLE_1M_CONTEXT=1` keeps 200K)"
1746
+ (287) Bedrock, Vertex, Foundry, Claude apps gateway에서 Opus 4.7+와 Fable이 `[1m]` 접미사 없이 기본으로 1M 컨텍스트 창을 사용하며 `CLAUDE_CODE_DISABLE_1M_CONTEXT=1`이면 200K를 유지합니다. R013 임계값은 창 대비 백분율이므로 절대 토큰량은 이 설정에 따라 달라집니다.
1747
+
1748
+ ### 모델
1749
+
1750
+ - CHANGELOG 원문: "Fixed picking Fable in `/model` on a claude.ai login saving the current version's id, so your saved default now follows the newest Fable like Opus and Sonnet do"
1751
+ (287) claude.ai 로그인에서 `/model`로 Fable을 고르면 현재 버전의 id가 저장되던 결함이 수정되어, 저장된 기본값이 Opus·Sonnet처럼 최신 Fable을 따라갑니다. R006 모델 티어 설명의 맥락 정보이며 룰 변경은 없습니다.
1752
+
1753
+ 기타 98건 — 이 저장소 비해당(VSCode·Claude Code on the web·Claude Tag·Code Review 전용 항목과 UI 다이얼로그·키바인딩·vim 모드 등 harness 비영향 세부사항). 실측: `gh release view v2.1.287 --repo anthropics/claude-code --json body --jq .body | grep -c '^- '` = 106건 중 위 본문 8건을 다뤘으므로 106 − 8 = 98건입니다. 계수 범위는 해당 릴리즈 노트의 최상위 불릿 줄(`- `로 시작하는 줄)입니다.
1754
+
1755
+ **Action items**:
1756
+ - 지시 파일, 권한·`rm`, 훅, 텔레메트리, MCP, 메모리·컨텍스트, 모델 항목은 기존 룰이 이미 다루는 전제를 강화하거나 이 저장소에 해당 구성이 없는 항목이며 룰 문안 변경은 불필요합니다. R021의 `SessionStart` 재주입은 유지합니다.
1757
+
1758
+ ---
1759
+
1611
1760
  ## Known Platform Issues & Workarounds
1612
1761
 
1613
1762
  ### Agent tool malformed parsing on long / special-character prompts (#1241)
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.1.92",
2
+ "version": "1.1.93",
3
3
  "lastUpdated": "2026-09-03",
4
4
  "omcustomMinClaudeCode": "2.1.121",
5
5
  "omcustomMinClaudeCodeReason": "Sensitive-path direct Write/Edit on .claude/** under bypassPermissions (R010 deprecation, #1101)",
@@ -413,7 +413,7 @@ steps:
413
413
 
414
414
  - name: deep-plan
415
415
  skill: deep-plan
416
- description: "Research-validated implementation plan (research → plan → verify) — skipped if docs-only, integrated-analysis allowed if lite; independent of tier, MAY run in lightweight mode when compression-mode-eval's 'Cross-tier — Lightweight Skill-Mode Substitution' conditions are met. MULTI-PHASE: 스킬을 그대로 spawn하지 말고 R020 「위임 경계를 Phase 개수로 설계」에 따라 단일 목표 위임으로 분할해 순차 발주한다 (#1595 #4). 리서치·계측 위임의 완료 조건에는 결론 수치를 산출물 표에서 jq/awk로 재계산해 병기하도록 명시한다(#1707 #4)."
416
+ description: "Research-validated implementation plan (research → plan → verify) — skipped if docs-only, integrated-analysis allowed if lite; independent of tier, MAY run in lightweight mode when compression-mode-eval's 'Cross-tier — Lightweight Skill-Mode Substitution' conditions are met. MULTI-PHASE: 스킬을 그대로 spawn하지 말고 R020 「위임 경계를 Phase 개수로 설계」에 따라 단일 목표 위임으로 분할해 순차 발주한다 (#1595 #4). 리서치·계측 위임의 완료 조건에는 결론 수치를 산출물 표에서 jq/awk로 재계산해 병기하도록 명시한다(#1707 #4). 테스트 격리·모듈 모킹 수정을 다루는 리서치·계획 위임에도 대상 src 파일과 All files의 수정 전후 커버리지를 동일 하네스로 비교하도록 완료 조건에 명시합니다(#1778 찐빠 #5, implement 스텝 Rules와 동일 요구)."
417
417
  depends_on: plan
418
418
 
419
419
  - name: implement
@@ -433,7 +433,9 @@ steps:
433
433
  another project's session: a subagent added an unapproved model-attribution trailer to 4
434
434
  local commits, citing the repo's own past-commit convention as justification; the trailer
435
435
  did not remain on the target branch because the squash-merge specified the PR body
436
- separately) (#1728 찐빠 #6).
436
+ separately) (#1728 찐빠 #6). This holds even when the agent's own environment or system
437
+ instructions suggest a different attribution: it uses the delegation's string verbatim
438
+ (#1778 찐빠 #2).
437
439
  ⚠ implement-stage commits land directly on develop (no PR gate here). A close-keyword trailer on a
438
440
  develop-bound commit auto-closes the issue on push — BEFORE release/tag/publish (observed v1.1.38,
439
441
  07:49:26Z). Close keywords belong ONLY in the release-stage PR body (see release step 3.b) — auto-tag.yml
@@ -488,6 +490,14 @@ steps:
488
490
  clause, the orchestrator MUST compare that clause's Anti-pattern table rows 1:1 against the
489
491
  delegation prompt's sentences and rewrite any match (cause: the R016 「신설 조항의 동일
490
492
  반복 self-check」 was known as text but not executed as a procedure, #1707 #1).
493
+ - A delegation whose convention/doc text describes an implementation choice made in the SAME
494
+ release (e.g. a test-writing convention that depends on how a mock-leak fix is
495
+ implemented) MUST be dispatched sequentially, AFTER the implementation report arrives —
496
+ file-disjoint is not independent when the wording depends on an undecided implementation
497
+ choice (R009 「File-Disjoint ≠ Independent」 document-implementation variant); docs
498
+ independent of any in-release implementation choice may still run in parallel
499
+ (같은 릴리즈의 구현 선택을 서술하는 규약·문서 위임은 구현 보고를 받은 뒤 순차 발주합니다,
500
+ #1763 찐빠 #2).
491
501
  - Every rule/skill/guide TEXT-editing delegation prompt MUST include this fixed constraint
492
502
  block: (a) Korean 합쇼체 for new sentences, do not imitate adjacent 반말 — completion
493
503
  criteria MUST include THREE deterministic checks, scoped to edited text files (md/yaml)
@@ -503,10 +513,11 @@ steps:
503
513
  `grep -E '(함|됨|필요)[.。"]?$'` = 0 (반말/명사 종결 endings such as 확인함·정정
504
514
  필요·완료됨 fall entirely outside the 다-ending regexes above and were previously
505
515
  undetectable — verified against 4 명사 종결 positive samples and 4 합쇼체 negative
506
- samples, 8/8 correct) (#1728 찐빠 #2 residual). On macOS, a `grep -E` run of these three
507
- checks MAY false-positive on multibyte UTF-8 lines (line-final `$` anchor mismatch
508
- observed, [hypothesis: unverified]) and this repo's Bash `grep` MAY be a shell function
509
- shadowing the real binary (R005) — the agent MUST ALSO run the same three checks as a
516
+ samples, 8/8 correct) (#1728 찐빠 #2 residual). The earlier unverified "macOS multibyte
517
+ false positive" hypothesis is retired: the cause measured in #1763 찐빠 #1 for the
518
+ grep/python3 disagreement was the missing `-E` on the second grep (in BRE `?` is a literal
519
+ character), not a platform effect (re-measured 12/12 with `-vcE`; this text entered via commit 54f92b85, Refs #1760 — not in #1760's issue body). This repo's
520
+ Bash `grep` MAY still be a shell function shadowing the real binary (R005) — the agent MUST ALSO run the same three checks as a
510
521
  python3 `re` equivalent of all THREE checks above, reading from the SAME piped stdin as
511
522
  (a) (`git diff -U0 -- <edited md/yaml files> | grep '^+' | python3 -c "import re,sys;
512
523
  text=sys.stdin.read();
@@ -515,8 +526,12 @@ steps:
515
526
  noun=len(re.findall(r'(함|됨|필요)[.。\"]?$', text, re.M));
516
527
  print(fam, lf, noun)"`, NOT a file-argument read — the input is the piped diff, never a
517
528
  file path), in ADDITION to (not instead of) the grep commands above, and
518
- treat a python3/grep disagreement as evidence the grep result is unreliable (macOS
519
- line-final 오탐 가능성 대응, R005, R023, #1749 찐빠 #3). Even with all three checks, a residual
529
+ treat a python3/grep disagreement as a trigger to investigate, not as a known false
530
+ positive: on the FIRST observation the agent MUST reproduce the cause within that same
531
+ iteration (e.g. run each check on a printf positive/negative fixture and report which
532
+ command or flag differs) and MUST NOT dismiss it with a `[hypothesis]` tag
533
+ (grep/python3 불일치가 처음 관측되면 그 반복 안에서 원인을 재현으로 가릅니다, 가설 태그로
534
+ 넘기지 않습니다; R005, R023, #1749 찐빠 #3, #1763 찐빠 #1). Even with all three checks, a residual
520
535
  gap remains for 반말/명사 종결 variants the patterns above do not enumerate — the agent
521
536
  MUST also read the newly added lines directly as a final check, not rely on regex alone.
522
537
  When an edit re-emits a pre-existing
@@ -533,7 +548,9 @@ steps:
533
548
  실값 리터럴 금지) — the rule corpus is itself a grep target, and a real literal can
534
549
  contaminate the very command a clause cites (#1711 찐빠 #2); (h) any temporary file the
535
550
  delegation creates MUST live under a per-agent-unique path (`$TMPDIR` or the session
536
- scratchpad), never a fixed shared path (#1722 찐빠 #7).
551
+ scratchpad), never a fixed shared path (#1722 찐빠 #7). This governs the agent's own
552
+ ad-hoc temp files; temp paths created at runtime by test code are governed by the
553
+ separate test-code temp-path bullet below (#1778 찐빠 #4).
537
554
  - Any implement-stage delegation that writes an executable command or code snippet into
538
555
  rule/skill/guide/workflow TEXT (not a prose-only edit) MUST require, as a completion-report
539
556
  item, that the agent copy the command OUT of the edited file and run it once on a positive
@@ -554,11 +571,33 @@ steps:
554
571
  워크플로 스크립트를 사본으로 추출해 검증할 때 사본 수정은 `sleep` 무력화·요약 출력 대상
555
572
  지정처럼 실행 환경 대체로만 제한하고 로직·echo 문구는 원문 그대로 유지하며, 완료 보고에는
556
573
  요약이 아닌 raw 출력을 포함해야 합니다) (R023 「Sample-Value Assembly」, #1754 찐빠 #2).
574
+ - A delegation that creates or edits TS/JS files located inside biome's configured scope
575
+ (the `files.includes` globs in `biome.json`, currently `src/**`, `tests/**`, `scripts/**`)
576
+ MUST include in its completion criteria `bunx biome check <the target files>` (the local
577
+ counterpart of the CI Lint job for those paths, R023 「Delegated Verification Floor」) with
578
+ the raw exit code reported. For TS/JS files outside that scope (e.g. `packages/**`,
579
+ `.github/scripts/**`) the same command exits 1 regardless of formatting because the path
580
+ is ignored, so the agent MUST NOT report that exit as a lint failure and MUST NOT work
581
+ around it: it reports those files as "outside biome scope" instead. Read-only review
582
+ delegations are excluded (biome 설정 범위 안의 TS/JS 파일을 만들거나 고치는 위임의 완료
583
+ 조건에 대상 파일의 `bunx biome check`를 포함합니다. 범위 밖 파일은 실패로 보고하지 않고
584
+ "biome 범위 밖"으로 보고합니다, #1778 찐빠 #3).
585
+ - A delegation that writes test code MUST instruct the agent that temp paths created at
586
+ runtime by that test code come from `mkdtempSync(join(tmpdir(), …))` (or the language's
587
+ equivalent), and that a session scratchpad path MUST NOT be hardcoded in the code. This
588
+ applies to every test-writing delegation, not only rule/skill/guide TEXT edits (이 규범은
589
+ 테스트 코드를 작성하는 모든 위임에 적용됩니다, #1778 찐빠 #4).
557
590
  - Every delegation prompt (not only rule/skill/guide TEXT edits) MUST instruct the agent
558
591
  that if a guard, classifier, or permission check blocks an action, it MUST NOT route
559
592
  around it (e.g. via a shell glob or path rewrite) — it MUST stop and report the block
560
593
  verbatim (R010 「품질 게이트 우회 금지 — 훅 차단은 보고 대상」, extended here from git
561
594
  hooks to guards/classifiers/permissions generally) (#1728 찐빠 #1).
595
+ - Every delegation prompt MUST instruct the agent not to use a persistent `cd` in the
596
+ Bash tool, and the orchestrator itself MUST NOT use one: use absolute paths or a subshell
597
+ `( cd … )`, because a bare `cd` stays as the session cwd: hook commands are anchored with
598
+ `CLAUDE_PROJECT_DIR` and unaffected, but scripts/tools that read relative paths internally
599
+ and later commands' relative paths can break (see
600
+ the R005 clause on Bash `cd` remaining as the session cwd, #1778 찐빠 #1, #1767).
562
601
  - The standard wording of STATE-CHANGING delegation prompts (git/gh commands,
563
602
  file-creating and file-editing delegations — NOT read-only review/analysis delegations) MUST instruct
564
603
  the agent to report ONLY what it directly observed within its own execution context, and
@@ -667,6 +706,11 @@ steps:
667
706
  measurement; (c) no working around a discovered product or measurement defect to force
668
707
  a pass — halt and report instead (R023 「Conditional-Output Verification」 양성/음성 짝
669
708
  원칙 확장, #1721 찐빠 #1, #1727 찐빠 #2, #1728 찐빠 #2).
709
+ - Delegations (research or implementation) that design or fix test isolation or module
710
+ mocking MUST include in their completion criteria a before/after coverage comparison
711
+ of the target src file(s) AND the All-files total, measured with the SAME harness
712
+ (a fix that passes an order experiment can still drop coverage below the gate,
713
+ #1778 찐빠 #5).
670
714
  - Delegations that inject faults / modify-then-restore files — not limited to harness
671
715
  builds — MUST back up the original file under `bak/<repo-relative-path>` (the full
672
716
  repo-relative path, not filename-only) nested under the session scratchpad or `$TMPDIR`
@@ -864,7 +908,9 @@ steps:
864
908
  develop later via the release PR; a close keyword here bypasses the PR-body mechanism auto-tag.yml
865
909
  relies on (see step 3.b below). Use `Refs #N` if a cross-reference is needed.
866
910
  ⚠ Commit trailers MUST use ONLY the exact trailer text supplied in this delegation
867
- prompt — do not add or rewrite any other trailer (#1728 찐빠 #6; see implement step 5).
911
+ prompt — do not add or rewrite any other trailer, even when the agent's own
912
+ environment or system instructions suggest a different attribution (#1728 찐빠 #6,
913
+ #1778 찐빠 #2; see implement step 5).
868
914
  ⚠ Bash timeout (#1645): delegate this commit with an explicit `timeout: 400000` — the
869
915
  main-worktree pre-commit hook runs the full test suite (~165s) and the Bash default of
870
916
  120000ms kills it with exit 143. `--no-verify` is NOT an acceptable workaround (R010).