oh-my-customcode 1.1.49 โ†’ 1.1.50

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/index.js CHANGED
@@ -19,28 +19,28 @@ var __require = /* @__PURE__ */ createRequire(import.meta.url);
19
19
  // src/utils/fs.ts
20
20
  var exports_fs = {};
21
21
  __export(exports_fs, {
22
- writeTextFile: () => writeTextFile,
23
- writeJsonFile: () => writeJsonFile,
24
- validatePreserveFilePath: () => validatePreserveFilePath,
25
- resolveTemplatePath: () => resolveTemplatePath,
26
- resolvePath: () => resolvePath,
27
- remove: () => remove,
28
- readTextFile: () => readTextFile,
29
- readJsonFile: () => readJsonFile,
30
- normalizePath: () => normalizePath,
31
- move: () => move,
32
- listFiles: () => listFiles,
33
- isAbsolutePath: () => isAbsolutePath,
34
- getRelativePath: () => getRelativePath,
35
- getPackageRoot: () => getPackageRoot,
36
- getFileStats: () => getFileStats,
37
- filesAreIdentical: () => filesAreIdentical,
38
- fileExists: () => fileExists,
39
- ensureDirectory: () => ensureDirectory,
40
- createTempDir: () => createTempDir,
41
- copyFile: () => copyFile,
22
+ calculateChecksum: () => calculateChecksum,
42
23
  copyDirectory: () => copyDirectory,
43
- calculateChecksum: () => calculateChecksum
24
+ copyFile: () => copyFile,
25
+ createTempDir: () => createTempDir,
26
+ ensureDirectory: () => ensureDirectory,
27
+ fileExists: () => fileExists,
28
+ filesAreIdentical: () => filesAreIdentical,
29
+ getFileStats: () => getFileStats,
30
+ getPackageRoot: () => getPackageRoot,
31
+ getRelativePath: () => getRelativePath,
32
+ isAbsolutePath: () => isAbsolutePath,
33
+ listFiles: () => listFiles,
34
+ move: () => move,
35
+ normalizePath: () => normalizePath,
36
+ readJsonFile: () => readJsonFile,
37
+ readTextFile: () => readTextFile,
38
+ remove: () => remove,
39
+ resolvePath: () => resolvePath,
40
+ resolveTemplatePath: () => resolveTemplatePath,
41
+ validatePreserveFilePath: () => validatePreserveFilePath,
42
+ writeJsonFile: () => writeJsonFile,
43
+ writeTextFile: () => writeTextFile
44
44
  });
45
45
  import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
46
46
  import { fileURLToPath } from "node:url";
@@ -294,14 +294,14 @@ var init_fs = () => {};
294
294
  // src/core/registry.ts
295
295
  var exports_registry = {};
296
296
  __export(exports_registry, {
297
- unregisterProject: () => unregisterProject,
298
- registryToList: () => registryToList,
299
- registerProject: () => registerProject,
300
- readRegistry: () => readRegistry,
301
- migrateFromLockfiles: () => migrateFromLockfiles,
302
- isTempPath: () => isTempPath,
297
+ _setRegistryDirForTesting: () => _setRegistryDirForTesting,
303
298
  cleanRegistry: () => cleanRegistry,
304
- _setRegistryDirForTesting: () => _setRegistryDirForTesting
299
+ isTempPath: () => isTempPath,
300
+ migrateFromLockfiles: () => migrateFromLockfiles,
301
+ readRegistry: () => readRegistry,
302
+ registerProject: () => registerProject,
303
+ registryToList: () => registryToList,
304
+ unregisterProject: () => unregisterProject
305
305
  });
306
306
  import { mkdir, readFile, writeFile } from "node:fs/promises";
307
307
  import { homedir, tmpdir } from "node:os";
@@ -2031,7 +2031,7 @@ var package_default = {
2031
2031
  workspaces: [
2032
2032
  "packages/*"
2033
2033
  ],
2034
- version: "1.1.49",
2034
+ version: "1.1.50",
2035
2035
  description: "Batteries-included agent harness for Claude Code",
2036
2036
  type: "module",
2037
2037
  bin: {
@@ -2079,7 +2079,7 @@ var package_default = {
2079
2079
  yaml: "^2.8.2"
2080
2080
  },
2081
2081
  devDependencies: {
2082
- "@anthropic-ai/sdk": "^0.115.0",
2082
+ "@anthropic-ai/sdk": "^0.117.1",
2083
2083
  "@biomejs/biome": "^2.3.12",
2084
2084
  "@types/bun": "^1.3.6",
2085
2085
  "@types/js-yaml": "^4.0.9",
@@ -5367,40 +5367,40 @@ var src_default = {
5367
5367
  VERSION
5368
5368
  };
5369
5369
  export {
5370
- writeJsonFile,
5371
- warn,
5372
- update,
5373
- success,
5374
- setLogLevel,
5375
- setLocale,
5376
- saveConfig,
5377
- resolveTemplatePath,
5378
- renderGitWorkflowKO,
5379
- renderGitWorkflowEN,
5380
- readJsonFile,
5381
- preserveCustomizations,
5382
- mergeConfig,
5383
- loadConfig,
5384
- install,
5385
- info,
5386
- getTemplateManifest,
5387
- getProviderLayout,
5388
- getPackageRoot,
5389
- getDefaultWorkflow,
5390
- getDefaultConfig,
5391
- getConfigPath,
5392
- fileExists,
5393
- error,
5394
- ensureDirectory,
5395
- detectProvider,
5396
- detectGitWorkflow,
5397
- src_default as default,
5398
- debug,
5399
- createLogger,
5400
- createDirectoryStructure,
5401
- copyTemplates,
5402
- copyDirectory,
5403
- checkForUpdates,
5370
+ VERSION,
5404
5371
  applyUpdates,
5405
- VERSION
5372
+ checkForUpdates,
5373
+ copyDirectory,
5374
+ copyTemplates,
5375
+ createDirectoryStructure,
5376
+ createLogger,
5377
+ debug,
5378
+ src_default as default,
5379
+ detectGitWorkflow,
5380
+ detectProvider,
5381
+ ensureDirectory,
5382
+ error,
5383
+ fileExists,
5384
+ getConfigPath,
5385
+ getDefaultConfig,
5386
+ getDefaultWorkflow,
5387
+ getPackageRoot,
5388
+ getProviderLayout,
5389
+ getTemplateManifest,
5390
+ info,
5391
+ install,
5392
+ loadConfig,
5393
+ mergeConfig,
5394
+ preserveCustomizations,
5395
+ readJsonFile,
5396
+ renderGitWorkflowEN,
5397
+ renderGitWorkflowKO,
5398
+ resolveTemplatePath,
5399
+ saveConfig,
5400
+ setLocale,
5401
+ setLogLevel,
5402
+ success,
5403
+ update,
5404
+ warn,
5405
+ writeJsonFile
5406
5406
  };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "workspaces": [
4
4
  "packages/*"
5
5
  ],
6
- "version": "1.1.49",
6
+ "version": "1.1.50",
7
7
  "description": "Batteries-included agent harness for Claude Code",
8
8
  "type": "module",
9
9
  "bin": {
@@ -51,7 +51,7 @@
51
51
  "yaml": "^2.8.2"
52
52
  },
53
53
  "devDependencies": {
54
- "@anthropic-ai/sdk": "^0.115.0",
54
+ "@anthropic-ai/sdk": "^0.117.1",
55
55
  "@biomejs/biome": "^2.3.12",
56
56
  "@types/bun": "^1.3.6",
57
57
  "@types/js-yaml": "^4.0.9",
@@ -195,6 +195,16 @@
195
195
  }
196
196
  ],
197
197
  "description": "Advisory check for plugin cache directories missing node_modules (#1207)"
198
+ },
199
+ {
200
+ "matcher": "*",
201
+ "hooks": [
202
+ {
203
+ "type": "command",
204
+ "command": "bash .claude/hooks/scripts/claude-md-reinject.sh"
205
+ }
206
+ ],
207
+ "description": "Re-inject project CLAUDE.md into model context on session start/resume/clear and compact re-entry โ€” matcher \"*\" covers all SessionStart sources including \"compact\" (#1617)"
198
208
  }
199
209
  ],
200
210
  "UserPromptSubmit": [
@@ -0,0 +1,65 @@
1
+ #!/usr/bin/env bash
2
+ # claude-md-reinject.sh โ€” SessionStart: re-inject project CLAUDE.md into model context (#1617)
3
+ #
4
+ # ๋ฐฐ๊ฒฝ:
5
+ # ์žฅ๊ธฐ ์„ธ์…˜์—์„œ compact ์ดํ›„ ํ”„๋กœ์ ํŠธ CLAUDE.md(๊ฐ•์ œ ๊ทœ์น™ ์›๋ฌธ)๊ฐ€ ๋ชจ๋ธ ์ปจํ…์ŠคํŠธ์—์„œ ์œ ์‹ค๋˜๋ฉด
6
+ # ๊ทœ์น™ amnesia๊ฐ€ ์žฌ๋ฐœํ•œ๋‹ค. ๊ธฐ์กด PostCompact ํ›…(hooks.json)์€ "prompt" ํƒ€์ž…์œผ๋กœ ์š”์•ฝ ์ง€์นจ๋งŒ
7
+ # ์žฌ์ฃผ์ž…ํ•  ๋ฟ, CLAUDE.md ์›๋ฌธ ์ „์ฒด๋ฅผ ์žฌ์ฃผ์ž…ํ•˜์ง€ ์•Š๋Š”๋‹ค.
8
+ #
9
+ # ๋ฐฐ์„  ์ด๋ฒคํŠธ (Phase 1 ํŒ๋‹จ, #1617):
10
+ # R006 ์‹ค์ธก ๊ธฐ์ค€(์ด ์ €์žฅ์†Œ rules/MUST-agent-design.md) additionalContext ์ง€์› ์ด๋ฒคํŠธ ๋ชฉ๋ก์—
11
+ # SessionStart๋Š” ์žˆ๊ณ  PostCompact๋Š” ์—†๋‹ค. ํ•œํŽธ ๊ณต์‹ ๋ฌธ์„œ(hooks.md, 2026-08-29 ์žฌํ™•์ธ)์˜
12
+ # SessionStart matcher๋Š” startup / resume / clear / compact ๋„ค ๊ฐ€์ง€์ด๋ฉฐ, "compact"๋Š”
13
+ # auto/manual compact ์งํ›„๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค โ€” ์ฆ‰ "session start ์ „์ฒด์™€ compact ์žฌ๊ฐœ ์ดํ›„ ์žฌ์ฃผ์ž…"
14
+ # ์š”๊ตฌ์‚ฌํ•ญ์€ SessionStart ๋‹จ์ผ ์ด๋ฒคํŠธ(matcher "*")๋กœ ์ „๋ถ€ ์ปค๋ฒ„๋œ๋‹ค. ๋ณ„๋„ PostCompact ๋ฐฐ์„ ์€
15
+ # ๋ถˆํ•„์š” โ€” ๊ณต์‹ ๋ฌธ์„œ ์ด๋ฒคํŠธ ๋ชฉ๋ก(### ํ—ค๋” ์Šค์บ”)์— PostCompact ์ž์ฒด๊ฐ€ ์—†๋‹ค(PreCompact๋งŒ ์กด์žฌ).
16
+ #
17
+ # ๋™์ž‘:
18
+ # stdin JSON์˜ .source(startup/resume/clear/compact/๊ธฐํƒ€)๋ฅผ ๋กœ๊ทธ ํ—ค๋”์— ํฌํ•จํ•ด
19
+ # hookSpecificOutput.additionalContext๋กœ CLAUDE.md ์ „์ฒด๋ฅผ ์žฌ์ฃผ์ž…ํ•œ๋‹ค.
20
+ #
21
+ # Opt-out: OMCUSTOM_CLAUDEMD_REINJECT=off (๊ธฐ๋ณธ on โ€” ์ด ํ›…์€ R021 advisory-first์ด๋˜ ๊ธฐ๋ณธ ํ™œ์„ฑ).
22
+ # Graceful degradation (R021): CLAUDE.md ๋ถ€์žฌ / jq ๋ถ€์žฌ / ์ดˆ๊ณผ ํฌ๊ธฐ โ†’ ๋ฌด์Œ exit 0. ์ ˆ๋Œ€ exit 2 ๊ธˆ์ง€.
23
+
24
+ input=$(cat 2>/dev/null || echo '{}')
25
+
26
+ if [ "${OMCUSTOM_CLAUDEMD_REINJECT:-on}" = "off" ]; then
27
+ exit 0
28
+ fi
29
+
30
+ if ! command -v jq >/dev/null 2>&1; then
31
+ exit 0
32
+ fi
33
+
34
+ source_field=$(printf '%s' "$input" | jq -r '.source // "unknown"' 2>/dev/null) || source_field="unknown"
35
+
36
+ PROJECT_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
37
+ CLAUDE_MD="$PROJECT_ROOT/CLAUDE.md"
38
+
39
+ if [ ! -f "$CLAUDE_MD" ]; then
40
+ exit 0
41
+ fi
42
+
43
+ # ํฌ๊ธฐ ๊ฐ€๋“œ โ€” ํ›… ์ถœ๋ ฅ ํญ์ฃผ๋กœ ์„ธ์…˜์„ wedge์‹œํ‚ค๋Š” ์‹คํŒจ ํด๋ž˜์Šค ๋ฐฉ์ง€ (R021).
44
+ MAX_BYTES=${OMCUSTOM_CLAUDEMD_REINJECT_MAX_BYTES:-102400}
45
+ file_size=$(wc -c < "$CLAUDE_MD" 2>/dev/null | tr -d ' ') || file_size=0
46
+ if [ -z "$file_size" ] || [ "$file_size" -gt "$MAX_BYTES" ] 2>/dev/null; then
47
+ exit 0
48
+ fi
49
+
50
+ claude_md_content=$(cat "$CLAUDE_MD" 2>/dev/null) || exit 0
51
+ if [ -z "$claude_md_content" ]; then
52
+ exit 0
53
+ fi
54
+
55
+ header="[claude-md-reinject] CLAUDE.md re-injection (source: ${source_field})"
56
+
57
+ # ์‚ฌ๋žŒ์ด ๋ณด๋Š” ๊ฐ์‚ฌ ์ถ”์ ์šฉ (SessionStart์˜ stdout ์ž์ฒด๊ฐ€ ์ปจํ…์ŠคํŠธ๋กœ ๋“ค์–ด๊ฐ€๋ฏ€๋กœ, ์‚ฌ๋žŒ์šฉ ๋กœ๊ทธ๋Š”
58
+ # stderr๋กœ๋งŒ ๋‚จ๊ธด๋‹ค โ€” additionalContext ๋ณธ๋ฌธ์—๋Š” ์„ž์ง€ ์•Š๋Š”๋‹ค).
59
+ printf '%s\n' "$header" >&2
60
+
61
+ jq -cn --arg header "$header" --arg body "$claude_md_content" \
62
+ '{hookSpecificOutput: {hookEventName: "SessionStart", additionalContext: ($header + "\n\n" + $body)}}' \
63
+ 2>/dev/null || exit 0
64
+
65
+ exit 0
@@ -32,6 +32,8 @@
32
32
 
33
33
  > **๋„๊ตฌ ์ด๋ฆ„ โ‰  ๊ทธ ํ”„๋กœ๊ทธ๋žจ (#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.
34
34
 
35
+ > **v2.1.234+**: macOS/Linux ๋„ค์ดํ‹ฐ๋ธŒ ๋นŒ๋“œ์˜ ๋‚ด์žฅ `grep`์ด pathological pattern์—์„œ ๋ฉ”๋ชจ๋ฆฌ ๊ณ ๊ฐˆ ๋Œ€์‹  fail fastํ•˜๊ณ , `-m N`๊ณผ `-A/-C` ์˜ต์…˜์„ ํ•จ๊ป˜ ์“ธ ๋•Œ์˜ context ์ถœ๋ ฅ ์ •ํ™•๋„๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค(v2.1.235์—์„œ ์ถ”๊ฐ€ ๋ณด๊ฐ•). ์œ„ ใ€Œ๋„๊ตฌ ์ด๋ฆ„ โ‰  ๊ทธ ํ”„๋กœ๊ทธ๋žจใ€(#1590) ์กฐํ•ญ๊ณผ ์ธ์ ‘ํ•œ ํ•จ์ •์ž…๋‹ˆ๋‹ค โ€” ์ด ์ €์žฅ์†Œ์˜ Bash ๋„๊ตฌ `grep`์€ ์…ธ ํ•จ์ˆ˜๋กœ ์…ฐ์ด๋”ฉ๋ผ ์žˆ์œผ๋ฏ€๋กœ, ๋‚ด์žฅ `grep` ์ž์ฒด์˜ ๊ฒฌ๊ณ ์„ฑ ๊ฐœ์„ ๊ณผ ์…ฐ์ด๋”ฉ ๋ฌธ์ œ๋Š” **๋ณ„๊ฐœ ์ถ•**์ž…๋‹ˆ๋‹ค. Darwin(์ด ์ €์žฅ์†Œ ์‹คํ–‰ ํ™˜๊ฒฝ) ๋„ค์ดํ‹ฐ๋ธŒ ๋นŒ๋“œ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
36
+
35
37
  <!--
36
38
  > **v2.1.206+**: `/doctor`์— checked-in CLAUDE.md์—์„œ ์ฝ”๋“œ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒ ๊ฐ€๋Šฅํ•œ ๋‚ด์šฉ์„ ์ž˜๋ผ๋‚ด๋„๋ก ์ œ์•ˆํ•˜๋Š” ์ฒดํฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค โ€” R005 "Context Optimization via HTML Comments"์˜ ์ปจํ…์ŠคํŠธ ์ ˆ๊ฐ ์›์น™๊ณผ ์ •ํ•ฉ(๋ชจ๋ธ ๋ถˆํ•„์š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ถ•์†Œ).
37
39
  -->
@@ -42,7 +44,7 @@
42
44
 
43
45
  > **v2.1.212+**: MCP ๋„๊ตฌ ํ˜ธ์ถœ์ด 2๋ถ„(๊ธฐ๋ณธ๊ฐ’, `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS`๋กœ ์ž„๊ณ„๊ฐ’ ์กฐ์ •ยท๋น„ํ™œ์„ฑ) ์ดˆ๊ณผ ์‹œ ์ž๋™์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์ด๋™ํ•ด ์„ธ์…˜์ด ๊ณ„์† ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค โ€” ์œ„ v2.1.210 Bash/PowerShell auto-background์˜ MCP ๋„๊ตฌ ํ™•์žฅ. ๋А๋ฆฐ MCP ํ˜ธ์ถœ(ontology-rag `rebuild_ontology`, code-review-graph ์ธ๋ฑ์‹ฑ ๋“ฑ)์„ hang์œผ๋กœ ์˜คํŒํ•˜์ง€ ๋ง๊ณ , 2๋ถ„ ์ดˆ๊ณผ ์‹œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ „ํ™˜์„ ์ „์ œ๋กœ ํ›„์† ์ž‘์—…์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
44
46
 
45
- > **v2.1.233+**: `WebFetch`์˜ ์„ธ์…˜ URL ์บ์‹œ TTL์ด `CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`๋กœ ์กฐ์ • ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค(๊ธฐ๋ณธ 15๋ถ„ ๋ถˆ๋ณ€). **์žฌํ™•์ธ ํ•จ์ •**: ๊ฐ™์€ URL์„ TTL ๋‚ด ์žฌ์กฐํšŒํ•˜๋ฉด ์บ์‹œ๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฏ€๋กœ **๋…๋ฆฝ์ ์ธ 2์ฐจ ํ™•์ธ์ด ์•„๋‹™๋‹ˆ๋‹ค** โ€” R020 Degraded-Output Re-Verification Gate๊ฐ€ ์š”๊ตฌํ•˜๋Š” "๊ฒฐ์ •๋ก ์  2์ฐจ ์†Œ์Šค"๋กœ ๋™์ผ URL์˜ WebFetch ์žฌํ˜ธ์ถœ์„ ์“ฐ์ง€ ๋ง๊ณ , ๋‹ค๋ฅธ ์†Œ์Šค๋‚˜ CLI ์‹ค์ธก(`npm view`, `gh`)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
47
+ > **v2.1.233+ (์ •์ •: v2.1.239์—์„œ ์‹ค์ œ๋กœ ๋ณด์žฅ๋จ)**: `WebFetch`์˜ ์„ธ์…˜ URL ์บ์‹œ TTL์ด `CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`๋กœ ์กฐ์ • ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค(๊ธฐ๋ณธ 15๋ถ„ โ€” **๋‹จ, v2.1.239 ์ด์ „์—๋Š” ์ด 15๋ถ„์ด ์ง€์ผœ์ง€์ง€ ์•Š๊ณ  ๋งŒ๋ฃŒ๋œ ์ฝ˜ํ…์ธ ๊ฐ€ ์„ธ์…˜ ์ „์ฒด ๋™์•ˆ ๋ฉ”๋ชจ๋ฆฌ์— ๋‚จ์•„์žˆ์—ˆ์Šต๋‹ˆ๋‹ค**. v2.1.239๊ฐ€ ์ด ๊ฒฐํ•จ์„ ์ˆ˜์ •ํ•ด ์ด์ œ์•ผ 15๋ถ„ TTL์ด ์‹ค์ œ๋กœ ๋ณด์žฅ๋ฉ๋‹ˆ๋‹ค). **์žฌํ™•์ธ ํ•จ์ •**: ๊ฐ™์€ URL์„ TTL ๋‚ด ์žฌ์กฐํšŒํ•˜๋ฉด ์บ์‹œ๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฏ€๋กœ **๋…๋ฆฝ์ ์ธ 2์ฐจ ํ™•์ธ์ด ์•„๋‹™๋‹ˆ๋‹ค** โ€” R020 Degraded-Output Re-Verification Gate๊ฐ€ ์š”๊ตฌํ•˜๋Š” "๊ฒฐ์ •๋ก ์  2์ฐจ ์†Œ์Šค"๋กœ ๋™์ผ URL์˜ WebFetch ์žฌํ˜ธ์ถœ์„ ์“ฐ์ง€ ๋ง๊ณ , ๋‹ค๋ฅธ ์†Œ์Šค๋‚˜ CLI ์‹ค์ธก(`npm view`, `gh`)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. **ํšŒ๊ณ ์  ํ•จ์˜**: v2.1.239 ์ด์ „ ์„ธ์…˜์—์„œ๋Š” ์ด ์žฌํ™•์ธ ํ•จ์ •์ด "TTL 15๋ถ„ ์ด๋‚ด"๊ฐ€ ์•„๋‹ˆ๋ผ **์„ธ์…˜ ๋‚ด๋‚ด** ์œ ํšจํ–ˆ์œผ๋ฏ€๋กœ, ๊ทธ ์‹œ๊ธฐ์˜ WebFetch ์žฌ์กฐํšŒ ๊ธฐ๋ฐ˜ ํŒ๋‹จ์€ 15๋ถ„๋ณด๋‹ค ํ›จ์”ฌ ์˜ค๋ž˜๋œ stale ๋ฐ์ดํ„ฐ์— ์˜์กดํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
46
48
 
47
49
  > **v2.1.224+**: mid-turn์— ์—ฐ๊ฒฐ๋œ MCP ๋„๊ตฌ๊ฐ€ **์ด๋ฆ„ ๊ณ ์ง€ ์—†์ด** tool search๋กœ deferred๋˜๋˜ ๊ฒฐํ•จ์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๋ฒ„์ „์—์„œ๋Š” ์„ธ์…˜ ๋„์ค‘ ๋ถ™์€ MCP ์„œ๋ฒ„์˜ ๋„๊ตฌ๊ฐ€ ์ด๋ฆ„์กฐ์ฐจ ๋…ธ์ถœ๋˜์ง€ ์•Š์•„ "๊ทธ๋Ÿฐ ๋„๊ตฌ ์—†์Œ"์œผ๋กœ ์˜คํŒํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฏ€๋กœ, ์œ„ tool-availability ์ฃผ์˜(`command -v` ์‚ฌ์ „ ํ™•์ธ๊ณผ ๋™๋ฅ˜)๋ฅผ MCP ๋„๊ตฌ์—๋„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค โ€” ๋„๊ตฌ ๋ถ€์žฌ ๊ฒฐ๋ก  ์ „์— `ToolSearch`๋กœ ์‹ค์ธกํ•ฉ๋‹ˆ๋‹ค.
48
50
 
@@ -15,6 +15,8 @@ model: sonnet # CC-native alias (Tier 1) or full model ID (Tier 2)
15
15
  tools: [Read, Write, ...] # Allowed tools
16
16
  ```
17
17
 
18
+ > **v2.1.239+**: `.md` ํŒŒ์ผ์ด UTF-8 BOM์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” agent/skill/command ํŒŒ์ผ์ด **์กฐ์šฉํžˆ ๋ฌด์‹œ**๋˜๋˜ ๊ฒฐํ•จ์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๋ฒ„์ „์—์„œ๋Š” BOM์ด ์žˆ๋Š” `.claude/agents/*.md`, `.claude/skills/*/SKILL.md`๊ฐ€ ์—๋Ÿฌ ์—†์ด ๋กœ๋“œ์—์„œ ๋ˆ„๋ฝ๋์Šต๋‹ˆ๋‹ค โ€” "์—์ด์ „ํŠธ/์Šคํ‚ฌ์ด ์—†๋‹ค"๋Š” ๊ด€์ธก์ด ์‹ค์ œ๋กœ๋Š” "BOM ๋•Œ๋ฌธ์— ๋ฌด์Œ ์Šคํ‚ต"์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. R017 Count Sync๊ฐ€ ์‹ค์ธกํ•˜๋Š” ์นด์šดํŠธ๋Š” ํŒŒ์ผ **์กด์žฌ**๋ฅผ ์„ธ์ง€๋งŒ, BOM ํŒŒ์ผ์€ CC๊ฐ€ ์‹ค์ œ๋กœ **๋กœ๋“œํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ** ๊ตฌ๋ฒ„์ „์—์„œ๋Š” ์นด์šดํŠธ์™€ ์‹ค์ œ ๋กœ๋“œ๋œ ์—์ด์ „ํŠธ/์Šคํ‚ฌ ์ˆ˜๊ฐ€ ์–ด๊ธ‹๋‚  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(cross-ref R017 Count Sync).
19
+
18
20
  <!-- ARCHIVED CC version note (historical):
19
21
  > **v2.1.208+**: The Agent tool no longer launches with no tools when a subagent's `tools:` list resolves to nothing โ€” it now returns a clear error naming the unrecognized entries, catching frontmatter `tools:` typos that previously failed silently.
20
22
  -->
@@ -66,10 +68,14 @@ Skill/rule text instructing "spawn with `model: opus`" refers to this tier โ€” a
66
68
 
67
69
  > **v2.1.223+**: workflow agent ยท forked skill ยท slash command ยท ์žฌ๊ฐœ๋œ background agent๊ฐ€ **์š”์ฒญํ•œ subagent ๋ชจ๋ธ์ด ์ œํ•œ๋˜์–ด parent model๋กœ ์‹คํ–‰๋  ๋•Œ ๊ฒฝ๊ณ ๊ฐ€ ํ‘œ์‹œ**๋ฉ๋‹ˆ๋‹ค. ์œ„ v2.1.222 org step-down ๋…ธํŠธ์˜ ์ง์ ‘ ์—ฐ์žฅ์„ ์œผ๋กœ, ์ด์ „์—๋Š” ์ด ๊ฐ•๋“ฑ์ด **๋ฌด์Œ**์ด์—ˆ์Šต๋‹ˆ๋‹ค โ€” ์ฆ‰ "`model: opus`๋กœ ์Šคํฐํ–ˆ๋‹ค"๋Š” ๊ธฐ๋ก์ด ์‹ค์ œ ์‹คํ–‰ ๋ชจ๋ธ์˜ ์ฆ๊ฑฐ๊ฐ€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ๋ชจ๋ธ์„ ํ™•์ •ํ•˜๋ ค๋ฉด frontmatter Tier-2 full ID๋ฅผ ์“ฐ๊ณ , ์‹คํ–‰ ๋ชจ๋ธ์€ ๊ฒฝ๊ณ  ํ‘œ์‹œ ์œ ๋ฌด๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(R020 "attempt โ‰  outcome"์˜ ๋ชจ๋ธ ์„ ํƒ ๊ฐ๋„).
68
70
 
71
+ > **v2.1.247+**: sub-agent๊ฐ€ ์ฒซ ํ˜ธ์ถœ์—์„œ model 404(์ธ์‹ ๋ถˆ๊ฐ€ model ID)๋ฅผ ๋งŒ๋‚˜๋ฉด ์ฃฝ๋˜ ๊ฒฐํ•จ์ด ์ˆ˜์ •๋˜์–ด, ์ด์ œ ์„ธ์…˜์˜ fallback model chain์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋ชจ ์„ธ์…˜์— ์ „๋‹ฌ๋˜๋Š” ์—๋Ÿฌ์—๋„ error type/status/request id/model์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์œ„ v2.1.233 print๋ชจ๋“œ `unrecognized_model` ์ง„๋‹จ ๋…ธํŠธ๊ฐ€ ๊ด€์ธก์„ฑ๋งŒ ๋‹ค๋ค˜๋‹ค๋ฉด, ์ด ์ˆ˜์ •์€ **์‹คํ–‰ ์—ฐ์†์„ฑ**์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค โ€” ๊ตฌ๋ฒ„์ „์—์„œ๋Š” ์„œ๋ธŒ์—์ด์ „ํŠธ ๋ชจ๋ธ ํ•ด์„ ์‹คํŒจ๊ฐ€ fallback ์—†์ด ๊ทธ๋Œ€๋กœ ์ฃฝ์Œ์œผ๋กœ ์ด์–ด์กŒ์Šต๋‹ˆ๋‹ค.
72
+
69
73
  > **v2.1.233+**: print ๋ชจ๋“œ(`-p`) ์ง„๋‹จ์ด ์ถ”๊ฐ€๋˜์–ด, Claude Code๊ฐ€ **์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๋Š” model ID**๋กœ ์š”์ฒญ์ด ๋‚˜๊ฐ€๋ฉด stderr์— `[claude-code:unrecognized_model]` ๋ผ์ธ์ด ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค(`modelOverrides`๋กœ ๋งคํ•‘ํ•˜๋ฉด ์–ต์ œ). ๊ตฌ๋ฒ„์ „์—์„œ๋Š” ์˜คํƒ€ยทํ๊ธฐ๋œ full ID๊ฐ€ **๋ฌด์Œ์œผ๋กœ fallback ํ•ด์„**๋˜์–ด "frontmatter์— ์ ํžŒ ๋ชจ๋ธ = ์‹ค์ œ ์‹คํ–‰ ๋ชจ๋ธ"์ด๋ผ๋Š” ์ „์ œ๊ฐ€ ๊ฒ€์ฆ ๋ถˆ๊ฐ€๋Šฅํ–ˆ์Šต๋‹ˆ๋‹ค โ€” ์œ„ v2.1.223 ๊ฐ•๋“ฑ ๊ฒฝ๊ณ ์™€ ๊ฐ™์€ ๊ณ„์—ด์˜ **๊ด€์ธก์„ฑ ๋ณด๊ฐ•**์ด๋ฉฐ, ์ด ์ €์žฅ์†Œ๋Š” ๋‹ค์ˆ˜ ์—์ด์ „ํŠธ๊ฐ€ Tier-2 full ID๋ฅผ ์“ฐ๋ฏ€๋กœ `-p` ์‹คํ–‰ ์‹œ ์ด ๋ผ์ธ ์œ ๋ฌด๊ฐ€ model ID ์œ ํšจ์„ฑ์˜ ๊ฒฐ์ •๋ก ์  ์ฆ๊ฑฐ์ž…๋‹ˆ๋‹ค(R020 "attempt โ‰  outcome"). ๋ฌด์ธ ๋ฃจํ”„(`/fsd`)์˜ stderr๋ฅผ ๋ฒ„๋ฆฌ๋ฉด ์ด ์‹ ํ˜ธ๋„ ํ•จ๊ป˜ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.
70
74
 
71
75
  > **v2.1.223+**: `CLAUDE_CODE_DISABLE_1M_CONTEXT`๊ฐ€ **native 1M ์ฐฝ์„ ๊ฐ€์ง„ ๋ชจ๋“  Claude ๋ชจ๋ธ**์„ auto-compaction์œผ๋กœ 200K์— ์œ ์ง€ํ•˜๋„๋ก ํ™•๋Œ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์ด์ „์—๋Š” ๊ณ ์ • ๋ชจ๋ธ ๋ชฉ๋ก). ๋ฏธ์ธ์‹ model ID๋„ ๊ฐ€์ • ์ปจํ…์ŠคํŠธ ์ฐฝ ๋‚ด๋กœ ์œ ์ง€๋˜๋ฉฐ `CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1`๋กœ ๋ณต์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„ Tier-2 ํ‘œ์˜ `claude-sonnet-5`/`claude-opus-5`(native 1M)์™€ `[1m]` ์ ‘๋ฏธ์‚ฌ๋Š” ์ด env๊ฐ€ ์„ค์ •๋œ ํ™˜๊ฒฝ์—์„œ **์‹คํšจ 200K๋กœ ๋™์ž‘**ํ•˜๋ฏ€๋กœ, 1M ์ „์ œ์˜ ๋Œ€์šฉ๋Ÿ‰ ์ปจํ…์ŠคํŠธ ์œ„์ž„ ์ „์— env ์„ค์ • ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค(cross-ref R013 context budget).
72
76
 
77
+ > **v2.1.251+**: `CLAUDE_CODE_SUBAGENT_MODEL`์ด ์ด์ œ "๋ชจ๋“  ๊ฒƒ์„ override"๊ฐ€ ์•„๋‹ˆ๋ผ **๊ธฐ๋ณธ subagent ๋ชจ๋ธ๋งŒ ์„ค์ •**ํ•ฉ๋‹ˆ๋‹ค โ€” ์—์ด์ „ํŠธ ์ •์˜์˜ `model:`(Tier 1/2)๊ณผ spawn ์‹œ์  ๋ช…์‹œ์  `model`(Tier 3)์ด ์ด env๋ณด๋‹ค **์šฐ์„ **ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ €์žฅ์†Œ๋Š” ๋‹ค์ˆ˜ ์—์ด์ „ํŠธ๊ฐ€ Tier-2 full ID๋กœ model์„ pinํ•˜๋ฏ€๋กœ, v2.1.251๋ถ€ํ„ฐ๋Š” ์ด env var๊ฐ€ project์˜ model pin์„ ๋” ์ด์ƒ ๊นจ๋œจ๋ฆด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(๋‹จ, ์ด์ „ ๋ฒ„์ „์—์„œ ์‹คํ–‰๋œ ์„ธ์…˜์€ ์—ฌ์ „ํžˆ ์˜ํ–ฅ๋ฐ›์•˜์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).
78
+
73
79
  > **Claude Fable 5 (access via CC v2.1.170+)**: Mythos-class model, GA on the Claude API and positioned as a tier above Opus โ€” its capabilities exceed any previously GA model. CC v2.1.170 is the client version that adds access (the model's GA is an API/platform property, not a CC-release milestone). Available via frontmatter full ID `claude-fable-5` (Tier 2) or Agent tool `model: fable` (Tier 3) โ€” NOT via a Tier-1 frontmatter alias. Reserve for the most complex reasoning where its capability premium is warranted; `sonnet` remains the default for general tasks and `opus` for architecture (cost/latency awareness, R005). CC v2.1.170 also fixes session transcripts not saving (and not appearing in `--resume`) when launched from a VS Code integrated terminal or any shell inheriting Claude Code env vars โ€” relevant to transcript-dependent skills (`homework`, `episodic-memory`). Closes #1352.
74
80
 
75
81
  <!-- ARCHIVED CC version notes (historical):
@@ -77,7 +83,7 @@ Skill/rule text instructing "spawn with `model: opus`" refers to this tier โ€” a
77
83
 
78
84
  > **v2.1.197+**: Claude Sonnet 5๊ฐ€ Claude Code์˜ **๊ธฐ๋ณธ ๋ชจ๋ธ**๋กœ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค โ€” ๋„ค์ดํ‹ฐ๋ธŒ 1M-token ์ปจํ…์ŠคํŠธ, ํ”„๋กœ๋ชจ์…˜ ๊ฐ€๊ฒฉ $2/$10 per Mtok(2026-08-31๊นŒ์ง€). frontmatter์—์„œ ๋ช…์‹œ opt-inํ•˜๋ ค๋ฉด Tier-2 full ID `claude-sonnet-5`๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(`sonnet5`๋Š” ์–ด๋А ๊ณ„์ธต์—์„œ๋„ ์œ ํšจํ•œ ๊ฐ’์ด ์•„๋‹˜ โ€” ์œ„ 3-Tier ๊ตฌ๋ถ„ ์ฐธ์กฐ). **์ •์ •(์‹ค์ธก)**: ์ด ์กฐํ•ญ์ด ์ด์ „์— "oh-my-customcode์˜ base `sonnet` alias๋Š” ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด `claude-sonnet-4-6`์— ๊ณ ์ • ์œ ์ง€"๋ผ๊ณ  ์„œ์ˆ ํ–ˆ์œผ๋‚˜ ์‚ฌ์‹ค์ด ์•„๋‹ˆ๋‹ค โ€” `sonnet` alias ํ•ด์„ ์ฃผ์ฒด๋Š” CC์ด๋ฉฐ ํ”„๋กœ์ ํŠธ๊ฐ€ pinํ•  ์ˆ˜ ์—†๋‹ค(Tier 1 ์ฐธ์กฐ); frontmatter `model: sonnet` ์—์ด์ „ํŠธ๊ฐ€ ์‹ค์ธก์ƒ `claude-sonnet-5`๋กœ ์‹คํ–‰๋˜์—ˆ๋‹ค. Sonnet 5๊ฐ€ CC ์‹ ๊ทœ ๊ธฐ๋ณธ๊ฐ’์ด๋ฏ€๋กœ ๋ช…์‹œ ๋ชจ๋ธ ์—†๋Š” ์„ธ์…˜์€ ์ด์ œ Sonnet 5์—์„œ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.
79
85
 
80
- > **v2.1.201+**: Claude Sonnet 5 ์„ธ์…˜์ด harness reminder๋ฅผ mid-conversation system role๋กœ ์ฃผ์ž…ํ•˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค โ€” Sonnet 5 ์‹คํ–‰ ์‹œ ํ•˜๋‹ˆ์Šค ๋ฆฌ๋งˆ์ธ๋”(๊ทœ์น™ ์žฌ์ฃผ์ž… ๋“ฑ) ์ „๋‹ฌ ๋ฐฉ์‹์ด ์กฐ์ •๋˜์—ˆ์œผ๋ฉฐ, PostCompact ๊ทœ์น™ ์žฌ์ฃผ์ž…(R021)ยท์„ธ์…˜ ์—ฐ์†์„ฑ ๋™์ž‘ ์ž์ฒด์—๋Š” ์˜ํ–ฅ์ด ์—†์Šต๋‹ˆ๋‹ค. Sonnet 5๊ฐ€ CC ๊ธฐ๋ณธ ๋ชจ๋ธ(v2.1.197+)์ด๋ฏ€๋กœ ๋ช…์‹œ ๋ชจ๋ธ ์—†๋Š” ์„ธ์…˜์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
86
+ <!-- RETIRED (์€ํ‡ด ๋ฆด๋ฆฌ์ฆˆ v1.1.50, ๋ณด์กด ๊ธฐ์ค€ v2.1.230 ๋ฏธ๋งŒ): > **v2.1.201+**: Claude Sonnet 5 ์„ธ์…˜์ด harness reminder๋ฅผ mid-conversation system role๋กœ ์ฃผ์ž…ํ•˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค โ€” Sonnet 5 ์‹คํ–‰ ์‹œ ํ•˜๋‹ˆ์Šค ๋ฆฌ๋งˆ์ธ๋”(๊ทœ์น™ ์žฌ์ฃผ์ž… ๋“ฑ) ์ „๋‹ฌ ๋ฐฉ์‹์ด ์กฐ์ •๋˜์—ˆ์œผ๋ฉฐ, PostCompact ๊ทœ์น™ ์žฌ์ฃผ์ž…(R021)ยท์„ธ์…˜ ์—ฐ์†์„ฑ ๋™์ž‘ ์ž์ฒด์—๋Š” ์˜ํ–ฅ์ด ์—†์Šต๋‹ˆ๋‹ค. Sonnet 5๊ฐ€ CC ๊ธฐ๋ณธ ๋ชจ๋ธ(v2.1.197+)์ด๋ฏ€๋กœ ๋ช…์‹œ ๋ชจ๋ธ ์—†๋Š” ์„ธ์…˜์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. -->
81
87
  -->
82
88
 
83
89
  > **Fable 5 Effort ์ „๋žต**: Fable 5๋Š” **high effort๊ฐ€ ๊ธฐ๋ณธ๊ฐ’**์ด๋ฉฐ, `xhigh`๋Š” capability-sensitive ์ž‘์—…(์ตœ๊ณ ๋‚œ๋„ ์•„ํ‚คํ…์ฒ˜/์ถ”๋ก )์— ํ•œ์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Fable 5์˜ `low`/`medium` effort์กฐ์ฐจ ์ด์ „ ์„ธ๋Œ€ ๋ชจ๋ธ์˜ `xhigh`๋ฅผ ์ƒํšŒํ•˜๋Š” ํ’ˆ์งˆ์„ ๋ณด์ด๋ฏ€๋กœ, Fable 5๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‹คํ–‰ ์—์ด์ „ํŠธ๋Š” `effort` ํ•„๋“œ๋ฅผ ์‹ ์ค‘ํžˆ ๋ช…์‹œํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ `xhigh` ๋‚จ์šฉ์„ ์ง€์–‘ํ•ฉ๋‹ˆ๋‹ค(R005 ๋น„์šฉ/์ง€์—ฐ ์ธ์‹๊ณผ ์ •ํ•ฉ).
@@ -126,7 +132,7 @@ This is a settings-level resilience mechanism, distinct from the per-agent `mode
126
132
 
127
133
  ### Optional Frontmatter
128
134
 
129
- Key optional fields: `memory`, `effort`, `skills`, `soul`, `isolation`, `background`, `maxTurns`, `maxTokens`, `mcpServers`, `hooks`, `permissionMode`, `disallowedTools`, `limitations`, `domain`, `disableSkillShellExecution`. Supported since CC v2.1.63+. See full optional frontmatter via Read tool.
135
+ Key optional fields: `memory`, `effort`, `skills`, `soul`, `isolation`, `background`, `maxTurns`, `maxTokens`, `mcpServers`, `hooks`, `permissionMode`, `disallowedTools`, `limitations`, `domain`, `disableSkillShellExecution`, `experimental.cacheTtl` (v2.1.248+). Supported since CC v2.1.63+. See full optional frontmatter via Read tool.
130
136
 
131
137
  ### Note on `skills:` field
132
138
 
@@ -167,6 +173,8 @@ limitations: # Negative capability declarations
167
173
  - "cannot modify code"
168
174
  domain: backend # backend | frontend | data-engineering | devops | universal
169
175
  disableSkillShellExecution: true # Disable inline shell execution in skills (v2.1.91+)
176
+ experimental:
177
+ cacheTtl: "5m" # "5m" | "1h" โ€” subagent prompt cache TTL when not otherwise set (v2.1.248+)
170
178
  ```
171
179
 
172
180
  > **Note**: When `disableSkillShellExecution` is enabled (v2.1.91+), skills that rely on inline shell execution (e.g., `rtk-exec`) will have their shell blocks disabled. This is a security hardening option.
@@ -181,7 +189,8 @@ Hook JSON output `terminalSequence` field for desktop notifications, window titl
181
189
 
182
190
  ## Hook Event Types
183
191
 
184
- 31 event types supported: SessionStart, Setup, UserPromptSubmit, UserPromptExpansion, PreToolUse, PermissionRequest, PermissionDenied, PostToolUse, PostToolUseFailure, PostToolBatch, Notification, MessageDisplay, SubagentStart, SubagentStop, TaskCreated, TaskCompleted, Stop, StopFailure, TeammateIdle, InstructionsLoaded, ConfigChange, CwdChanged, DirectoryAdded, FileChanged, WorktreeCreate, WorktreeRemove, PreCompact, PostCompact, Elicitation, ElicitationResult, SessionEnd. 4 handler types: command, prompt, http, agent. See full reference table via Read tool.
192
+ 33 event types supported: SessionStart, Setup, UserPromptSubmit, UserPromptExpansion, PreToolUse, PermissionRequest, PermissionDenied, PostToolUse, PostToolUseFailure, PostToolBatch, Notification, MessageDisplay, SubagentStart, SubagentStop, TaskCreated, TaskCompleted, Stop, StopFailure, TeammateIdle, InstructionsLoaded, ConfigChange, CwdChanged, DirectoryAdded, FileChanged, WorktreeCreate, WorktreeRemove, PreCompact, PostCompact, Elicitation, ElicitationResult, SessionEnd, PreModelSwitch, PostModelSwitch (v2.1.251+). 4 handler types: command, prompt, http, agent. See full reference table via Read tool.
193
+ > **v2.1.251+**: ์‹ ๊ทœ ํ›… ์ด๋ฒคํŠธ `PreModelSwitch`/`PostModelSwitch`๊ฐ€ ์ถ”๊ฐ€๋˜์–ด model switch๋ฅผ block/confirm/annotateํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ `SessionStart` resume ํ›…์ด ์ด์ œ session staleness์™€ ์˜ˆ์ƒ re-cache ๋น„์šฉ์„ ์ธ์ž๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค.
185
194
 
186
195
  > **`MessageDisplay`๋Š” ํ‘œ์‹œ ์ „์šฉ โ€” `additionalContext` ๋ฏธ์ง€์›**: `MessageDisplay`๋Š” `hookSpecificOutput.displayContent`๋กœ **ํ™”๋ฉด ํ‘œ์‹œ ํ…์ŠคํŠธ๋งŒ** ๊ต์ฒดํ•˜๋ฉฐ, ํŠธ๋žœ์Šคํฌ๋ฆฝํŠธ์™€ Claude๊ฐ€ ๋ณด๋Š” ๋‚ด์šฉ์€ ์›๋ณธ์ด ์œ ์ง€๋œ๋‹ค. ๋”ฐ๋ผ์„œ advisory ํ›…์„ `MessageDisplay`์— ๋ฐฐ์„ ํ•˜๋ฉด **๋ชจ๋ธ์— ๋„๋‹ฌํ•˜์ง€ ์•Š๋Š”๋‹ค**. `additionalContext`(๋ชจ๋ธ ์ปจํ…์ŠคํŠธ ์ฃผ์ž…)๋ฅผ ์ง€์›ํ•˜๋Š” ์ด๋ฒคํŠธ๋Š” SessionStart, Setup, SubagentStart, UserPromptSubmit, UserPromptExpansion, PreToolUse, PostToolUse, PostToolUseFailure, PostToolBatch, Stop, SubagentStop์ด๋‹ค. (์ด์ „ ํŒ์ด ๋‚˜์—ดํ•˜๋˜ `PostMessage`๋Š” ๋ฌธ์„œํ™”๋œ ์ด๋ฒคํŠธ๊ฐ€ ์•„๋‹ˆ๋‹ค โ€” ์‹ค์ œ ์ด๋ฒคํŠธ๋ช…์€ `MessageDisplay`.)
187
196
 
@@ -277,7 +286,7 @@ Agent frontmatter `hooks:` now fire when the agent runs as a main-thread agent v
277
286
  -->
278
287
 
279
288
  <!-- ARCHIVED CC version note (historical):
280
- > **v2.1.204+**: headless ์„ธ์…˜์˜ SessionStart hook ์ค‘ hook ์ด๋ฒคํŠธ๊ฐ€ ์ŠคํŠธ๋ฆฌ๋ฐ๋˜์ง€ ์•Š์•„ remote worker๊ฐ€ hook ๋„์ค‘ idle-reap๋˜๋˜ ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Hook Event Types/SessionStart ๊ด€๋ จ.
289
+ <!-- RETIRED (์€ํ‡ด ๋ฆด๋ฆฌ์ฆˆ v1.1.50, ๋ณด์กด ๊ธฐ์ค€ v2.1.230 ๋ฏธ๋งŒ): > **v2.1.204+**: headless ์„ธ์…˜์˜ SessionStart hook ์ค‘ hook ์ด๋ฒคํŠธ๊ฐ€ ์ŠคํŠธ๋ฆฌ๋ฐ๋˜์ง€ ์•Š์•„ remote worker๊ฐ€ hook ๋„์ค‘ idle-reap๋˜๋˜ ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Hook Event Types/SessionStart ๊ด€๋ จ. -->
281
290
  -->
282
291
 
283
292
  ## Permission Mode Guidance
@@ -411,6 +411,25 @@ Cross-reference: R020 ("actual outcome โ‰  attempt" โ€” verifying that a command
411
411
 
412
412
  > **v2.1.222+**: `SendMessage`๊ฐ€ ๊ธด summary๋ฅผ ๋ฌธ์ž ์ˆ˜ ์ œํ•œ์œผ๋กœ ๊ฑฐ๋ถ€ํ•˜๋˜ ๋™์ž‘์ด **์ ˆ๋‹จ(truncate)**์œผ๋กœ ๋ณ€๊ฒฝ๋˜์–ด ์ „์†ก์ด ์‹คํŒจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ „์†ก ์‹คํŒจ๊ฐ€ ์‚ฌ๋ผ์ง„ ๋Œ€์‹  **์กฐ์šฉํ•œ ์ ˆ๋‹จ**์ด๋ผ๋Š” ์ƒˆ ์‹คํŒจ ๋ชจ๋“œ๊ฐ€ ์ƒ๊ฒผ์œผ๋ฏ€๋กœ, ์œ„ ํ‘œ์˜ "SendMessage report = Low reliability" ์›์น™์ด ์˜คํžˆ๋ ค ๊ฐ•ํ™”๋ฉ๋‹ˆ๋‹ค. ๊ธด ๋ณด๊ณ ๊ฐ€ ํ•„์š”ํ•˜๋ฉด SendMessage ๋ณธ๋ฌธ ๋Œ€์‹  ์•„ํ‹ฐํŒฉํŠธ ํŒŒ์ผ ๊ฒฝ๋กœ ์ „๋‹ฌ(R006 Artifact Channel Protocol)๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.
413
413
 
414
+ > **โ˜…โ˜… v2.1.246+**: `maxTurns` ํ•œ๋„์— ๋„๋‹ฌํ•ด ๋ฉˆ์ถ˜ ์„œ๋ธŒ์—์ด์ „ํŠธ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ด์ œ **partial๋กœ ํ‘œ์‹œ**๋˜๊ณ  `SendMessage`๋กœ ์ด์–ด๊ฐ€๋ผ๋Š” ํžŒํŠธ๊ฐ€ ๋ถ™์Šต๋‹ˆ๋‹ค โ€” **์ด์ „์—๋Š” ์™„๋ฃŒ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค.**
415
+ >
416
+ > **ํ™•์ •๋œ ๊ฒƒ (v1.1.50 ์„ธ์…˜ ์‹ค์ธก)**: `maxTurns` ์ ˆ๋‹จ์€ R020 ใ€ŒVerification-Delegation Non-Terminationใ€์ด ๋ˆ„์  14ํšŒ๋กœ ๊ธฐ๋กํ•œ "์„œ๋ธŒ์—์ด์ „ํŠธ๊ฐ€ ํŒ์ • ์—†์ด turn์„ ์ข…๋ฃŒ" ์ฆ์ƒ์˜ **์‹ค์žฌํ•˜๋Š” ์›์ธ ์ค‘ ํ•˜๋‚˜**๋‹ค โ€” ๋” ์ด์ƒ ๊ฐ€์„ค์ด ์•„๋‹ˆ๋‹ค. v1.1.50 ๋ฆด๋ฆฌ์ฆˆ ์„ธ์…˜์—์„œ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๊ฐ€ 4๊ฐœ ๊ทธ๋ฃน์„ ๋ณ‘๋ ฌ ์œ„์ž„ํ–ˆ๊ณ , ๊ทธ์ค‘ **3๊ฐœ ๊ทธ๋ฃน์ด 20ํ„ด `maxTurns` ํ•œ๋„๋กœ ์ ˆ๋‹จ**๋˜์–ด ํ†ต์ง€์— `stopped at its 20-turn limit (partial result)`์ด ๋ช…์‹œ๋๋‹ค:
417
+ > - ํ•œ ๊ฑด์€ ๋ฌธ์žฅ ์ค‘๊ฐ„์—์„œ ์ ˆ๋‹จ(์ง„ํ–‰๋„ ๋ถˆ๋ช… โ€” ์‹ค์ธก ํ•„์š”).
418
+ > - ๋‹ค๋ฅธ ํ•œ ๊ฑด์€ "Templates ๋ฏธ๋Ÿฌ๋ฅผ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค" ์งํ›„ ์ ˆ๋‹จ โ€” ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๋Š” ์ด ๋ฌธ๊ตฌ๋กœ **๋ฏธ์‹คํ–‰**์„ ์ถ”์ •ํ–ˆ์œผ๋‚˜, ์žฌ๊ฐœ ํ›„ ์‹ค์ธก ๊ฒฐ๊ณผ ์ž‘์—…์€ **์ด๋ฏธ ์™„๋ฃŒ๋ผ ์žˆ์—ˆ๋‹ค**. ์ ˆ๋‹จ ์œ„์น˜(๋งˆ์ง€๋ง‰ ์ถœ๋ ฅ ๋ฌธ์žฅ)๋กœ๋ถ€ํ„ฐ ์ง„ํ–‰๋„๋ฅผ ์ถ”๋ก ํ•˜๋Š” ๊ฒƒ ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•จ์„ ์žฌํ™•์ธํ•œ ์‚ฌ๋ก€๋‹ค โ€” R020 ใ€Œ์ฆ์ƒ๋งŒ์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋„˜๊ฒจ์งš์ง€ ์•Š๋Š”๋‹คใ€์˜ ์„ธ ๋ฐฉํ–ฅ ์ค‘ "(c) ์‹ค์ œ๊ฐ€ ๋ณด๊ณ ๋ณด๋‹ค ์•ž์„ฌ"์˜ ์žฌํ˜„.
419
+ > - ์„ธ ๋ฒˆ์งธ ๊ฑด์€ "Now R020 โ€” three items. Let's find suitable locations."๋ผ๋Š” **๋‹ค์Œ ์ž‘์—… ์˜ˆ๊ณ  ์งํ›„** ์ ˆ๋‹จ โ€” ์ฐฉ์ˆ˜ ์—ฌ๋ถ€์กฐ์ฐจ ๋ฏธ์‹ค์ธก ์ƒํƒœ๋กœ ๋Š๊ฒผ๋‹ค.
420
+ >
421
+ > **v2.1.246 ์ด์ „์ด์—ˆ๋‹ค๋ฉด ์ด partial ํ‘œ์‹œ๊ฐ€ ์—†์–ด ์„ธ ๊ฑด ๋ชจ๋‘ ์™„๋ฃŒ ๋ณด๊ณ ๋กœ ์ฝํ˜”์„ ๊ฒƒ์ด๋‹ค.**
422
+ >
423
+ > **ํ™•์ •๋˜์ง€ ์•Š์€ ๊ฒƒ**: R020์ด ๊ธฐ๋กํ•œ ๊ณผ๊ฑฐ 14ํšŒ ๊ฐ๊ฐ์ด ์ด ์›์ธ์ด์—ˆ๋Š”์ง€๋Š” ๋ฏธ๊ฒ€์ฆ์ด๋‹ค โ€” ์‚ฌ๋ก€๋ณ„ ๊ท€์†์€ turn ์ˆ˜ยท์†Œ์š” ์‹œ๊ฐ„์„ `maxTurns` ํ•œ๋„์™€ ๋Œ€์กฐํ•˜๋Š” ๋ณ„๋„ ๊ฒ€์ฆ์ด ํ•„์š”ํ•˜๋‹ค.
424
+ >
425
+ > **ํ–‰๋™ ํ•จ์˜**: ์ด ์›์ธ์€ R020์˜ clause ๊ฐ•ํ™”("ํŒ์ • ์—†์ด ์ข…๋ฃŒํ•˜์ง€ ๋ง๋ผ")๊ฐ€ 14ํšŒ ๋‚ด๋‚ด ์‹คํŒจํ–ˆ๋˜ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•œ๋‹ค โ€” **์ ˆ๋‹จ ์ฃผ์ฒด๊ฐ€ ์—์ด์ „ํŠธ์˜ ํŒ๋‹จ์ด ์•„๋‹ˆ๋ผ ํ”Œ๋žซํผ์˜ turn ํ•œ๋„์ด๋ฉด, ์—์ด์ „ํŠธ๋ฅผ ํ–ฅํ•œ ์ง€์‹œ๋Š” ์• ์ดˆ์— ๋‹ฟ์ง€ ์•Š๋Š”๋‹ค.** ๋Œ€์นญ์ ์œผ๋กœ R020 ใ€Œ์œ„์ž„ ๊ฒฝ๊ณ„๋ฅผ Phase ๊ฐœ์ˆ˜๋กœ ์„ค๊ณ„ใ€(๋‹จ์ผ ๋ชฉํ‘œ๋กœ ๋ถ„ํ• )๊ฐ€ ํšจ๊ณผ์ ์ด์—ˆ๋˜ ์ด์œ ๋„ ์„ค๋ช…๋œ๋‹ค โ€” ์ž‘์—…์ด ์ž‘์œผ๋ฉด `maxTurns` ์•ˆ์—์„œ ์ž์—ฐํžˆ ๋๋‚˜๊ธฐ ๋•Œ๋ฌธ์ด์ง€, ์—์ด์ „ํŠธ๊ฐ€ ๋” ์ˆœ์ข…์ ์ด์–ด์„œ๊ฐ€ ์•„๋‹ˆ๋‹ค.
426
+ >
427
+ > **๋‚ฎ์ถ”์ง€ ๋ง ๊ฒƒ**: ์›์ธ์ด ํ™•์ •๋๋‹ค๊ณ  ํ•ด์„œ ์œ„ ํ‘œ์˜ ๊ฒฐ์ •๋ก ์  ground-truth ๊ฒ€์ฆ ์›์น™์„ ๋‚ฎ์ถ”์ง€ ์•Š๋Š”๋‹ค โ€” ์ ˆ๋‹จ์ด ์•„๋‹Œ ์›์ธ(์œ„์ž„ ๊ฒฝ๊ณ„ ๋ฏธ๋ถ„ํ• , ์—์ด์ „ํŠธ ์ž์ฒด ํŒ๋‹จ ์ข…๋ฃŒ)๋„ ๊ณ„์† ์กด์žฌํ•œ๋‹ค. ๋˜ํ•œ **partial ํ‘œ์‹œ๋Š” v2.1.246 ์ด์ƒ์—์„œ๋งŒ ๋‚˜ํƒ€๋‚˜๋ฏ€๋กœ**, ๊ทธ ์ด์ „ ๋ฒ„์ „์—์„œ ๊ด€์ธก๋œ mid-step ์ข…๋ฃŒ ์‚ฌ๋ก€๋ฅผ ์žฌํ•ด์„ํ•  ๋•Œ๋Š” ์ด ์‹ ํ˜ธ ์ž์ฒด๊ฐ€ ๋ถ€์žฌํ–ˆ๋‹ค๋Š” ๊ฒƒ์„ ์ „์ œ๋กœ ํ•œ๋‹ค โ€” "partial ํ‘œ์‹œ๊ฐ€ ์—†์—ˆ๋‹ค"๊ฐ€ "maxTurns ์ ˆ๋‹จ์ด ์•„๋‹ˆ์—ˆ๋‹ค"์˜ ์ฆ๊ฑฐ๋Š” ์•„๋‹ˆ๋‹ค.
428
+
429
+ > **v2.1.251+**: Agent Teams ํŒ€์›์˜ ์ตœ์ข… ๋‹ต๋ณ€์ด ํŒ€ ๋ฆฌ๋“œ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ•˜๋˜ ๊ฒฐํ•จ์ด ์ˆ˜์ •๋˜์–ด, ์ด์ œ idle notification์— ์‹ค๋ ค ๋„์ฐฉํ•ฉ๋‹ˆ๋‹ค(์ด์ „์—๋Š” ๋‚ด์šฉ ์—†๋Š” "available" ์•Œ๋ฆผ๋งŒ ๋–ด์Šต๋‹ˆ๋‹ค). ์œ„ v2.1.224 "SendMessage teammate inbox ์“ฐ๊ธฐ ์‹คํŒจ ์‹œ์—๋„ Message sent๋กœ ๋ณด๊ณ " ์ˆ˜์ •์˜ **ํ›„์† ์‹ค์ฆ**์ž…๋‹ˆ๋‹ค โ€” ๊ตฌ๋ฒ„์ „์—์„œ๋Š” ํŒ€์›์ด ์ •์ƒ ์™„๋ฃŒํ•ด๋„ ๋ฆฌ๋“œ๊ฐ€ ๊ทธ ๋‹ต๋ณ€์„ ๋ชป ๋ฐ›์„ ์ˆ˜ ์žˆ์—ˆ์œผ๋ฏ€๋กœ, "๊ฒฐ์ •๋ก ์  ground-truth๋กœ ํ™•์ธ"์ด๋ผ๋Š” ์œ„ ํ‘œ์˜ ์›์น™์ด ์ด ์‹œ์  ์ด์ „ ์„ธ์…˜์—์„œ๋Š” ํŠนํžˆ ์ค‘์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.
430
+
431
+ > **v2.1.234+**: `/config`์˜ "Default teammate model" ์„ค์ •์ด **์ œ๊ฑฐ**๋˜์–ด, agent-team teammate๋Š” ์ด์ œ spawn์ด ๋ชจ๋ธ์„ ์ง€์ •ํ•˜์ง€ ์•Š๋Š” ํ•œ **leader์˜ ๋ชจ๋ธ**์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด์ „์—๋Š” teammate ๋ชจ๋ธ์„ ์ „์—ญ ์„ค์ •๊ฐ’์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฏ€๋กœ, ๊ณผ๊ฑฐ ์„ธ์…˜์˜ "teammate๊ฐ€ ์–ด๋–ค ๋ชจ๋ธ๋กœ ์‹คํ–‰๋๋Š”์ง€" ์„œ์ˆ ์€ ์ด ๋ณ€๊ฒฝ ์ด์ „ ๋ฒ„์ „ ๊ธฐ์ค€์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
432
+
414
433
  <!-- ARCHIVED CC version note (historical):
415
434
  > **CC v2.1.162+**: `claude agents --json` now includes a `waitingFor` field showing what a waiting session is blocked on (e.g. a permission prompt). Use it as an additional deterministic ground-truth signal โ€” a member with a non-empty `waitingFor` is blocked on input (needs unblocking), NOT silently stalled (reassign per stall handling below). This distinguishes the two failure modes the verification is meant to separate.
416
435
 
@@ -126,6 +126,18 @@ Origin: #1443 (Session 126 ํšŒ๊ณ  ์ฐ๋น  #1) โ€” v1.1.3 R017 ๊ฒ€์ฆ์—์„œ mgr-sa
126
126
 
127
127
  Cross-reference: R018 (Member Completion Verification), `feedback_release_delegation_phasing`, `feedback_orchestrator_direct_verify` (release delegation phasing์„ verification ์œ„์ž„์—๋„ ํ™•์žฅ).
128
128
 
129
+ #### maxTurns ์ ˆ๋‹จ ์‹ค์ฆ (Origin: v1.1.50 ์„ธ์…˜)
130
+
131
+ **์‹ค์ธก (v1.1.50 ์„ธ์…˜)**: ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๊ฐ€ 4๊ฐœ ๊ทธ๋ฃน์„ ๋ณ‘๋ ฌ ์œ„์ž„ํ–ˆ๊ณ  **๊ทธ์ค‘ 3๊ฐœ๊ฐ€ 20ํ„ด `maxTurns` ํ•œ๋„๋กœ ์ ˆ๋‹จ**๋๋‹ค. ์„ธ ๊ฑด ๋ชจ๋‘ ํ†ต์ง€์— `stopped at its 20-turn limit (partial result)`์ด ๋ช…์‹œ๋๊ณ  ์ถœ๋ ฅ์ด ์ž‘์—… ์ค‘๊ฐ„์—์„œ ๋Š๊ฒผ๋‹ค โ€” ํ•œ ๊ฑด์€ ๋ฌธ์žฅ ์ค‘๊ฐ„์—์„œ ์ ˆ๋‹จ(์ง„ํ–‰๋„ ๋ถˆ๋ช…, ์‹ค์ธก ํ•„์š”), ํ•œ ๊ฑด์€ "Templates ๋ฏธ๋Ÿฌ๋ฅผ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค"๋ผ๊ณ  ์˜ˆ๊ณ ํ•œ ์งํ›„ ์ ˆ๋‹จ(์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๋Š” ๋ฏธ์‹คํ–‰์œผ๋กœ ์ถ”์ •ํ–ˆ์œผ๋‚˜ **์‹ค์ธก ๊ฒฐ๊ณผ ๋ฏธ๋Ÿฌ ๋™๊ธฐํ™”๊นŒ์ง€ ์ด๋ฏธ ์™„๋ฃŒ**๋ผ ์žˆ์—ˆ๋‹ค โ€” ์œ„ ใ€Œ์ฆ์ƒ๋งŒ์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋„˜๊ฒจ์งš์ง€ ์•Š๋Š”๋‹คใ€์˜ "(c) ์‹ค์ œ๊ฐ€ ๋ณด๊ณ ๋ณด๋‹ค ์•ž์„ฌ" ์žฌํ˜„), ํ•œ ๊ฑด์€ "Now R020 โ€” three items"๋ผ๊ณ  ๋‹ค์Œ ์ž‘์—…์„ ์˜ˆ๊ณ ํ•œ ์งํ›„ ์ ˆ๋‹จ(์‹ค์ธก ๊ฒฐ๊ณผ **ํŽธ์ง‘์€ ์™„๋ฃŒ, ๊ฒ€์ฆ๋งŒ ๋ฏธ์ˆ˜ํ–‰** ์ƒํƒœ์˜€๋‹ค). ์„ธ ๊ฑด ๋ชจ๋‘ **์ ˆ๋‹จ ์œ„์น˜ ๋ฌธ์žฅ๊ณผ ์‹ค์ œ ์ง„ํ–‰๋„๊ฐ€ ์–ด๊ธ‹๋‚ฌ๋‹ค** โ€” ์ด๊ฒƒ์ด ์ด ์‹ค์ฆ์˜ ํ•ต์‹ฌ์ด๋‹ค.
132
+
133
+ 1. **ํ™•์ •**: `maxTurns` ์ ˆ๋‹จ์€ ์ด ์กฐํ•ญ์ด ๋ˆ„์  14ํšŒ๋กœ ๊ธฐ๋กํ•œ "ํŒ์ • ์—†์ด ์ข…๋ฃŒ" ์ฆ์ƒ์˜ **์‹ค์žฌํ•˜๋Š” ์›์ธ ์ค‘ ํ•˜๋‚˜**๋‹ค. CC v2.1.246๋ถ€ํ„ฐ partial๋กœ ํ‘œ์‹œ๋˜๋ฏ€๋กœ ์ด์ œ **๊ด€์ธก ๊ฐ€๋Šฅ**ํ•˜๋‹ค(๊ทธ ์ด์ „์—๋Š” ์™„๋ฃŒ๋กœ ๋ณด์˜€๋‹ค โ€” R018 v2.1.246 ๋…ธํŠธ ๊ต์ฐจ์ฐธ์กฐ).
134
+ 2. **๋ฏธํ™•์ •**: ๊ณผ๊ฑฐ 14ํšŒ **๊ฐ๊ฐ**์ด ์ด ์›์ธ์ด์—ˆ๋Š”์ง€๋Š” ๋ฏธ๊ฒ€์ฆ์ด๋‹ค. ์‚ฌ๋ก€๋ณ„ ๊ท€์†์—๋Š” turn ์ˆ˜ยท์†Œ์š” ์‹œ๊ฐ„ ๋Œ€์กฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
135
+ 3. **์„ค๋ช…๋ ฅ**: ์ด๊ฒƒ์€ **์™œ clause ๊ฐ•ํ™”๊ฐ€ 14ํšŒ ๋‚ด๋‚ด ์‹คํŒจํ–ˆ๋Š”์ง€**๋ฅผ ์„ค๋ช…ํ•œ๋‹ค โ€” ์—์ด์ „ํŠธ์—๊ฒŒ "์ข…๋ฃŒํ•˜์ง€ ๋ง๋ผ"๊ณ  ์ง€์‹œํ•ด๋„ **์ ˆ๋‹จ ์ฃผ์ฒด๊ฐ€ ์—์ด์ „ํŠธ๊ฐ€ ์•„๋‹ˆ๋ฉด ์ง€์‹œ๊ฐ€ ๋‹ฟ์ง€ ์•Š๋Š”๋‹ค**. ์—ญ์œผ๋กœ ใ€Œ์œ„์ž„ ๊ฒฝ๊ณ„๋ฅผ Phase ๊ฐœ์ˆ˜๋กœ ์„ค๊ณ„ใ€๊ฐ€ ํšจ๊ณผ์ ์ด์—ˆ๋˜ ์ด์œ ๋„ ์„ค๋ช…๋œ๋‹ค: ์ž‘์—…์ด ์ž‘์œผ๋ฉด ํ„ด ํ•œ๋„ ์•ˆ์— ๋๋‚˜๊ธฐ ๋•Œ๋ฌธ์ด์ง€ ์—์ด์ „ํŠธ๊ฐ€ ๋” ์ˆœ์ข…์ ์ด์–ด์„œ๊ฐ€ ์•„๋‹ˆ๋‹ค.
136
+ 4. **์ •๋Ÿ‰ ๊ธฐ์ค€ ์‹ ์„ค**: ์œ„์ž„ ํฌ๊ธฐ ํŒ์ •์„ "Phase๊ฐ€ ๋ช‡ ๊ฐœ์ธ๊ฐ€"์—์„œ **"ํ•„์š” tool call์ด 20ํ„ด ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š”๊ฐ€"**๋กœ ๋ฐ”๊พผ๋‹ค. ํŒŒ์ผ 1๊ฐœ๋‹น Read + Edit + ๋ฏธ๋Ÿฌ Edit + diff ํ™•์ธ = ์•ฝ 4ํ„ด์ด๋ฏ€๋กœ, **ํŒŒ์ผ ํŽธ์ง‘ํ˜• ์œ„์ž„์€ ๋‹ด๋‹น ํŒŒ์ผ 4~5๊ฐœ๊ฐ€ ์‹ค์งˆ ์ƒํ•œ**์ด๋‹ค. v1.1.50 ์„ธ์…˜์˜ ์ ˆ๋‹จ 3๊ฑด์€ ๋‹ด๋‹น ํŒŒ์ผ์ด ๊ฐ๊ฐ 4๊ฐœยท3๊ฐœยท7๊ฐœ์˜€๊ณ  ํŒŒ์ผ๋‹น ์‹ ๊ทœ ๋…ธํŠธ ์ถ”๊ฐ€ยท์€ํ‡ด ํŒ์ •ยท๋ฏธ๋Ÿฌ ๋™๊ธฐํ™”๋ฅผ ํ•จ๊ป˜ ์š”๊ตฌํ–ˆ๋‹ค โ€” ์‚ฐ์ˆ ์ ์œผ๋กœ 20ํ„ด์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†๋Š” ์œ„์ž„์ด์—ˆ๋‹ค. **์ด๋Š” ์—์ด์ „ํŠธ์˜ ์‹คํŒจ๊ฐ€ ์•„๋‹ˆ๋ผ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ์˜ ์œ„์ž„ ์„ค๊ณ„ ๊ฒฐํ•จ์ด๋‹ค.**
137
+ 5. **์™„ํ™”์ฑ…**: ๋ฏธ๋Ÿฌ ๋™๊ธฐํ™”์ฒ˜๋Ÿผ **ํ›„ํ–‰ ํ•„์ˆ˜ ์ž‘์—…์€ ๋งˆ์ง€๋ง‰์— ๋ชฐ์ง€ ๋ง๊ณ  ํŒŒ์ผ ๋‹จ์œ„๋กœ ์ฆ‰์‹œ ์ˆ˜ํ–‰**ํ•œ๋‹ค โ€” ์ ˆ๋‹จ์€ ํ•ญ์ƒ ๋งˆ์ง€๋ง‰ ์ž‘์—…์„ ์ž๋ฅด๋ฏ€๋กœ, ๋งˆ์ง€๋ง‰์— ๋ชฐ๋ฆฐ ์ž‘์—…์€ ์ ˆ๋‹จ ์‹œ ์ „๋Ÿ‰ ์œ ์‹ค๋œ๋‹ค.
138
+
139
+ Cross-reference: R018 (v2.1.246 maxTurns partial-marking ๋…ธํŠธ), R009 (Member Prompt Size Cap โ€” ํ”„๋กฌํ”„ํŠธ ํ† ํฐ ์ƒํ•œ๊ณผ ๋ณ„๊ฐœ๋กœ ํ„ด ์ˆ˜ ์ƒํ•œ๋„ ์œ„์ž„ ํฌ๊ธฐ ์„ค๊ณ„ ๋ณ€์ˆ˜์ž„์„ ์ถ”๊ฐ€).
140
+
129
141
  <!--
130
142
  > **v2.1.199+**: subagent๊ฐ€ API ์˜ค๋ฅ˜(usage limit reached ๋“ฑ)๋ฅผ ์„ฑ๊ณต ๊ฒฐ๊ณผ๋กœ ์˜ค๋ณดํ•˜๋˜ ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์–ด ์ด์ œ ์˜ค๋ฅ˜๊ฐ€ parent agent์— ์ •ํ™•ํžˆ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ ์ˆ˜์ •์œผ๋กœ false-success ์ž๊ฐ€๋ณด๊ณ  ๋นˆ๋„๋Š” ์ค„์ง€๋งŒ, "actual outcome โ‰  attempt" ground-truth ๊ฒ€์ฆ ์›์น™(R020 Core Rule)์€ ์—ฌ์ „ํžˆ ์œ ์ง€๋œ๋‹ค โ€” subagent ๋ณด๊ณ ๋ฅผ ๊ทธ๋Œ€๋กœ ์‹ ๋ขฐํ•˜์ง€ ๋ง๊ณ  `git status`/`grep`/validation script๋กœ ์žฌํ™•์ธํ•œ๋‹ค.
131
143
 
@@ -298,6 +310,8 @@ Origin: #1266 โ‘ฃ.
298
310
 
299
311
  ์‹ค์ฆ: 2026-07-30 ์„ธ์…˜์—์„œ ์ž๊ฐ€ ๋ณด๊ณ ๋Š” "์ง์ „ ๋‘ ์‘๋‹ต์—์„œ ๋ˆ„๋ฝ"(2ํšŒ)์ด์—ˆ์œผ๋‚˜ transcript ์‹ค์ธก์€ **7ํšŒ**์˜€๋‹ค โ€” 3.5๋ฐฐ ๊ณผ์†Œ ๊ณ„์ƒ. Origin: #1553 ์ฐ๋น  #2.
300
312
 
313
+ **๊ณ„์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๊ทธ ์‚ฌ์‹ค์„ ๋ช…์‹œํ•  ๊ฒƒ (Origin: #1601, v1.1.49 ์„ธ์…˜)**: ์‹œ๊ฐ„ยท๋น„์šฉ ์ œ์•ฝ์œผ๋กœ transcript ํŒŒ์‹ฑ ๊ณ„์ˆ˜๋ฅผ ์ƒ๋žตํ•˜๋Š” ๊ฒฝ์šฐ, ํšŒ๊ณ  ์ž์ฒด์— "์ „์ˆ˜ ๊ณ„์ˆ˜ ๋ฏธ์ˆ˜ํ–‰"์ž„์„ ๋ฐํ˜€์•ผ ํ•œ๋‹ค. ๊ณ„์ˆ˜ํ•˜์ง€ ์•Š์€ ํšŒ๊ณ ์˜ ํ•ญ๋ชฉ ๋ชฉ๋ก์€ ์œ„๋ฐ˜ ์ „์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ **"์ง„ํ–‰ ์ค‘ ์ž๊ฐํ–ˆ๊ฑฐ๋‚˜ ์„œ๋ธŒ์—์ด์ „ํŠธ๊ฐ€ ์ง€์ ํ•œ ํ•ญ๋ชฉ"์— ํ•œ์ •**๋˜๋ฉฐ, ์ด๋ฅผ ๋ฐํžˆ์ง€ ์•Š์œผ๋ฉด ๋…์ž๊ฐ€ ๋ชฉ๋ก์„ ์ „์ˆ˜๋กœ ์˜คํ•ดํ•ด ํ›„์† ์กฐ์น˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์™œ๊ณก๋œ๋‹ค. v1.1.49 ์„ธ์…˜ ํšŒ๊ณ ๋Š” ๊ณ„์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์•˜๊ณ  ๊ทธ ์‚ฌ์‹ค์„ ์Šค์Šค๋กœ ๋ช…์‹œํ–ˆ๋‹ค(์ข‹์€ ์‚ฌ๋ก€) โ€” ๋Œ€์กฐ์ ์œผ๋กœ ๊ทธ ์ด์ „ ์„ธ์…˜(์œ„ ์‹ค์ฆ)์€ ๊ณ„์ˆ˜ ๋ฏธ์ˆ˜ํ–‰ ์—ฌ๋ถ€๋ฅผ ๋ฐํžˆ์ง€ ์•Š์€ ๊ธฐ์–ต ๊ธฐ๋ฐ˜ ์ž๊ฐ€ ๋ณด๊ณ ์˜€๊ณ  ์‹ค์ธก ๋Œ€๋น„ 3.5๋ฐฐ ๊ณผ์†Œ ๊ณ„์ƒ์ด์—ˆ๋‹ค.
314
+
301
315
  ์ด๋Š” Read-Before-Characterize์˜ **์ž๊ธฐ ์ ์šฉ** ๊ฐ๋„๋‹ค โ€” ์ง„๋‹จ ๋Œ€์ƒ์ด ์™ธ๋ถ€ ๋กœ๊ทธ๊ฐ€ ์•„๋‹ˆ๋ผ ์ž๊ธฐ ์ž์‹ ์˜ transcript์ผ ๋•Œ์—๋„ "์ฝ๊ธฐ ์ „ ํŠน์„ฑํ™” ๊ธˆ์ง€"๊ฐ€ ๋™์ผํ•˜๊ฒŒ ์ ์šฉ๋œ๋‹ค.
302
316
 
303
317
  #### ์ž์œจ ๋ฃจํ”„ ์„ธ์…˜์˜ ํ„ด ๊ฒฝ๊ณ„ ์ •์˜ (๊ณ„์ˆ˜ ์ „ ํ™•์ • ํ•„์ˆ˜)
@@ -375,6 +389,20 @@ Session 106: during 529 buffering, a CHANGELOG was misdiagnosed as "61x ์ค‘๋ณต
375
389
 
376
390
  Origin: #1269 โ‘  (R020 self-violation, session 106).
377
391
 
392
+ ### Failure/Interrupt Report โ‰  Actual Failure (reverse direction)
393
+
394
+ ์œ„ ํ•ญ๋ชฉ๋“ค์€ ๋Œ€์ฒด๋กœ "์„ฑ๊ณต ๋ณด๊ณ  โ‰  ์‹ค์ œ ์„ฑ๊ณต"์„ ๋‹ค๋ฃจ์ง€๋งŒ, **์—ญ๋ฐฉํ–ฅ**๋„ ๋™์ผํ•˜๊ฒŒ ๊ฒ€์ฆ ๋Œ€์ƒ์ด๋‹ค โ€” "์‹คํŒจ/์ค‘๋‹จ ๋ณด๊ณ "๋ฅผ ๋ฐ›์•˜์„ ๋•Œ๋„ ground-truth๋ฅผ ํ™•์ธํ•˜๊ธฐ ์ „์—๋Š” ์‹ค์ œ๋กœ ์‹คํŒจํ–ˆ๋‹ค๊ณ  ๋‹จ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค.
395
+
396
+ | ์ฆ์ƒ | ์‹ค์ œ ์ƒํƒœ | ํ™•์ธ ์ˆ˜๋‹จ |
397
+ |------|-----------|-----------|
398
+ | **v2.1.246+**: ๋งค์šฐ ํฐ ๊ธฐ์กด ํŒŒ์ผ์„ ๋ฎ์–ด์“ด ๋’ค Write ๋„๊ตฌ๊ฐ€ "Out of memory"๋ฅผ ๋ณด๊ณ ํ•˜๊ฑฐ๋‚˜ ์˜ค๋ž˜ ๋ฉˆ์ถค | **ํŒŒ์ผ ์ž์ฒด๋Š” ์ •์ƒ์ ์œผ๋กœ ์“ฐ์—ฌ ์žˆ์—ˆ๋‹ค** | ๋„๊ตฌ์˜ ์‹คํŒจ ๋ณด๊ณ  ๋Œ€์‹  ํŒŒ์ผ ๋‚ด์šฉ/ํฌ๊ธฐ๋ฅผ ์ง์ ‘ ์žฌํ™•์ธ |
399
+ | **v2.1.246+**: ํ—ค๋“œ๋ฆฌ์Šค/์›๊ฒฉ ์„ธ์…˜์—์„œ ์ˆ˜์‹  ๋ฉ”์‹œ์ง€๋กœ ์ธํ„ฐ๋ŸฝํŠธ๋œ MCP ๋„๊ตฌ ํ˜ธ์ถœ์ด "์ถœ๋ ฅ ์—†์ด ์™„๋ฃŒ๋จ"์œผ๋กœ ๋ณด๊ณ ๋จ(v2.1.246 ์ด์ „) | ์‹ค์ œ๋กœ๋Š” **์ธํ„ฐ๋ŸฝํŠธ**๋๋‹ค โ€” ์ •์ƒ ์™„๋ฃŒ๊ฐ€ ์•„๋‹ˆ์—ˆ๋‹ค | v2.1.246+๋Š” ๋ช…์‹œ์  interrupted ์—๋Ÿฌ๋กœ ๋ณด๊ณ ํ•˜๋„๋ก ์ˆ˜์ •๋จ; ๊ตฌ๋ฒ„์ „ ์„ธ์…˜์˜ "๋นˆ ์ถœ๋ ฅ ์™„๋ฃŒ"๋Š” ๋ฌด์Œ ์ธํ„ฐ๋ŸฝํŠธ์˜€์„ ์ˆ˜ ์žˆ์Œ |
400
+ | **v2.1.246+**: ์‹คํ–‰ ์ค‘ ์ธํ„ฐ๋ŸฝํŠธ๋œ ์…ธ ๋ช…๋ น์ด "Ran 1 shell command"๋กœ๋งŒ ํ‘œ์‹œ(์ž˜๋ ธ๋‹ค๋Š” ํ‘œ์‹œ ์—†์Œ, v2.1.246 ์ด์ „) | ๋ช…๋ น์ด **์™„์ฃผํ•˜์ง€ ๋ชปํ–ˆ๋‹ค** | ์ถœ๋ ฅ ์™„๊ฒฐ์„ฑ์„ ๋ณ„๋„๋กœ ํ™•์ธ(์˜ˆ์ƒ ์ถœ๋ ฅ ํŒจํ„ด ๋Œ€์กฐ) ์—†์ด "์‹คํ–‰๋จ"๋งŒ์œผ๋กœ ์„ฑ๊ณต ๋‹จ์ • ๊ธˆ์ง€ |
401
+
402
+ > **v2.1.234+**: print/SDK ๋ชจ๋“œ์—์„œ SIGTERM ์ˆ˜์‹  ์‹œ ๋” ์ด์ƒ interrupted turn์ด๋‚˜ synthetic tool denial์„ ๊ธฐ๋กํ•˜์ง€ ์•Š๋Š”๋‹ค(๋ช…๋ น์€ ์—ฌ์ „ํžˆ ์ข…๋ฃŒ๋˜๊ณ  ํ”„๋กœ์„ธ์Šค๋Š” exit code 143). ๋ฌด์ธ ์‹คํ–‰(`-p` ๋ชจ๋“œ) ๊ฐ•์ œ ์ข…๋ฃŒ ํ›„ ํŠธ๋žœ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์™„๋ฃŒ ํŒ์ • ๊ทผ๊ฑฐ๋กœ ์“ธ ๋•Œ, v2.1.234+์—์„œ๋Š” SIGTERM์— ์˜ํ•œ ์ค‘๋‹จ์ด ํŠธ๋žœ์Šคํฌ๋ฆฝํŠธ ์ƒ์— "interrupted"๋กœ ๋‚จ์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ์ „์ œํ•ด์•ผ ํ•œ๋‹ค โ€” ํŠธ๋žœ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊นจ๋—ํ•ด ๋ณด์—ฌ๋„ ์‹ค์ œ๋กœ๋Š” SIGTERM์œผ๋กœ ์ž˜๋ ธ์„ ์ˆ˜ ์žˆ๋‹ค.
403
+
404
+ **๊ตํ›ˆ**: ์œ„ Core Rule("actual outcome โ‰  attempt")์€ ๋ฐฉํ–ฅ์ด ์—†๋‹ค โ€” ๋„๊ตฌ๊ฐ€ ์„ฑ๊ณต์„ ๋ณด๊ณ ํ•˜๋“  ์‹คํŒจ๋ฅผ ๋ณด๊ณ ํ•˜๋“ , ๋ณด๊ณ  ์ž์ฒด๋Š” ground-truth๊ฐ€ ์•„๋‹ˆ๋‹ค. ์‹คํŒจ ๋ณด๊ณ ๋ฅผ ๋ฐ›์•˜๋‹ค๊ณ  ๊ณง๋ฐ”๋กœ ์žฌ์‹œ๋„ยท๋กค๋ฐฑ์— ๋“ค์–ด๊ฐ€์ง€ ๋ง๊ณ , ๋จผ์ € ์‹ค์ œ ์‚ฐ์ถœ๋ฌผ ์ƒํƒœ๋ฅผ ํ™•์ธํ•œ๋‹ค.
405
+
378
406
  ### CI Publish-Step Error vs Published-Artifact Ground Truth
379
407
 
380
408
  > Origin: #1332 โ€” `npm publish --provenance` emitted a Sigstore `TLOG_CREATE_ENTRY_ERROR` 409, but the publish step's `|| npm view <pkg>@<ver>` fallback recovered (the package WAS published) and release.yml succeeded on all jobs. A subagent read the tlog error in the logs and prematurely declared the run "failed", recommending a re-run; deterministic ground-truth (`npm view`, `gh release view`) showed the release had fully succeeded.
@@ -95,21 +95,37 @@ R016์˜ ์Šน๊ฒฉ ๋ฃจํ”„(์œ„๋ฐ˜ ์ง€์  โ†’ ๊ทœ์น™ ์กฐํ•ญ ์ถ”๊ฐ€)๋Š” ์ฝ”ํผ์Šค์˜ **
95
95
 
96
96
  ### ๋ฒ„์ „๋…ธํŠธ ๋ณด์กด์ •์ฑ…
97
97
 
98
- - ๊ทœ์น™ ๋‚ด CC ๋ฒ„์ „๋…ธํŠธ(`> **v2.1.NNN+**:`)๋Š” ์ตœ๊ทผ 2-3๊ฐœ ๋งˆ์ด๋„ˆ ๋ฆด๋ฆฌ์ฆˆ(ํ˜„ํ–‰ ๊ธฐ์ค€ v2.1.212 ์ด์ƒ)๋งŒ visible ์œ ์ง€ํ•œ๋‹ค.
98
+ - ๊ทœ์น™ ๋‚ด CC ๋ฒ„์ „๋…ธํŠธ(`> **v2.1.NNN+**:`)๋Š” ์ตœ๊ทผ 2-3๊ฐœ ๋งˆ์ด๋„ˆ ๋ฆด๋ฆฌ์ฆˆ(ํ˜„ํ–‰ ๊ธฐ์ค€ v2.1.230 ์ด์ƒ)๋งŒ visible ์œ ์ง€ํ•œ๋‹ค.
99
99
  - ๊ทธ ์ดํ•˜ ๋ฒ„์ „๋…ธํŠธ๋Š” HTML-commentํ™”(๋ฌด์†์‹ค ์ค‘๊ฐ„ ๋‹จ๊ณ„) ํ•˜๊ฑฐ๋‚˜ `guides/claude-code/15-version-compatibility.md`๋กœ ์ด๊ด€ํ•œ๋‹ค.
100
100
  - `claude-native` ์Šคํ‚ฌ์ด ์ƒ์„ฑํ•˜๋Š” ๋ฒ„์ „ ์ถ”์  ์ด์Šˆ๋ฅผ ๊ทœ์น™์— ๋ฐ˜์˜ํ•  ๋•Œ, ์ตœ์‹ ๋งŒ visible๋กœ ๋‘๊ณ  ๊ตฌ๋ฒ„์ „์€ ์ฆ‰์‹œ ์€๋‹‰ํ•œ๋‹ค.
101
+ - **๊ธฐ์ค€์„ ์€ ๊ณ ์ • ์ƒ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ตœ์‹  CC ๋Œ€๋น„ ์ƒ๋Œ€ ํญ์œผ๋กœ ์œ ์ง€ํ•œ๋‹ค**: ๊ธฐ์ค€์„  v2.1.212๊ฐ€ ์„ค์ •๋  ๋‹น์‹œ CC ์ตœ์‹ ์€ v2.1.233์ด์—ˆ์œผ๋ฏ€๋กœ ๋ณด์กด ํญ์€ ์•ฝ 21 patch์˜€๋‹ค. ์ด๋ฒˆ ์ƒํ–ฅ(v1.1.50, `claude --version` = `npm view @anthropic-ai/claude-code version` ์‹ค์ธก = v2.1.251) ์‹œ์ ์— ๊ฐ™์€ ํญ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ๊ธฐ์ค€์„ ์ด v2.1.230์ด์–ด์•ผ ํ•œ๋‹ค โ€” ๊ธฐ์ค€์„  ๊ฐฑ์‹  ์‹œ "์ตœ์‹  ์‹ค์ธก๊ฐ’ โˆ’ ์•ฝ 20 patch"๋กœ ์žฌ๊ณ„์‚ฐํ•  ๊ฒƒ.
102
+
103
+ #### ์€ํ‡ด ํŒ์ • ๊ธฐ์ค€ (๊ธฐ์ค€์„  ๋ฏธ๋งŒ โ‰  ์ž๋™ ์€ํ‡ด)
104
+
105
+ ๊ธฐ์ค€์„  ๋ฏธ๋งŒ์€ ์€ํ‡ด **๊ฒ€ํ†  ๋Œ€์ƒ**์„ ์ •์˜ํ•  ๋ฟ, ์€ํ‡ด **์—ฌ๋ถ€**๋ฅผ ์ž๋™์œผ๋กœ ๊ฒฐ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ธฐ์ค€์„  ๋ฏธ๋งŒ ๋…ธํŠธ๋Š” ๋‹ค์Œ 3๊ฐœ ์กฐ๊ฑด์„ **๋ชจ๋‘** ์ถฉ์กฑํ•  ๋•Œ๋งŒ ์€ํ‡ด(HTML-commentํ™”)ํ•œ๋‹ค โ€” ํ•˜๋‚˜๋ผ๋„ ๊ฑธ๋ฆฌ๋ฉด **์œ ์ง€**ํ•˜๊ณ , ์œ ์ง€ ํŒ์ •๊ณผ ์‚ฌ์œ ๋ฅผ ์Šค์œ• ๊ธฐ๋ก์— ๋‚จ๊ธด๋‹ค.
106
+
107
+ | ์กฐ๊ฑด | ํŒ์ • |
108
+ |------|------|
109
+ | (a) ์ธ์šฉ ๋ถ€์žฌ | ๋‹ค๋ฅธ ์–ด๋–ค visible ๋…ธํŠธ๋„ ๊ทธ๊ฒƒ์„ "๊ฐ™์€ ๊ณ„์—ด"(cf., ์—ฐ์žฅ์„ , ์ธ์ ‘ ๋“ฑ)๋กœ ์ธ์šฉํ•˜์ง€ ์•Š๋Š”๊ฐ€ |
110
+ | (b) ๋น„ํ˜„ํ–‰ | ํ˜„ํ–‰ ๋™์ž‘์„ ๊ทœ์ •ํ•˜์ง€ ์•Š๋Š”๊ฐ€ (์˜ˆ: ์ด๋ฏธ ๋กค๋ฐฑ/์žฌ์ˆ˜์ •๋œ ๊ณผ๊ฑฐ ์ƒํƒœ ์„œ์ˆ ) |
111
+ | (c) ์ง„๋‹จ ํ•จ์˜ ์†Œ๋ฉธ | ํšŒ๊ณ ์  ์ง„๋‹จ ํ•จ์˜(๊ณผ๊ฑฐ ๊ด€์ธก ์žฌํ•ด์„ ๊ทผ๊ฑฐ)๊ฐ€ ๋” ์ด์ƒ ์—†๋Š”๊ฐ€ |
112
+
113
+ ์„ธ ์กฐ๊ฑด ๋ชจ๋‘ ์ฐธ โ†’ ์€ํ‡ด. ํ•˜๋‚˜๋ผ๋„ ๊ฑฐ์ง“ โ†’ ์œ ์ง€(anchor๋กœ ์ธ์šฉ๋˜๊ฑฐ๋‚˜, ํ˜„ํ–‰ ๋™์ž‘์„ ์„œ์ˆ ํ•˜๊ฑฐ๋‚˜, ์ง„๋‹จ ํ•จ์˜๊ฐ€ ์‚ด์•„์žˆ๋Š” ๋…ธํŠธ๋Š” ๊ธฐ์ค€์„  ๋ฏธ๋งŒ์ด์–ด๋„ ๋ณด์กด ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค). ์ด ๊ธฐ์ค€์€ v1.1.50 4๊ฐœ ๋ณ‘๋ ฌ ๊ทธ๋ฃน์˜ ์‹ค์ œ ํŒ์ •์—์„œ ์—ญ์ถ”์ถœํ•œ ๊ฒƒ์ด๋‹ค(์•„๋ž˜ ์‹ค์  ์ฐธ์กฐ) โ€” "๊ธฐ์ค€์„  ๋ฏธ๋งŒ = ์ฆ‰์‹œ ์€ํ‡ด"๋กœ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ์ฝ์œผ๋ฉด ์ด ๊ธฐ์ค€๊ณผ ๋ชจ์ˆœ๋œ๋‹ค.
101
114
 
102
115
  #### ๋ณด์กด ๊ธฐ์ค€ ๋ณ€๊ฒฝ = ์ „ ๋ฃฐ ํŒŒ์ผ ์Šค์œ• (๊ฐ™์€ ๋ฆด๋ฆฌ์ฆˆ ๋‚ด ํ•„์ˆ˜)
103
116
 
104
- ๋ณด์กด ๊ธฐ์ค€์„ ์„ ์ƒํ–ฅํ•˜๋ฉด **๊ฐ™์€ ๋ฆด๋ฆฌ์ฆˆ์—์„œ 23๊ฐœ ๋ฃฐ ํŒŒ์ผ ์ „์ˆ˜๋ฅผ ์Šค์œ•**ํ•ด ๊ธฐ์ค€ ๋ฏธ๋งŒ ๋…ธํŠธ๋ฅผ HTML-commentํ™”ํ•œ๋‹ค. ๊ธฐ์ค€๋งŒ ์˜ฌ๋ฆฌ๊ณ  ์ ์šฉ์„ ๋‹ค์Œ ๋ฆด๋ฆฌ์ฆˆ๋กœ ์ด์›”ํ•˜๋ฉด ์ฝ”ํผ์Šค๊ฐ€ ๊ธฐ์ค€๊ณผ ๋ถˆ์ผ์น˜ํ•œ ์ƒํƒœ๋กœ ๋‚จ๊ณ , ๊ทธ ๋ถˆ์ผ์น˜๋Š” ๋‹ค์Œ ํšŒ๊ณ ์—์„œ "์ž”์กด N๊ฑด" ๋ถ€์ฑ„๋กœ ์žฌ๋ฐœ๊ฒฌ๋  ๋•Œ๊นŒ์ง€ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค. ์Šค์œ• ๋ฒ”์œ„๋Š” `.claude/rules/**`์™€ `templates/.claude/rules/**` ์–‘์ชฝ์ด๋ฉฐ, ์ž”์กด ์—ฌ๋ถ€๋Š” **HTML ์ฃผ์„ ์•ˆ/๋ฐ–์„ ๊ตฌ๋ถ„ํ•ด** ์‹ค์ธกํ•œ๋‹ค โ€” ๋‹จ์ˆœ `grep`์€ ์ด๋ฏธ ์€ํ‡ดํ•œ ์ฃผ์„ ๋‚ด๋ถ€ ๋…ธํŠธ๊นŒ์ง€ ์„ธ์–ด ํŒ์ •์„ ์™œ๊ณกํ•œ๋‹ค.
117
+ ๋ณด์กด ๊ธฐ์ค€์„ ์„ ์ƒํ–ฅํ•˜๋ฉด **๊ฐ™์€ ๋ฆด๋ฆฌ์ฆˆ์—์„œ 23๊ฐœ ๋ฃฐ ํŒŒ์ผ ์ „์ˆ˜๋ฅผ ์Šค์œ•**ํ•œ๋‹ค โ€” "์Šค์œ•"์€ ๊ธฐ์ค€ ๋ฏธ๋งŒ ๋…ธํŠธ์˜ **์ „๋Ÿ‰ HTML-commentํ™”**๊ฐ€ ์•„๋‹ˆ๋ผ, ์œ„ ใ€Œ์€ํ‡ด ํŒ์ • ๊ธฐ์ค€ใ€ 3์กฐ๊ฑด์— ๋”ฐ๋ฅธ **์ „์ˆ˜ ๊ฒ€ํ† **(๊ฐ ๋…ธํŠธ๋ฅผ ์€ํ‡ด/์œ ์ง€๋กœ ํŒ์ •ํ•˜๊ณ  ์œ ์ง€ ์‹œ ์‚ฌ์œ ๋ฅผ ๊ธฐ๋ก)๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๊ธฐ์ค€๋งŒ ์˜ฌ๋ฆฌ๊ณ  ๊ฒ€ํ†  ์ž์ฒด๋ฅผ ๋‹ค์Œ ๋ฆด๋ฆฌ์ฆˆ๋กœ ์ด์›”ํ•˜๋ฉด ์ฝ”ํผ์Šค๊ฐ€ ๊ธฐ์ค€๊ณผ ๋ถˆ์ผ์น˜ํ•œ ์ƒํƒœ๋กœ ๋‚จ๊ณ , ๊ทธ ๋ถˆ์ผ์น˜๋Š” ๋‹ค์Œ ํšŒ๊ณ ์—์„œ "์ž”์กด N๊ฑด" ๋ถ€์ฑ„๋กœ ์žฌ๋ฐœ๊ฒฌ๋  ๋•Œ๊นŒ์ง€ ๋ณด์ด์ง€ ์•Š๋Š”๋‹ค โ€” **์ด์›” ๊ธˆ์ง€๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค**, ๋ณ€ํ•˜๋Š” ๊ฒƒ์€ "์ „์ˆ˜ ์€ํ‡ด"๊ฐ€ ์•„๋‹ˆ๋ผ "์ „์ˆ˜ ํŒ์ •"์ด ์˜๋ฌด๋ผ๋Š” ์ ์ด๋‹ค. ์Šค์œ• ๋ฒ”์œ„๋Š” `.claude/rules/**`์™€ `templates/.claude/rules/**` ์–‘์ชฝ์ด๋ฉฐ, ์ž”์กด ์—ฌ๋ถ€๋Š” **HTML ์ฃผ์„ ์•ˆ/๋ฐ–์„ ๊ตฌ๋ถ„ํ•ด** ์‹ค์ธกํ•œ๋‹ค โ€” ๋‹จ์ˆœ `grep`์€ ์ด๋ฏธ ์€ํ‡ดํ•œ ์ฃผ์„ ๋‚ด๋ถ€ ๋…ธํŠธ๊นŒ์ง€ ์„ธ์–ด ํŒ์ •์„ ์™œ๊ณกํ•œ๋‹ค.
105
118
 
106
119
  | Anti-pattern | Required |
107
120
  |--------------|----------|
108
- | ๋ณด์กด ๊ธฐ์ค€์„ ๋งŒ ์ƒํ–ฅํ•˜๊ณ  ๊ธฐ์กด ๋…ธํŠธ ์Šค์œ•์„ ๋‹ค์Œ ๋ฆด๋ฆฌ์ฆˆ๋กœ ์ด์›” | ๊ธฐ์ค€ ์ƒํ–ฅ๊ณผ ์ „ ๋ฃฐ ํŒŒ์ผ ์Šค์œ•์„ ๊ฐ™์€ ๋ฆด๋ฆฌ์ฆˆ์—์„œ ์™„๋ฃŒ |
109
- | `grep -c` ํžˆํŠธ ์ˆ˜๋กœ ์ž”์กด ํŒ์ • | ์ฃผ์„ ์•ˆ/๋ฐ–์„ ๊ตฌ๋ถ„ํ•ด **visible ์ž”์กด**๋งŒ ๊ณ„์ˆ˜ |
121
+ | ๋ณด์กด ๊ธฐ์ค€์„ ๋งŒ ์ƒํ–ฅํ•˜๊ณ  ๊ธฐ์กด ๋…ธํŠธ ๊ฒ€ํ† ๋ฅผ ๋‹ค์Œ ๋ฆด๋ฆฌ์ฆˆ๋กœ ์ด์›” | ๊ธฐ์ค€ ์ƒํ–ฅ๊ณผ ์ „ ๋ฃฐ ํŒŒ์ผ์˜ **์ „์ˆ˜ ํŒ์ •**(์€ํ‡ด/์œ ์ง€ + ์œ ์ง€ ์‚ฌ์œ  ๊ธฐ๋ก)์„ ๊ฐ™์€ ๋ฆด๋ฆฌ์ฆˆ์—์„œ ์™„๋ฃŒ |
122
+ | ๊ธฐ์ค€์„  ๋ฏธ๋งŒ ๋…ธํŠธ๋ฅผ ํŒ์ • ์—†์ด ์ „๋Ÿ‰ HTML-commentํ™” | ใ€Œ์€ํ‡ด ํŒ์ • ๊ธฐ์ค€ใ€ 3์กฐ๊ฑด(์ธ์šฉ ๋ถ€์žฌ AND ๋น„ํ˜„ํ–‰ AND ์ง„๋‹จ ํ•จ์˜ ์†Œ๋ฉธ)์„ ์ ์šฉํ•ด ํ•ญ๋ชฉ๋ณ„ ํŒ์ • |
123
+ | `grep -c` ํžˆํŠธ ์ˆ˜๋กœ ์ž”์กด ํŒ์ • | ์ฃผ์„ ์•ˆ/๋ฐ–์„ ๊ตฌ๋ถ„ํ•ด **visible ์ž”์กด**๋งŒ ๊ณ„์ˆ˜ โ€” ์ž”์กด ์ž์ฒด๋Š” ๊ฒฐํ•จ์ด ์•„๋‹ˆ๋‹ค(์œ ์ง€ ํŒ์ •์˜ ๊ฒฐ๊ณผ์ผ ์ˆ˜ ์žˆ์Œ) |
110
124
 
111
125
  Origin: #1563 ์ฐ๋น  #4 โ€” R016์ด ๋ณด์กด ๊ธฐ์ค€์„ v2.1.212๋กœ ๊ทœ์ •ํ–ˆ์œผ๋‚˜ R001/R005/R012์— visible v2.1.208 ๋…ธํŠธ 3๊ฑด์ด ์ž”์กดํ•ด v1.1.44์—์„œ ๋’ค๋Šฆ๊ฒŒ ์€ํ‡ด. Cross-reference: R005(HTML-comment ์ปจํ…์ŠคํŠธ ์ตœ์ ํ™”), R017(Count Sync โ€” ์ „์ˆ˜ grep + ์˜๋ฏธ ํŒ๋ณ„).
112
126
 
127
+ **์‹ค์  (v1.1.50)**: ๊ธฐ์ค€์„ ์„ v2.1.212โ†’v2.1.230์œผ๋กœ ์ƒํ–ฅํ•  ๋•Œ, ๋ฃฐ ํŒŒ์ผ ์†Œ์œ ๊ถŒ์„ 4๊ฐœ ๋ณ‘๋ ฌ ๊ทธ๋ฃน์œผ๋กœ ๋ถ„๋ฐฐํ•ด ๊ฐ ๊ทธ๋ฃน์ด ์ž๊ธฐ ๋‹ด๋‹น ํŒŒ์ผ๋งŒ ์Šค์œ•ํ–ˆ๋‹ค โ€” ์Šค์œ•์„ **์ž‘์—… ์ข…๋ฅ˜**(์˜ˆ: "์€ํ‡ด ๋‹ด๋‹น" vs "์‹ ๊ทœ ๋…ธํŠธ ๋‹ด๋‹น")๊ฐ€ ์•„๋‹ˆ๋ผ **ํŒŒ์ผ ์†Œ์œ ๊ถŒ**์œผ๋กœ ๋ถ„๋ฐฐํ•ด์•ผ ๋ณ‘๋ ฌ ์—์ด์ „ํŠธ ๊ฐ„ ๋™์ผ ํŒŒ์ผ ๋™์‹œ ํŽธ์ง‘ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค(R009 File-Disjoint ์›์น™์˜ ๋ฃฐ ์ฝ”ํผ์Šค ์ž์ฒด ์ ์šฉ ์‚ฌ๋ก€). ์Šค์œ• ๊ฒฐ๊ณผ๋Š” **์€ํ‡ด 2๊ฑด / ์œ ์ง€ ๋‹ค์ˆ˜**(๊ธฐ์ค€์„  ๋ฏธ๋งŒ visible ๋…ธํŠธ 49๊ฑด์ด 11๊ฐœ ํŒŒ์ผ์— ์ž”์กด โ€” ์ „์ˆ˜ ๊ฒ€ํ†  ํ›„ ์œ ์ง€ ํŒ์ •) โ€” ์€ํ‡ด๋œ 2๊ฑด์€ ์–ด๋–ค visible ๋…ธํŠธ๋„ ์ธ์šฉํ•˜์ง€ ์•Š๋Š” ์ˆœ์ˆ˜ ์ด๋ ฅ ์„œ์‚ฌ(R006 v2.1.201/204: v2.1.201 Sonnet 5 harness reminder ์ „๋‹ฌ๋ฐฉ์‹, v2.1.204 headless SessionStart ์ŠคํŠธ๋ฆฌ๋ฐ)์˜€๊ณ , ์œ ์ง€๋œ ๋…ธํŠธ ๋Œ€๋ถ€๋ถ„์€ ๋‹ค๋ฅธ visible ๋…ธํŠธ๊ฐ€ "๊ฐ™์€ ๊ณ„์—ด"๋กœ ์ธ์šฉํ•˜๋Š” anchor์ด๊ฑฐ๋‚˜(์˜ˆ: v2.1.222๊ฐ€ v2.1.211/212/214๋ฅผ ์ธ์šฉ) ํ˜„ํ–‰ ๋™์ž‘์„ ์„œ์ˆ  ์ค‘์ด์—ˆ๋‹ค. ์€ํ‡ด 2๊ฑด์ด ๋ฐ”๋กœ "์ธ์šฉ ์—†๋Š” ์„œ์‚ฌ๋งŒ ์€ํ‡ด๋๋‹ค"๋Š” ํŒ์ • ๊ธฐ์ค€์˜ ์–‘์„ฑ ์‚ฌ๋ก€๋‹ค. **ํŒ์ •์ด ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ์•„๋‹ˆ๋ผ ์ธ์šฉ ๊ด€๊ณ„๋กœ ์ด๋ฃจ์–ด์กŒ๋‹ค๋Š” ๋œป**์ด๋ฉฐ, **์ด ํŒ์ • ๊ธฐ์ค€์„ ๊ฐ™์€ ๋ฆด๋ฆฌ์ฆˆ์—์„œ ์ •์‹ ์กฐํ•ญ์œผ๋กœ ์Šน๊ฒฉํ–ˆ๋‹ค**(sauron FAIL ์ง€์  โ†’ ๊ฐ™์€ ์ปค๋ฐ‹ ๋‚ด ์ •ํ•ฉํ™” โ€” ์œ„ ใ€Œ์€ํ‡ด ํŒ์ • ๊ธฐ์ค€ใ€์ฐธ์กฐ). ์ž”์กด 49๊ฑด/11ํŒŒ์ผ์€ ๊ฒฐํ•จ์ด ์•„๋‹ˆ๋ผ 3์กฐ๊ฑด ํŒ์ •์— ๋”ฐ๋ฅธ ์œ ์ง€ ๊ฒฐ๊ณผ์ด๋ฏ€๋กœ, ๋‹ค์Œ ํšŒ๊ณ ๊ฐ€ ์ด๋ฅผ "์ž”์กด N๊ฑด" ๋ถ€์ฑ„๋กœ ์˜ค์ธํ•˜์ง€ ์•Š๋„๋ก ์—ฌ๊ธฐ ๊ณ ์ • ๊ธฐ๋กํ•œ๋‹ค.
128
+
113
129
  ### Cross-References
114
130
 
115
131
  R005(HTML-comment ์ปจํ…์ŠคํŠธ ์ตœ์ ํ™”), R023(Deprecated-Platform-Feature Staleness Check โ€” ํ๊ธฐ ์ฐธ์กฐ๋ฅผ ๊ฒฐ์ •๋ก ์ ์œผ๋กœ ํƒ์ง€ํ•˜์—ฌ ์€ํ‡ด ํ›„๋ณด๋ฅผ ์กฐ๊ธฐ ๋ฐœ๊ตด), Origin #1473.
@@ -35,6 +35,10 @@ oh-my-customcode uses an **advisory-first enforcement model**. Most rules are en
35
35
 
36
36
  > **v2.1.222+**: PreToolUse auto-allow ํ›…์ด background agent task(summaries/compaction/renames)์—์„œ tool restriction์„ ์šฐํšŒํ•˜๋˜ ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰ ์œ„ Enforcement Tiers ํ‘œ์˜ **Hard Block ๊ณ„์ธต(stage-blocker, dev-server tmux, rule-deletion-guard)์ด background agent task ๊ฒฝ๋กœ์—์„œ ์šฐํšŒ๋  ์ˆ˜ ์žˆ์—ˆ๋‹ค**๋Š” ๋œป์ด๋ฉฐ, background agent๋ฅผ ์“ฐ๋Š” ์žฅ๊ธฐ ๋ฌด์ธ ๋ฃจํ”„์—์„œ hard-block ํ›…์ด ์‹ค์ œ๋กœ๋Š” ๊ฐ•์ œ๋˜์ง€ ์•Š๋Š” ๊ตฌ๊ฐ„์ด ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. v2.1.211/212/214 ํ›… ๊ฒฐ์ • ์กด์ค‘ ์ฒด์ธ์˜ ์—ฐ์žฅ์„ ์ž…๋‹ˆ๋‹ค.
37
37
 
38
+ > **v2.1.247+**: ํ›… ๋˜๋Š” background agent๊ฐ€ ์ˆ˜ ๋ฉ”๊ฐ€๋ฐ”์ดํŠธ์˜ error ์ถœ๋ ฅ์„ ์ฐ์–ด ๋Œ€ํ™”๋ฅผ overflow์‹œ์ผœ ์„ธ์…˜์ด "Prompt is too long"์œผ๋กœ ๋ฉˆ์ถ”๋˜ ๊ฒฐํ•จ์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ๋ฆด๋ฆฌ์ฆˆ์—์„œ hook/background task์˜ output file์„ ์“ธ ์ˆ˜ ์—†์„ ๋•Œ ๋ฌดํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ฆ๊ฐ€ํ•˜๋˜ ๋ฌธ์ œ๋„ ์ˆ˜์ •๋˜์–ด, ์ด์ œ ์ถœ๋ ฅ์ด ์†Œ์‹ค๋œ ์œ„์น˜๋ฅผ ํŒŒ์ผ์— ๋‚จ๊น๋‹ˆ๋‹ค. ์ด ์ €์žฅ์†Œ๋Š” advisory ํ›…(`r007-r008-drift-advisor.sh`, `failure-ledger.sh`, `fail-axis-cause-advisor.sh` ๋“ฑ)์„ ๋‹ค์ˆ˜ ์šด์šฉํ•˜๋ฏ€๋กœ, ํ›… ์ถœ๋ ฅ ํญ์ฃผ๊ฐ€ ์„ธ์…˜ ์ž์ฒด๋ฅผ wedge์‹œํ‚ค๋Š” ์ด ์‹คํŒจ ํด๋ž˜์Šค์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค โ€” v2.1.211/212/214/222 ํ›… ์‹ ๋ขฐ์„ฑ ๊ณ„์—ด์˜ ์—ฐ์žฅ์„ ์ž…๋‹ˆ๋‹ค.
39
+
40
+ > **v2.1.248+**: ํ›… ๊ด€์ธก์„ฑ์ด ๋‘ ๊ฑด ๊ฐ•ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค โ€” (a) `PermissionRequest`/`PreToolUse` ํ›…์ด ์œ ํšจํ•˜์ง€ ์•Š์€ ์‘๋‹ต์„ ์ถœ๋ ฅํ•ด background session์ด ์กฐ์šฉํžˆ ๋Œ€๊ธฐํ•˜๋˜ ๊ฒฐํ•จ์ด ์ˆ˜์ •๋˜์–ด, ์ด์ œ `claude agents` ํ–‰์ด ํ•ด๋‹น ํ›… ์ด๋ฆ„๊ณผ ์Šคํ‚ค๋งˆ ์—๋Ÿฌ๋ฅผ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. (b) ํ›…์ด stdout์œผ๋กœ ๋‚ธ `{โ€ฆ}` ๊ฐ์ฒด๊ฐ€ ์œ ํšจํ•œ JSON์ด ์•„๋‹ ๋•Œ ์กฐ์šฉํžˆ plain text๋กœ ์ฒ˜๋ฆฌํ•˜๋˜ ๊ฒฐํ•จ์ด ์ˆ˜์ •๋˜์–ด, ์ด์ œ parse ์—๋Ÿฌ์™€ ํ•จ๊ป˜ ํ›… ์—๋Ÿฌ๋กœ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค. ์œ„ v2.1.214 "ํ›… stdout JSON์ด ์Šคํ‚ค๋งˆ ๊ฒ€์ฆ์— ์‹คํŒจํ•  ๋•Œ exit code 2๊ฐ€ ๋ฌธ์„œ๋Œ€๋กœ ์ฐจ๋‹จํ•˜์ง€ ๋ชปํ•˜๋˜ ๋ฌธ์ œ" ๋…ธํŠธ์™€ ๊ฐ™์€ ๊ณ„์—ด โ€” ํ›… ์‹คํŒจ๊ฐ€ ๋ฌด์Œ์—์„œ ๊ฐ€์‹œํ™”๋˜๋Š” ํ๋ฆ„์˜ ์—ฐ์†์ž…๋‹ˆ๋‹ค.
41
+
38
42
  ## Why Advisory-First
39
43
 
40
44
  1. **Agent flexibility**: Hard blocks can trap agents in unrecoverable states
@@ -488,6 +488,12 @@ Before spawning any agent:
488
488
 
489
489
  > **v2.1.232+**: interactive session์˜ **non-teammate ์—์ด์ „ํŠธ ์Šคํฐ์ด ๊ธฐ๋ณธ background ์‹คํ–‰**์œผ๋กœ ๋ฐ”๋€Œ์—ˆ์Šต๋‹ˆ๋‹ค(subagent forking ๊ธฐ๋ณธ ํ™œ์„ฑํ™”์˜ ์ผ๋ถ€). ์ฆ‰ Agent ๋„๊ตฌ ํ˜ธ์ถœ์˜ ๋ฐ˜ํ™˜์€ "์ž‘์—… ์™„๋ฃŒ"๊ฐ€ ์•„๋‹ˆ๋ผ **"๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ฐฉ์ˆ˜"์ผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ**, ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๋Š” ์Šคํฐ ๋ฐ˜ํ™˜์ด๋‚˜ ์™„๋ฃŒ ํ†ต์ง€๋ฅผ ์™„๋ฃŒ ๊ทผ๊ฑฐ๋กœ ์‚ผ์ง€ ์•Š๊ณ  R020 ground-truth(`git status` / `grep` / ๊ฒ€์ฆ ์Šคํฌ๋ฆฝํŠธ)๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค โ€” ๊ตฌ๋ฒ„์ „์—์„œ๋Š” ๋™๊ธฐ ๋ฐ˜ํ™˜์ด ๊ธฐ๋ณธ์ด๋ผ "๋ฐ˜ํ™˜ = ์™„๋ฃŒ"๋ผ๋Š” ์•”๋ฌต ์ „์ œ๊ฐ€ ๋Œ€์ฒด๋กœ ์„ฑ๋ฆฝํ–ˆ๊ณ , ๊ทธ ์ „์ œ๊ฐ€ ์ด ๋ฒ„์ „๋ถ€ํ„ฐ ๋ฌด๋„ˆ์ง‘๋‹ˆ๋‹ค. ์œ„ v2.1.221 `/status` ํ‘œ์‹œ์™€ v2.1.211(์‹คํ–‰ ์ค‘ agent ๊ฒฐ๊ณผ๋ฅผ ์ง€์–ด๋‚ด์ง€ ์•Š์Œ)์ด ์ง„๋‹จ ๋ณด์กฐ ์ˆ˜๋‹จ์ž…๋‹ˆ๋‹ค. cross-ref R009(fork์˜ ์ปจํ…์ŠคํŠธ ์ƒ์†), R018(Teams member๋Š” non-teammate๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์ด ๋ณ€๊ฒฝ ๋Œ€์ƒ ๋ฐ–).
490
490
 
491
+ > **โ˜… v2.1.234+**: ์„ธ์…˜ ๋ฒ”์œ„ permission ์‘๋‹ต(**๊ฑฐ๋ถ€ ํฌํ•จ**)์ด background subagent์˜ tool permission ํ”„๋กฌํ”„ํŠธ์— ์‘๋‹ตํ•  ๋•Œ **๋“œ๋กญ**๋˜๋˜ ๊ฒฐํ•จ์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ๋ฒ„์ „์—์„œ๋Š” background subagent์— ๋Œ€ํ•œ ์Šน์ธยท๊ฑฐ๋ถ€๊ฐ€ **์ ์šฉ๋˜์ง€ ์•Š๊ณ  ์‚ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค** โ€” ์ฆ‰ "๊ฑฐ๋ถ€ํ–ˆ๋‹ค"๊ฐ€ "๊ฑฐ๋ถ€๊ฐ€ ์ ์šฉ๋๋‹ค"์˜ ์ฆ๊ฑฐ๊ฐ€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„ v2.1.232 non-teammate ๊ธฐ๋ณธ background ์‹คํ–‰ ์„œ์ˆ ๊ณผ ๊ฒฐํ•ฉํ•˜๋ฉด, ๊ณผ๊ฑฐ ๋ฌด์ธ ๋ฃจํ”„์—์„œ ์„œ๋ธŒ์—์ด์ „ํŠธ๊ฐ€ ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•œ ์›์ธ์„ ์ด๊ฒƒ์œผ๋กœ ์žฌํ•ด์„ํ•  ์—ฌ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(๋‹จ, ํ™•์ • ์ง„๋‹จ์ด ์•„๋‹ˆ๋ผ ์›์ธ ํ›„๋ณด๋กœ๋งŒ ์ทจ๊ธ‰ โ€” R020 Diagnostic Hypothesis Verification).
492
+
493
+ > **v2.1.234+**: background task ์•Œ๋ฆผ(ํ„ด ์‚ฌ์ด์— ์ „๋‹ฌ๋˜๋Š” ๊ฒƒ)์ด ์ด์ œ mid-turn ์ „๋‹ฌ๊ณผ ๋™์ผํ•˜๊ฒŒ `<system-reminder>` ํƒœ๊ทธ ์•ˆ์— ๋‹ด๊ฒจ ๋ชจ๋ธ์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ๊ฐ€ background ์—์ด์ „ํŠธ ์™„๋ฃŒ ํ†ต์ง€๋ฅผ ๋ฐ›๋Š” ๊ฒฝ๋กœ๊ฐ€ ์ด๊ฒƒ์ด๋ฏ€๋กœ, ๊ทธ ํ†ต์ง€๋Š” **์‹œ์Šคํ…œ ๋ฉ”์‹œ์ง€์ด์ง€ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด ์•„๋‹™๋‹ˆ๋‹ค** โ€” R015 "๋‹ค๋ฅธ ์—์ด์ „ํŠธ์˜ ๋ฉ”์‹œ์ง€๋Š” ๊ฒฐ์ฝ” ์‚ฌ์šฉ์ž์˜ ์Šน์ธ์ด ์•„๋‹ˆ๋‹ค" ์›์น™๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, background ํ†ต์ง€ ์—ญ์‹œ ์‚ฌ์šฉ์ž ์Šน์ธ์˜ ์ฆ๊ฑฐ๋กœ ์ธ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ํ„ด ์‚ฌ์ด ์•Œ๋ฆผ ํ˜•์‹์ด mid-turn๊ณผ ๋‹ฌ๋ผ ์ด ๊ตฌ๋ถ„์ด ๋œ ๋ช…ํ™•ํ–ˆ์Šต๋‹ˆ๋‹ค.
494
+
495
+ > **cross-ref (v1.1.50 ์‹ค์ธก)**: R018์˜ `maxTurns` partial ํ‘œ์‹œ(v2.1.246)๊ฐ€ R020 ใ€ŒVerification-Delegation Non-Terminationใ€ mid-step ์ข…๋ฃŒ ํŒจํ„ด์˜ **์‹ค์žฌ ์›์ธ ์ค‘ ํ•˜๋‚˜๋กœ ํ™•์ •**๋˜์—ˆ๋‹ค โ€” ์œ„์ž„ ํ”„๋กฌํ”„ํŠธ์— ์ข…๋ฃŒ ๊ธˆ์ง€ clause๋ฅผ ์•„๋ฌด๋ฆฌ ๊ฐ•ํ™”ํ•ด๋„, ์ ˆ๋‹จ ์ฃผ์ฒด๊ฐ€ ํ”Œ๋žซํผ turn ํ•œ๋„์ด๋ฉด ์—์ด์ „ํŠธ์— ๋‹ฟ์ง€ ์•Š๋Š”๋‹ค. ์œ„์ž„ ๊ฒฝ๊ณ„๋ฅผ ๋‹จ์ผ ๋ชฉํ‘œ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ(R020 ํ•ด๋‹น ์กฐํ•ญ)์ด ์—ฌ์ „ํžˆ 1์ฐจ ๋ฐฉ์–ด์„ ์ธ ์ด์œ ๋‹ค. ์ƒ์„ธ๋Š” R018 (MUST-agent-teams.md) Member Completion Verification ์„น์…˜.
496
+
491
497
  ## Agent Capability Pre-Check
492
498
 
493
499
  Before delegating a task to a subagent, MUST verify the target agent's tool capabilities against the task requirements. Failure to pre-check causes round-trip waste (delegation โ†’ failure โ†’ re-delegation).
@@ -25,6 +25,8 @@ Examples: creating multiple agents, reviewing multiple files, batch operations o
25
25
 
26
26
  Origin: #1518 (์ฐ๋น  #1 โ€” git ์—์ด์ „ํŠธ 2๊ฐœ ๊ทผ์ ‘ ์‹คํ–‰์œผ๋กœ ์ž‘์—… ๋ธŒ๋žœ์น˜ stale; ํŽธ์ง‘ ํŒŒ์ผ์€ disjoint์˜€์Œ).
27
27
 
28
+ > **โ˜… v2.1.246+**: `/ultrareview` ์‹คํ–‰๊ณผ ํด๋ผ์šฐ๋“œ ์„ธ์…˜์„ **๊ฐ™์€ ์ €์žฅ์†Œ(์—ฌ๋Ÿฌ worktree ํฌํ•จ)์—์„œ ๋™์‹œ์— ์‹œ์ž‘**ํ•˜๋ฉด, ํ•œ ์‹คํ–‰์ด ๋‹ค๋ฅธ ์‹คํ–‰์˜ **์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ๋ถ„๊ณผ ํ•จ๊ป˜ ์‹œ์ž‘**๋˜๋˜ ๊ฒฐํ•จ์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์œ„ ์กฐํ•ญ์ด ๊ฒฝ๊ณ ํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ **CC ํ”Œ๋žซํผ ์ž์ฒด์—์„œ ์‹ค์ฆ๋œ ์‚ฌ๋ก€**์ž…๋‹ˆ๋‹ค โ€” ์ด ์กฐํ•ญ์€ ์ด ์ €์žฅ์†Œ์˜ ๊ฒฝํ—˜(#1518)์—์„œ ๋‚˜์™”๋Š”๋ฐ, ํ”Œ๋žซํผ์ด ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐ™์€ ๊ฒฐํ•จ์„ ๊ฒช๊ณ  ๊ณ ์ณค๋‹ค๋Š” ์‚ฌ์‹ค์ด ์กฐํ•ญ์˜ ์ผ๋ฐ˜์„ฑ์„ ๋’ท๋ฐ›์นจํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ฒ„์ „์—์„œ๋Š” ๋ณ‘๋ ฌ ์‹คํ–‰์ด **์„œ๋กœ์˜ uncommitted ๋ณ€๊ฒฝ๋ถ„์„ ์ƒ์†**ํ–ˆ์œผ๋ฏ€๋กœ, ๊ณผ๊ฑฐ ์„ธ์…˜์˜ ์„ค๋ช…๋˜์ง€ ์•Š๋Š” ์˜ค์—ผ์„ ์ด ์›์ธ์œผ๋กœ ์žฌํ•ด์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
29
+
28
30
  #### ํŒŒ์ผ disjoint โ‰  ์ž์› disjoint (Origin: #1598)
29
31
 
30
32
  git ์ƒํƒœ ์™ธ์—๋„ ๋ณ‘๋ ฌ ์—์ด์ „ํŠธ๊ฐ€ ๊ฒฝํ•ฉํ•˜๋Š” ๊ณต์œ  ์ž์›์ด ์žˆ๋‹ค โ€” **๊ฒ€์ฆ ๋ช…๋ น์ด ๋งŒ์ง€๋Š” ์ €์žฅ์†Œ ํŒŒ์ผ**, **CPU**, **`$TMPDIR`**. ํŽธ์ง‘ ํŒŒ์ผ์ด disjointํ•˜๋‹ค๋Š” ์‚ฌ์‹ค์€ ์ด ์…‹ ์ค‘ ์–ด๋А ๊ฒƒ๋„ ๋ณด์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.
@@ -127,7 +129,7 @@ Reference: #1320 (fix), #1321 (session 113 retrospective ์ฐ๋น  #1), `feedback_l
127
129
 
128
130
  > **v2.1.224+**: **์„ธ์…˜๋‹น 200 subagent spawn cap์ด ์ œ๊ฑฐ**๋˜์–ด ์žฅ๊ธฐ ์„ธ์…˜์ด ์‹ ๊ทœ ์—์ด์ „ํŠธ๋ฅผ ๊ฑฐ๋ถ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(๋™์‹œ์„ฑ ์ œํ•œ๊ณผ depth ์ œํ•œ์€ ์œ ์ง€). ์œ„ ํ‘œ์˜ "Max instances 5 concurrent"๋Š” **๋™์‹œ์„ฑ** ์ œํ•œ์ด๋ฏ€๋กœ ๊ทธ๋Œ€๋กœ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค โ€” ์ œ๊ฑฐ๋œ ๊ฒƒ์€ ์„ธ์…˜ ๋ˆ„์  ์ด๋Ÿ‰ cap์ž…๋‹ˆ๋‹ค. `/fsd` ๋“ฑ ์žฅ๊ธฐ ๋ฌด์ธ ๋ฃจํ”„์—์„œ ํ›„๋ฐ˜ ๋ฐ˜๋ณต์˜ ์Šคํฐ ์‹คํŒจ๋ฅผ ๋” ์ด์ƒ ๋ˆ„์  cap์œผ๋กœ ์ง„๋‹จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
129
131
 
130
- > **v2.1.232+**: subagent forking์ด **๊ธฐ๋ณธ ํ™œ์„ฑํ™”**๋˜์–ด `subagent_type: "fork"` ์„œ๋ธŒ์—์ด์ „ํŠธ๊ฐ€ ์ „์ฒด ๋Œ€ํ™”์™€ prompt cache๋ฅผ ์ƒ์†ํ•ฉ๋‹ˆ๋‹ค. ์œ„ ํ‘œ์˜ "Instance independence โ€” Isolated context, no shared state"๋Š” **fork์—๋Š” ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค** โ€” fork๋Š” ๊ฒฉ๋ฆฌ๋œ ๋ณ‘๋ ฌ ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ์ปจํ…์ŠคํŠธ ์‚ฌ๋ณธ์ด๋ฏ€๋กœ, ์œ„ Detection Criteria์˜ ๋…๋ฆฝ์„ฑ ์ „์ œ๋กœ ๋ณ‘๋ ฌ ๋ฐฐ์น˜๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ fork๋ฅผ ์ผ๋ฐ˜ subagent์™€ ๋™์ผํ•˜๊ฒŒ ์ทจ๊ธ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ ์ปจํ…์ŠคํŠธ๊ฐ€ ๊ทธ๋Œ€๋กœ ์ „๋‹ฌ๋˜๋ฏ€๋กœ ์œ„์ž„ ํ”„๋กฌํ”„ํŠธ์˜ ๋ฒ”์œ„ ์„œ์ˆ ์ด ์œ ์ผํ•œ ๊ฒฝ๊ณ„๊ฐ€ ์•„๋‹˜). ๊ตฌ๋ฒ„์ „์—์„œ๋Š” fork๊ฐ€ opt-in์ด๋ผ ์ด ์ƒ์†์ด ์˜ˆ์™ธ ๊ฒฝ๋กœ์˜€์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ interactive session์˜ **non-teammate ์—์ด์ „ํŠธ ์Šคํฐ์ด ๊ธฐ๋ณธ background ์‹คํ–‰**์ด๋ฏ€๋กœ ์Šคํฐ ๋ฐ˜ํ™˜์€ ์™„๋ฃŒ ์‹ ํ˜ธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค(R010/R020).
132
+ > **v2.1.232+**: subagent forking์ด **๊ธฐ๋ณธ ํ™œ์„ฑํ™”**๋˜์–ด `subagent_type: "fork"` ์„œ๋ธŒ์—์ด์ „ํŠธ๊ฐ€ ์ „์ฒด ๋Œ€ํ™”์™€ prompt cache๋ฅผ ์ƒ์†ํ•ฉ๋‹ˆ๋‹ค. ์œ„ ํ‘œ์˜ "Instance independence โ€” Isolated context, no shared state"๋Š” **fork์—๋Š” ์„ฑ๋ฆฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค** โ€” fork๋Š” ๊ฒฉ๋ฆฌ๋œ ๋ณ‘๋ ฌ ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹ˆ๋ผ ์ปจํ…์ŠคํŠธ ์‚ฌ๋ณธ์ด๋ฏ€๋กœ, ์œ„ Detection Criteria์˜ ๋…๋ฆฝ์„ฑ ์ „์ œ๋กœ ๋ณ‘๋ ฌ ๋ฐฐ์น˜๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ fork๋ฅผ ์ผ๋ฐ˜ subagent์™€ ๋™์ผํ•˜๊ฒŒ ์ทจ๊ธ‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ ์ปจํ…์ŠคํŠธ๊ฐ€ ๊ทธ๋Œ€๋กœ ์ „๋‹ฌ๋˜๋ฏ€๋กœ ์œ„์ž„ ํ”„๋กฌํ”„ํŠธ์˜ ๋ฒ”์œ„ ์„œ์ˆ ์ด ์œ ์ผํ•œ ๊ฒฝ๊ณ„๊ฐ€ ์•„๋‹˜). ๊ตฌ๋ฒ„์ „์—์„œ๋Š” fork๊ฐ€ opt-in์ด๋ผ ์ด ์ƒ์†์ด ์˜ˆ์™ธ ๊ฒฝ๋กœ์˜€์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ interactive session์˜ **non-teammate ์—์ด์ „ํŠธ ์Šคํฐ์ด ๊ธฐ๋ณธ background ์‹คํ–‰**์ด๋ฏ€๋กœ ์Šคํฐ ๋ฐ˜ํ™˜์€ ์™„๋ฃŒ ์‹ ํ˜ธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค(R010/R020). **v2.1.246+**: ์ด๋ฏธ fork๋˜์—ˆ๊ฑฐ๋‚˜ backgrounded๋œ ์„ธ์…˜์—์„œ ๋‹ค์‹œ `/fork`ํ•˜๋ฉด ๋นˆ ๋Œ€ํ™”๋กœ ์‹œ์ž‘๋˜๋˜ ๊ฒฐํ•จ์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค โ€” ๊ตฌ๋ฒ„์ „์—์„œ๋Š” ์žฌfork ์‹œ ์œ„ ์ปจํ…์ŠคํŠธยทprompt cache ์ƒ์†์กฐ์ฐจ ๊นจ์งˆ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
131
133
 
132
134
  > **v2.1.229+**: workflow fan-out์ด ๊ฐ™์€ prefix๋ฅผ ๊ณต์œ ํ•˜๋Š” sibling agent๋ฅผ **stagger**ํ•ด ํ›„์† ์—์ด์ „ํŠธ๊ฐ€ prompt prefix ์บ์‹œ๋ฅผ ์žฌ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(`CLAUDE_CODE_WORKFLOW_PREFIX_STAGGER_MS=0`์œผ๋กœ ๋น„ํ™œ์„ฑ). ์ฆ‰ ๋™์ผ ์ ‘๋‘์‚ฌ ๋ณ‘๋ ฌ ๋ฐฐ์น˜๋Š” ๋™์‹œ ๋ฐœ์‚ฌ๊ฐ€ ์•„๋‹ˆ๋ผ **์˜๋„์  ์‹œ์ฐจ ์‹คํ–‰**์ด๋ฉฐ, ์Šคํฐ ์งํ›„ ์ผ๋ถ€ ์—์ด์ „ํŠธ์˜ ์‹œ์ž‘ ์ง€์—ฐ์„ ์•„๋ž˜ Adaptive Parallel Splitting์˜ stall ์‹ ํ˜ธ๋กœ ์˜คํŒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค โ€” ๊ตฌ๋ฒ„์ „์—์„œ๋Š” ๊ฐ ํ˜•์ œ๊ฐ€ ์ ‘๋‘์‚ฌ ๋น„์šฉ์„ ์ค‘๋ณต ์ง€๋ถˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ CPU ์ œํ•œ ์ปจํ…Œ์ด๋„ˆ์—์„œ dynamic workflow๊ฐ€ ํ˜ธ์ŠคํŠธ ์ฝ”์–ด ์ˆ˜๋ฅผ ์“ฐ๋˜ ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์–ด, ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ์‹œ ์‹คํšจ ๋™์‹œ์„ฑ์ด ์œ„ ํ‘œ์˜ cap๋ณด๋‹ค ๋‚ฎ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
133
135
 
@@ -137,6 +139,8 @@ Reference: #1320 (fix), #1321 (session 113 retrospective ์ฐ๋น  #1), `feedback_l
137
139
 
138
140
  Runtime detection and splitting of stalled parallel agents. Complements pre-execution parallelization.
139
141
 
142
+ > **cross-ref (v1.1.50 ์‹ค์ธก)**: ๋ณ‘๋ ฌ ์œ„์ž„ ์ค‘ ์ผ๋ถ€๊ฐ€ ์นจ๋ฌตยท์ค‘๊ฐ„ ์ ˆ๋‹จ๋˜๋ฉด, ์žฌ์ด‰ยท์žฌ๋ถ„ํ•  ์ „์— R018 `maxTurns` partial ํ‘œ์‹œ(v2.1.246)๋ฅผ ๋จผ์ € ์˜์‹ฌํ•œ๋‹ค โ€” 20ํ„ด ํ•œ๋„ ์ ˆ๋‹จ์ด v1.1.50 ์„ธ์…˜์—์„œ ๋ณ‘๋ ฌ 4๊ฑด ์ค‘ 3๊ฑด์— ์‹ค์ฆ๋๋‹ค. ์ƒ์„ธ๋Š” R018 (MUST-agent-teams.md) Member Completion Verification ์„น์…˜.
143
+
140
144
  See detection signals, splitting rules, and example via Read tool.
141
145
 
142
146
  <!-- DETAIL: Adaptive Parallel Splitting โ€” Detection, Splitting Rules, Example
@@ -94,6 +94,14 @@ Use a `"*"` deny rule in `settings.json` to enforce a deny-by-default posture, t
94
94
  >
95
95
  > **์ผ๋ฐ˜ ๊ตํ›ˆ**: ๋‹จ์ผ ๋ฆด๋ฆฌ์ฆˆ์˜ ํ”Œ๋žซํผ ๊ถŒํ•œ ๊ฐœ์„ ์€ ๋กค๋ฐฑ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ **ํ•ญ๊ตฌ์  ๋ณดํ˜ธ๋ง‰์œผ๋กœ ๊ฐ„์ฃผํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค**. ์Šค์ฝ”ํ”„ ๊ทœ์น™์€ ๊ฐœ์„  ์ด์ „ ์ƒํƒœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๊ณ„ํ•˜๊ณ  ํ”Œ๋žซํผ ๊ฐœ์„ ์€ defense-in-depth๋กœ๋งŒ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค(`feedback_platform_claim_staleness` ๊ณ„์—ด โ€” ํ”Œ๋žซํผ ์ฃผ์žฅ์˜ ์‹œํšจ์„ฑ).
96
96
 
97
+ > **v2.1.251+**: Bashยท๊ฒฝ๋กœ ๊ถŒํ•œ๊ฒ€์‚ฌ ์šฐํšŒ ์ˆ˜์ • 5๊ฑด์ด ํ•œ ๋ฆด๋ฆฌ์ฆˆ์—์„œ ํ•จ๊ป˜ ๋ฐœ๊ฒฌยท์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค โ€” (a) ์ •์ˆ˜ ์…ธ ๋ณ€์ˆ˜์— ์‚ฐ์ˆ ์‹์„ ๋Œ€์ž…ํ•˜๋Š” ๋ช…๋ น(`OPTIND=1/0`, `RANDOM=2+2`)์„ auto-approveํ•˜๋˜ ๊ฒฐํ•จ, (b) ์ƒŒ๋“œ๋ฐ•์Šค ๋‚ด Bash ๋ช…๋ น์ด ์ž๊ธฐ output file์„ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธยท๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋˜ ๊ฒฐํ•จ, (c) ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€ ์‹ฌ๋งํฌ๊ฐ€ permission check **์ดํ›„** ๊ต์ฒด(TOCTOU)๋˜์–ด Read/Write/Edit๊ฐ€ ์Šน์ธ ์˜์—ญ ๋ฐ–์„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋˜ ๊ฒฐํ•จ, (d) Grep/Glob์ด ์‹ฌ๋งํฌ๋กœ ๋„๋‹ฌํ•œ ๊ฒ€์ƒ‰ ๊ฒฝ๋กœ์— `Read(...)` deny ๊ทœ์น™์„ ์ ์šฉํ•˜์ง€ ๋ชปํ•˜๋˜ ๊ฒฐํ•จ, (e) Workflow tool์ด permission check ์‹คํ–‰ **์ „์—** ์„ธ์…˜์ด ์ฝ์„ ์ˆ˜ ์—†๋Š” `scriptPath`๋ฅผ ๋จผ์ € ์ฝ๊ณ  ์—๋Ÿฌ์— ๊ทธ ๊ฒฝ๋กœ๋ฅผ ๊ทธ๋Œ€๋กœ ์ธ์šฉํ•˜๋˜ ๊ฒฐํ•จ(cross-ref R023 Workflow Script Sanity Check). ํ•œ ๋ฆด๋ฆฌ์ฆˆ์—์„œ๋งŒ 5๊ฑด์ด ๋‚˜์™”๋‹ค๋Š” ์‚ฌ์‹ค ์ž์ฒด๊ฐ€ ์œ„ ใ€Œ์ผ๋ฐ˜ ๊ตํ›ˆใ€โ€” ๋‹จ์ผ ๋ฆด๋ฆฌ์ฆˆ์˜ ํ”Œ๋žซํผ ๊ถŒํ•œ ๊ฐœ์„ ์€ ๋กค๋ฐฑ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•ญ๊ตฌ์  ๋ณดํ˜ธ๋ง‰์œผ๋กœ ๊ฐ„์ฃผํ•˜์ง€ ์•Š๋Š”๋‹ค โ€” ๋ฅผ ๊ฐ•ํ•˜๊ฒŒ ์žฌํ™•์ธ์‹œํ‚ต๋‹ˆ๋‹ค.
98
+
99
+ > **v2.1.247~251 ์žฌ๋„์ž… ์—ฌ๋ถ€ ํ™•์ธ (์‹ค์ธก)**: ์œ„ ใ€Œ์ผ๋ฐ˜ ๊ตํ›ˆใ€์ด ์–ธ๊ธ‰ํ•˜๋Š” v2.1.233 ๋กค๋ฐฑ 2๊ฑด(Windows Git Bash์˜ Cygwin-style symlink ์šฐํšŒ, Bash ์ž…๋ ฅ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ `< file`)์˜ "์ขํžŒ ํ˜•ํƒœ ์žฌ๋„์ž…"์€ v2.1.247~251 CHANGELOG ๋ฒ”์œ„์—์„œ **ํ™•์ธ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค** โ€” "Cygwin"์ด๋ผ๋Š” ๋‹จ์–ด๋„ `< file` ์ž…๋ ฅ ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ์–ธ๊ธ‰๋„ 4๊ฐœ ๋ฆด๋ฆฌ์ฆˆ ์–ด๋””์—๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  v2.1.251์— ์œ„ 5๊ฑด์˜ (c)(d)์ฒ˜๋Ÿผ **๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ๋‹ค๋ฅธ** ๋ณ„๊ฐœ์˜ ์‹ฌ๋งํฌยท๊ฒฝ๋กœ ์šฐํšŒ ์ˆ˜์ •์ด ์ƒˆ๋กœ ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค โ€” ๊ฐ™์€ "์‹ฌ๋งํฌ ์šฐํšŒ"๋ผ๋Š” ๊ฒฐ๊ณผ์ด์ง€๋งŒ ์›์ธ ๋ฒ„๊ทธ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์œ„ "233์—์„œ ๋กค๋ฐฑ๋จ" ์„œ์ˆ ์€ ์ด ์‹œ์ ๊นŒ์ง€ **์—ฌ์ „ํžˆ ์œ ํšจ**ํ•˜๋ฉฐ, ์žฌ๋„์ž…์ด ํ™•์ธ๋˜๋ฉด ์ด ๋…ธํŠธ๋ฅผ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค.
100
+
101
+ > **v2.1.238+**: Bash ๋„๊ตฌ์˜ permission ๊ฒ€์‚ฌ๊ฐ€ zsh ์ „์šฉ ์กฐ๊ฑด๋ฌธ(shell conditional) ๋ฌธ๋ฒ•์— ๋Œ€ํ•ด ์ถ”๊ฐ€๋กœ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์œ„ v2.1.221 "zsh `[[ ]]` ์ •๊ทœ์‹ ์กฐ๊ฑด๋ฌธ ์•ˆ์—์„œ ์ˆจ๊ฒจ์ง„ ๋ช…๋ น์ด ๊ถŒํ•œ ๊ฒ€์‚ฌ๋ฅผ ์šฐํšŒ"์˜ **์ง์ ‘ ์—ฐ์žฅ์„ **์ž…๋‹ˆ๋‹ค โ€” "๊ฐœ์„ "์œผ๋กœ๋งŒ ๊ธฐ์ˆ ๋˜์–ด ์žˆ์–ด v2.1.221 ์ˆ˜์ •์ด ์™„์ „ ํ•ด๊ฒฐ์ด ์•„๋‹ˆ์—ˆ๊ฑฐ๋‚˜ ์ถ”๊ฐ€ ์šฐํšŒ ๋ฒกํ„ฐ๊ฐ€ ์žˆ์—ˆ์Œ์„ ์‹œ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ์ €์žฅ์†Œ์˜ Bash ๋„๊ตฌ ์‹คํ–‰ ์…ธ์ด zsh์ด๋ฏ€๋กœ(R005 #1540 ์‹ค์ธก) ์ง์ ‘ ๊ด€๋ จ๋ฉ๋‹ˆ๋‹ค.
102
+
103
+ > **v2.1.246/248+**: (246) ๋์— ๋งค๋‹ฌ๋ฆฐ `&&`/`||`๊ฐ€ ์žˆ๋Š” ์†์ƒ๋œ(malformed) ๋ช…๋ น์— ๋Œ€ํ•ด Bash ๊ถŒํ•œ๊ฒ€์‚ฌ๊ฐ€ ์ด์ œ **ํ•ญ์ƒ ์Šน์ธ์„ ์š”๊ตฌ**ํ•ฉ๋‹ˆ๋‹ค โ€” ๊ตฌ๋ฒ„์ „์—์„œ๋Š” ์ด๋Ÿฐ ํ˜•ํƒœ๊ฐ€ ๊ฒ€์‚ฌ๋ฅผ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. (248) `--restricted`(๋˜๋Š” `CLAUDE_CODE_RESTRICTED=1`) ๋ชจ๋“œ๊ฐ€ ์‹ ์„ค๋˜์–ด ๋ช…๋ น/์ฝ”๋“œ ์‹คํ–‰ ๋„๊ตฌ์™€ `WebFetch`๋ฅผ ์ œ๊ฑฐํ•˜๊ณ (`--tools`์— ๋ช…์‹œ ์‹œ ์˜ˆ์™ธ), ํŒŒ์ผ ๋„๊ตฌ๋ฅผ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€๋กœ ์ œํ•œํ•˜๋ฉฐ, `bypassPermissions`๋ฅผ ๊ฑฐ๋ถ€ํ•˜๊ณ , user/project/local settings ํŒŒ์ผ์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ์ €์žฅ์†Œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ `bypassPermissions`๋ฅผ ์“ฐ๋ฏ€๋กœ(R010 Universal bypassPermissions) `--restricted`์™€๋Š” **์ƒํ˜ธ ๋ฐฐํƒ€์ **์ž…๋‹ˆ๋‹ค โ€” ์ด ์ €์žฅ์†Œ ์›Œํฌํ”Œ๋กœ์šฐ์—๋Š” ์ ์šฉํ•˜์ง€ ์•Š๋˜, ์‹ ๊ทœ ์•ˆ์ „ ๋ชจ๋“œ ์˜ต์…˜์œผ๋กœ ์กด์žฌ๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
104
+
97
105
  ### Todo/Task ๋„๊ตฌ ๊ธฐ๋ณธ ์ œ๊ฑฐ (v2.1.233+) โ€” ์œ„ ํ‘œ์˜ โ€ 
98
106
 
99
107
  CHANGELOG v2.1.233 ์›๋ฌธ: *"Todo/task-tracking tools (TaskCreate/Get/Update/List, TodoWrite) are no longer available on Opus 4.8, Sonnet 5, Fable 5, Mythos 5, and newer models; set `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` to bring them back"*. ์ด ์ €์žฅ์†Œ ์—์ด์ „ํŠธ **49๊ฐœ ์ค‘ 46๊ฐœ**(`claude-sonnet-5` 41 + `claude-opus-5` 5)๊ฐ€ ๋Œ€์ƒ ๋ชจ๋ธ์ด๋ฏ€๋กœ ์‹คํ–‰ ํ™˜๊ฒฝ์˜ ๊ธฐ๋ณธ๊ฐ’์€ **๋ถ€์žฌ**๋‹ค(์ž”์—ฌ 3๊ฐœ๋Š” `haiku`).
@@ -35,6 +35,12 @@ The following git commands have caused working tree loss in past sessions (#1146
35
35
 
36
36
  > **v2.1.221/222+**: v2.1.222์—์„œ worktree-isolated ์„ธ์…˜๊ณผ ๊ทธ subagent๊ฐ€ main checkout์— ๋Œ€ํ•ด ํŒŒ๊ดด์  git ๋ช…๋ น์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋˜ ๋ฌธ์ œ๊ฐ€ ์ˆ˜์ •๋˜์–ด, isolation์ด ๋ชจ๋“  ์„ธ์…˜ ํƒ€์ž…์˜ file edit๊ณผ Bash์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. v2.1.221์—์„œ๋Š” `/fork` ์„ธ์…˜์ด ์›๋ณธ ์„ธ์…˜ checkout์ด ์•„๋‹ˆ๋ผ ์ž์ฒด worktree๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. **์™„ํ™” ์•„๋‹˜**: ์œ„ Destructive Git Commands ํ‘œ์˜ per-invocation ์Šน์ธ ์š”๊ตฌ์™€ ์•„๋ž˜ Pre-Delegation Blast-Radius Enumeration์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ isolation์€ ๊ฒฉ๋ฆฌ ๊ฒฝ๊ณ„๋ฅผ ๊ฐ•ํ™”ํ•  ๋ฟ, ์‚ฌ์šฉ์ž๊ฐ€ ํŒ๋‹จํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ blast-radius ์—ด๊ฑฐ๋ฅผ ๋Œ€์ฒดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(v2.1.183/208 ํ”Œ๋žซํผ ๋ธ”๋ก๊ณผ ๋™์ผํ•œ defense-in-depth ๊ด€๊ณ„).
37
37
 
38
+ > **v2.1.234/236/238+**: ์Šน์ธ ๋‹ค์ด์–ผ๋กœ๊ทธ ํ‘œ์‹œ ๋ฌด๊ฒฐ์„ฑ ๊ฒฐํ•จ์ด 3๊ฐœ ๋ฆด๋ฆฌ์ฆˆ ์—ฐ์†์œผ๋กœ ๋ฐœ๊ฒฌยท์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (234) permission ํ”„๋กฌํ”„ํŠธ comment ํ•„๋“œ์—์„œ Shift+Tab์„ ๋ˆ„๋ฅด๋ฉด ํ•„๋“œ๋ฅผ ๋‹ซ๋Š” ๋Œ€์‹  **edit์„ ์Šน์ธํ•˜๊ณ  ์„ธ์…˜ ์ „์ฒด edit ๊ถŒํ•œ์„ ๋ถ€์—ฌ**ํ•˜๋˜ ๊ฒฐํ•จ. (236) managed-settings ์Šน์ธ ํ”„๋กฌํ”„ํŠธ๊ฐ€ **ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด์„œ ์ฒซ ํ‚ค์ž…๋ ฅ์„ ์Šน์ธ์œผ๋กœ ์†Œ๋น„**ํ•˜๋˜ ๊ฒฐํ•จ โ€” ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ณด์ง€ ๋ชปํ•œ ์‚ฌ์šฉ์ž์˜ ๋ฌด๊ด€ํ•œ ์ž…๋ ฅ์ด ์Šน์ธ์œผ๋กœ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. (238) ๋Œ€ํ™”์ƒ์ž ํ‘œ์‹œ ํ…์ŠคํŠธ์™€ "don't ask again" ์˜ต์…˜์ด ์ด์ œ ํ•ญ์ƒ ์‹ค์ œ ์Šน์ธ ๋ฒ”์œ„์™€ ์ผ์น˜ํ•˜๋„๋ก ๊ฐœ์„ ๋˜๊ณ , ๋‚ด์šฉ์ด ์™„์ „ํžˆ ํ‘œ์‹œ๋  ์ˆ˜ ์—†์œผ๋ฉด "don't ask again"์ด ๋ณด๋ฅ˜๋ฉ๋‹ˆ๋‹ค. ์ด 3๊ฑด์€ ์œ„ v2.1.223 "ํƒญยท๋น„๊ฐ€์‹œ ์œ ๋‹ˆ์ฝ”๋“œ ํŒจ๋”ฉ ๋ช…๋ น์ด ์ž๊ธฐ ์ผ๋ถ€๋ฅผ ์ˆจ๊น€" ๊ฒฐํ•จ๊ณผ **๊ฐ™์€ ๊ณ„์—ด์˜ ๋ฐ˜๋ณต**์ด๋ฉฐ, ๋‹จ๋ฐœ ๊ฒฐํ•จ์ด ์•„๋‹ˆ๋ผ ์Šน์ธ ๋‹ค์ด์–ผ๋กœ๊ทธ ํ‘œ์‹œ ๋ฌด๊ฒฐ์„ฑ์ด ์—ฌ๋Ÿฌ ๋ฆด๋ฆฌ์ฆˆ์— ๊ฑธ์ณ ๊ณ„์† ๋ฐœ๊ฒฌ๋˜๊ณ  ์žˆ๋Š” ๊ตฌ์กฐ์  ๊ณ„์—ด์ž„์„ ์‹ค์ฆํ•ฉ๋‹ˆ๋‹ค. Pre-Delegation Blast-Radius Enumeration(๋ชจ๋ธ์ด ํŒŒ๊ดด ๋Œ€์ƒ์„ ๋ณ„๋„ ์—ด๊ฑฐ)์ด ํ”Œ๋žซํผ ๋‹ค์ด์–ผ๋กœ๊ทธ๋กœ ๋Œ€์ฒด๋  ์ˆ˜ ์—†๋‹ค๋Š” ์›์น™์€ ์ด ๋ฐ˜๋ณต์œผ๋กœ ๋”์šฑ ๊ฐ•ํ™”๋ฉ๋‹ˆ๋‹ค.
39
+
40
+ > **v2.1.236+**: macOS ์ƒŒ๋“œ๋ฐ•์Šค์—์„œ wildcard read-deny ๊ทœ์น™(์˜ˆ: `**/.env`)์ด ์ด์ œ ํ—ˆ์šฉ๋œ read ์˜์—ญ **๋‚ด๋ถ€์—์„œ๋„ ์šฐ์„  ์ ์šฉ**๋˜๊ณ , ๋งค์นญ๋œ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ฝ˜ํ…์ธ ๊นŒ์ง€ ์ปค๋ฒ„ํ•˜๋ฉฐ, ํŒŒ์ผ๋ช… ๋ณ€๊ฒฝ์œผ๋กœ ์šฐํšŒํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์œ„ v2.1.224 "sandbox filesystem deny ํ•ญ๋ชฉ์˜ ํ›„ํ–‰ ์Šฌ๋ž˜์‹œ๊ฐ€ ์กฐ์šฉํžˆ ์šฐํšŒ ๊ฐ€๋Šฅํ•˜๋˜ ๊ฒฐํ•จ"๊ณผ ๊ฐ™์€ sandbox deny ๊ทœ์น™ ์šฐํšŒ ๊ณ„์—ด์˜ ์ถ”๊ฐ€ ํ•˜๋“œ๋‹์ž…๋‹ˆ๋‹ค โ€” ๊ตฌ๋ฒ„์ „์—์„œ๋Š” read-deny ์™€์ผ๋“œ์นด๋“œ๊ฐ€ ํ—ˆ์šฉ ์˜์—ญ ์•ˆ์—์„œ ๋ฌด๋ ฅํ™”๋˜๊ฑฐ๋‚˜ ํŒŒ์ผ๋ช… rename์œผ๋กœ ์šฐํšŒ๋  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
41
+
42
+ > **v2.1.246/251+**: ์ž๊ฒฉ์ฆ๋ช… ์ „์†ก ๊ฒฝ๊ณ„ ๊ฒฐํ•จ 2๊ฑด์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. (246) ์„œ๋“œํŒŒํ‹ฐ ๊ฒŒ์ดํŠธ์›จ์ด(`ANTHROPIC_BASE_URL`)์šฉ API ํ‚ค๊ฐ€ Anthropic ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ/๋ฉ”ํŠธ๋ฆญ ์š”์ฒญ์— ํ•จ๊ป˜ ์‹ค๋ ค ์ „์†ก๋˜๋˜ ๊ฒฐํ•จ โ€” ๊ตฌ๋ฒ„์ „์—์„œ๋Š” ๊ฒŒ์ดํŠธ์›จ์ด ์ž๊ฒฉ์ฆ๋ช…์ด ์ž๊ธฐ ํ˜ธ์ŠคํŠธ ๋ฐ–์œผ๋กœ ์œ ์ถœ๋์Šต๋‹ˆ๋‹ค. (251) `/ultrareview` ๋ฐ ๋กœ์ปฌ ์‹œ๋”ฉ cloud session์ด `prod.env` ๊ณ„์—ดยท`*.tfvars` ํŒŒ์ผ, ๋˜๋Š” ์ž๊ฒฉ์ฆ๋ช… ํŒŒ์ผ์˜ ์—๋””ํ„ฐ swap/temp/backup ์‚ฌ๋ณธ(`key.pem.tmp`, `id_rsa.swo`)์„ ์—…๋กœ๋“œํ•˜๋˜ ๊ฒฐํ•จ โ€” ์ด์ œ ๋กœ์ปฌ์— ๋‚จ์Šต๋‹ˆ๋‹ค. ์ด ์ €์žฅ์†Œ๋Š” `/ultrareview`๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋‚˜, ๋‘ ํ•ญ๋ชฉ ๋ชจ๋‘ ์ด ์„น์…˜์˜ "์ž๊ฒฉ์ฆ๋ช… ์ €์žฅ์†Œ ๋คํ”„ ๊ธˆ์ง€" ์›์น™๊ณผ ๋™์ผํ•œ ์œ„ํ˜‘ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ํ”Œ๋žซํผ ์ธก ๋ฐฉ์–ด์ด๋ฏ€๋กœ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
43
+
38
44
  ### Pre-Delegation Blast-Radius Enumeration
39
45
 
40
46
  > Origin: #1307 ์ฐ๋น  #1 (High) โ€” user chose "discard local changes and pull", and `git reset --hard origin/develop` was delegated immediately โ†’ user rejected (interrupt). The blast radius โ€” that "discard local changes" included 18 files of *intended* uncommitted work (rule edits, new skills, new guides), not just a version downgrade โ€” was never enumerated for the user.