@chrono-meta/fh-gate 2.3.0 โ†’ 2.4.0

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.
Files changed (31) hide show
  1. package/.claude/rules/fh_4axis_gate.md +25 -0
  2. package/.claude-plugin/marketplace.json +2 -2
  3. package/CLAUDE.md +51 -6
  4. package/README.ja.md +14 -2
  5. package/README.ko.md +14 -1
  6. package/README.md +16 -2
  7. package/README.zh.md +12 -1
  8. package/knowledge/shared/harness-core/field_verdict_crossfamily_gate.md +231 -7
  9. package/knowledge/shared/harness-core/harness_incubator_doctrine.md +215 -1
  10. package/knowledge/shared/harness-core/ship_readiness_gate.md +168 -1
  11. package/knowledge/shared/learnings/subagent_invocations_log.yaml +24 -0
  12. package/package.json +6 -1
  13. package/plugins/fh-commons/.claude-plugin/plugin.json +1 -1
  14. package/plugins/fh-meta/.claude-plugin/plugin.json +1 -1
  15. package/plugins/fh-meta/CHANGELOG.md +57 -0
  16. package/plugins/fh-meta/skills/auto-decorrelation/SKILL.md +20 -0
  17. package/plugins/fh-meta/skills/steel-quench/SKILL.md +25 -2
  18. package/scripts/adapters/mate_agent_boundary.sh +27 -7
  19. package/scripts/capability_registry_check.sh +69 -3
  20. package/scripts/relay_channel.sh +151 -6
  21. package/scripts/selfcheck.sh +18 -0
  22. package/scripts/target_freeze.sh +239 -0
  23. package/scripts/test_adapter_lanes.sh +17 -0
  24. package/scripts/test_marker_standpoint_lanes.sh +83 -0
  25. package/scripts/test_marker_thirdparty_lanes.sh +73 -0
  26. package/scripts/test_regression_guard_ci_lanes.sh +170 -0
  27. package/scripts/test_relay_channel_lanes.sh +146 -17
  28. package/scripts/test_target_freeze_lanes.sh +203 -0
  29. package/templates/.git-hooks/pre-commit +242 -0
  30. package/templates/PRE-PUBLISH-CHECKLIST.md +22 -0
  31. package/templates/regression_guard.sh +32 -4
@@ -110,6 +110,11 @@ this chamber's field emit terminus); an **FH-internal utility** (a skill/script/
110
110
  field harness) instead routes through the **New-Skill Pre-Commit gate + `asset-placement-gate`** (the
111
111
  same gate every FH asset passes). KILL emits nothing โ€” the workspace stays as the evidence record.
112
112
 
113
+ > ๐ŸŸฅ **2026-08-17 ์ดํ›„ ์ด ๋ฌธ๋‹จ์€ ๋‹จ๋…์œผ๋กœ ์ฝ์œผ๋ฉด ํ‹€๋ฆฐ๋‹ค.** ์•„๋ž˜ ยซclears **all four**ยป ์ค‘
114
+ > **(1) net-new ๋Š” ๋” ์ด์ƒ KILL ์‚ฌ์œ ๊ฐ€ ์•„๋‹ˆ๋‹ค**(โ†’ `CURATED` ๋ผ์šฐํŒ…) โ€” ยง3-SCREEN-2026-08-17 ๋กœ
115
+ > ๋Œ€์ฒด๋๊ณ , (2) ๋Š” `NOT-APPLICABLE` ๋ผ์šฐํŒ…์ด๋‹ค. **(3)ยท(4) ๋Š” KILL ๋กœ ๊ทธ๋Œ€๋กœ ์œ ํšจํ•˜๋‹ค.**
116
+ > ์•„๋ž˜ ๋ณธ๋ฌธ์€ ๊ทธ ์ •์ • ์ด์ „์˜ ์›๋ฌธ์ด๋ฉฐ ์ด๋ ฅ์œผ๋กœ ๋ณด์กดํ•œ๋‹ค.
117
+
113
118
  **EMIT-worthiness โ€” the measured screening criterion (runs #5โ€“#6, 2026-07-14)**: six chamber runs, EMIT
114
119
  0/6, all KILL. A candidate is emit-worthy only if it clears **all four** of โ€” (1) **net-new** (not a
115
120
  reinvention of an existing FH/official asset, nor a cosmetic re-wrap of code that already ships โ€” runs
@@ -132,6 +137,90 @@ standalone graduations โ€” not yet *birthing*. **Graduation order** (run #6's po
132
137
  hub-state-dependent capability graduates hub-internal โ†’ proven in use โ†’ THEN extracted portable, never
133
138
  speculated standalone-first โ€” the only path every successfully-portable FH asset actually took.
134
139
 
140
+ ---
141
+
142
+ ### ๐ŸŸข ยง3-SCREEN-2026-08-17 โ€” **(1) net-new ๋Š” ๋” ์ด์ƒ KILL ์‚ฌ์œ ๊ฐ€ ์•„๋‹ˆ๋‹ค** (์šด์˜์ž ๊ฒฐ์ •)
143
+
144
+ > *"์‚ฌ๋žŒ๋“ค์ด ์ž์‹ ์ด ๊ตฌ์ƒํ•œ ํ•˜๋„ค์Šค๋ฅผ ์ธํ๋ฒ ์ดํŒ…์œผ๋กœ ํ•ด์„œ ์ถœํ•˜ํ•˜๋ ค๋Š”๋ฐ, ๊ทธ๋Ÿด ๋•Œ๋งˆ๋‹ค ํ•ญ์ƒ
145
+ > **ยซ์ด๋ฏธ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด์•ผยป๋ผ๊ณ  ๋ฆฌ์ ์‹œํ‚ค๋ฉด ์“ฐ๊ณ  ์‹ถ์€ ์ƒ๊ฐ์ด ๋“ค๊นŒ?** ๊ทธ๊ฒƒ๋ณด๋‹ค๋Š” ยซ์ด๋ฏธ ์ด๋Ÿฌํ•œ
146
+ > ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ์žˆ๋Š”๋ฐ **๋„ˆ๋งŒ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ ์ถœ๋ฐœํ•ด๋ณด์ž**ยป๊ฐ€ ๋˜์–ด์•ผ ํ• 
147
+ > ๊ฒƒ ๊ฐ™์•„. **์ธํ๋ฒ ์ดํŒ…์ด ํ•„์š”์—†๋‹ค๋ฉด ํ๋ ˆ์ดํŒ…์œผ๋กœ ๊ฐ€๋ฉด ๋˜๋Š” ๊ฑฐ๊ณ .**"*
148
+ > ยท *"**๊ทธ ์‚ฌ๋žŒ์ด ๋งŒ๋“ค๋ ค๋Š” ๊ฑธ ์ธํ๋ฒ ์ดํ„ฐ๊ฐ€ ๋ง‰์„ ํ•„์š”๊ฐ€ ์žˆ์„๊นŒ. ๊ทธ๋ƒฅ ๋งŒ๋“ค๊ฒŒ ๋‘๋ฉด ๋˜์ง€.**"*
149
+ > ยท *"์ธํ๋ฒ ์ดํ„ฐ๋Š” **ํ›ˆ์ˆ˜๋ฅผ ๋†“๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ์žฅ์น˜๊ฐ€ ์•„๋‹ˆ๋ผ**, ์›ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋‚˜ ํ•˜๋„ค์Šค๋ฅผ
150
+ > **์ถœํ•˜ ์ „๋ถ€ํ„ฐ ๋ฏธ๋ฆฌ ๊ตด๋ ค๋ณด๊ณ  ์‚ฌ์šฉํ•ด๋ณด๊ฒŒ ํ•˜๋Š” ์—๋ฎฌ๋ ˆ์ด์…˜**๊ณผ ๊ทธ๋กœ ์ธํ•ด ์ž์‹ ๋งŒ์˜ ๊ฒƒ์„
151
+ > **์„ฑ์ˆ™ํ•˜๊ฒŒ ์ถœํ•˜์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์žฅ์น˜**"*
152
+
153
+ **๋ฐ”๋€Œ๋Š” ๊ฒƒ โ€” ๊ธฐ์ค€์€ ๋‚จ๊ณ , ๊ทธ ๊ธฐ์ค€์˜ ยซํŒ์ • ๊ฒฐ๊ณผยป๊ฐ€ ๋ฐ”๋€๋‹ค:**
154
+ ```
155
+ ์ „ net-new ๋ฏธ๋‹ฌ โ†’ KILL (ํ›„๋ณด๊ฐ€ ํšŒ์ˆ˜๋œ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ๋นˆ์†์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค)
156
+ ํ›„ net-new ๋ฏธ๋‹ฌ โ†’ **CURATED** (์„ ํ–‰ ๋ชฉ๋ก + ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒƒ + ๊ทธ๊ฒƒ์ด ์•ˆ ๋ฎ๋Š” ๋ธํƒ€๋ฅผ ์ค€๋‹ค)
157
+ โ†’ ์‚ฌ์šฉ์ž๊ฐ€ ยซ๊ทธ๊ฑฐ ์“ธ๊ฒŒยป ๋ฉด ๊ฑฐ๊ธฐ์„œ ๋(ํ๋ ˆ์ดํŒ… ์ข…๋ฃŒ)
158
+ โ†’ ์‚ฌ์šฉ์ž๊ฐ€ ยซ๋‚ด ๊ฑธ ๋งŒ๋“ค๋ž˜ยป ๋ฉด **์ธํ๋ฒ ์ดํ„ฐ๋กœ ๋“ค์–ด๊ฐ„๋‹ค**
159
+ ```
160
+ ๐ŸŸฅ **์ „ํ™˜์ ์€ ํŒ์ •์ด ์•„๋‹ˆ๋ผ ์˜์‚ฌ๋‹ค.** ์ธํ๋ฒ ์ดํ„ฐ๋Š” ใ€Œ์ด๊ฒŒ ์ƒˆ๋กœ์šด๊ฐ€ใ€๋ฅผ ๋ฌป์ง€ ์•Š๊ณ  ใ€Œ๋„ˆ ๋งŒ๋“ค ๊ฑฐ๋ƒใ€๋ฅผ
161
+ ๋ฌป๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„ ํ–‰ ๋ชฉ๋ก์€ **ํšŒ์ˆ˜ ํ†ต๋ณด๊ฐ€ ์•„๋‹ˆ๋ผ ์žฌ๋ฃŒ ๋ชฉ๋ก**์ด๋‹ค โ€” ์•„๋ž˜ ยง3-SCREEN-b.
162
+
163
+ ๐ŸŸฅ **์ดˆํŒ์ด ์—ฌ๊ธฐ์„œ ๊ฒŒ์ดํŠธ๋ฅผ ๋ฌด๋ ฅํ™”ํ–ˆ๊ณ , ์ ๋Œ€๊ฒ€์ฆ์ด ์ปค๋ฐ‹ ์ „์— ์žก์•˜๋‹ค. ๊ทธ ์ •์ •์„ ๋‚จ๊ธด๋‹ค.**
164
+ ์ดˆํŒ์€ ยซ์ง„์งœ KILLยป ์„ ์…‹์œผ๋กœ ์ค„์ด๋ฉฐ **(3) ์„ ใ€Œprecision ์„ ๋งŒ๋“ค ์ˆ˜ ์—†์Œ(์›๋ฆฌ์  ๋ถˆ๊ฐ€)ใ€์œผ๋กœ
165
+ ๋ฐ”๊พธ๊ณ  (4) ๋ฅผ ใ€Œํ˜•ํƒœ ๋ผ์šฐํŒ…ใ€์œผ๋กœ ๊ฒฉํ•˜**ํ–ˆ๋‹ค. ๋‘˜ ๋‹ค ํ‹€๋ ธ๋‹ค:
166
+ - **(3) ์˜ ์›๋ฌธ์€ ยซ์›๋ฆฌ์  ๋ถˆ๊ฐ€ยป ๊ฐ€ ์•„๋‹ˆ๋ผ ยซ์‹ค์ธก ๋ฏธ๋‹ฌยป ์ด๋‹ค** โ€” *"run #5's rule scored **5/5
167
+ false-positive** on 111 real files; run #6's heuristic scored **14/22 false-fire**"*.
168
+ ์ดˆํŒ ๋ฌธ์žฅ๋Œ€๋กœ๋ฉด **๋Ÿฐ #5ยท#6 ์ด KILL ์ด ์•„๋‹ˆ๊ฒŒ ๋œ๋‹ค**(๋‘˜ ๋‹ค precision ์„ *๋งŒ๋“ค ์ˆ˜๋Š”* ์žˆ์—ˆ๋‹ค).
169
+ - **ํ•ฉ์‚ฐ์ด ์ง„์งœ ๋ฌธ์ œ์˜€๋‹ค**: ์ด ์ ˆ์ด ์ฑ”๋ฒ„์˜ ์‹ค์ฆ๋œ ๊ฐ’์–ด์น˜๋ฅผ ์…‹์œผ๋กœ ์ ๋Š”๋ฐ
170
+ (*"preventing **reinventions** ยท **low-precision births** ยท **premature standalone
171
+ graduations**"*), ์ดˆํŒ์ด ์žฌ๋ฐœ๋ช…โ†’CURATE ยท (3)โ†’์›๋ฆฌ์ ๋ถˆ๊ฐ€ ยท (4)โ†’ํ˜•ํƒœ๋ผ์šฐํŒ… ์œผ๋กœ
172
+ **์…‹ ๋‹ค ๋บ๋‹ค.** ๋‚จ๋Š” entry ์Šคํฌ๋ฆฐ์ด ใ€Œ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“ค๊ฒ ๋‹ค๊ณ  ํ•˜๋‚˜ใ€ ํ•˜๋‚˜๋ฟ์ด ๋๋‹ค.
173
+
174
+ **๊ทธ๋ž˜์„œ ์ด๋ ‡๊ฒŒ ์ •๋ฆฌํ•œ๋‹ค โ€” entry ์™€ exit ๋ฅผ ์„ž์ง€ ์•Š๋Š”๋‹ค** (ยง3-c ๊ฐ€ *"two different questions,
175
+ **do not merge them**"* ์ด๋ผ๊ณ  ๋ช…์‹œํ•œ ๊ทธ ๋ถ„๋ฆฌ):
176
+
177
+ ```
178
+ โ”€โ”€ ENTRY (๋“ค์–ด๊ฐˆ ๋•Œ, ์ด ์ ˆ) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
179
+ (1) net-new ๋ฏธ๋‹ฌ โ†’ **CURATED** ๋ผ์šฐํŒ…. KILL ์•„๋‹˜ (ยง3-SCREEN-2026-08-17)
180
+ (2) artifact-shaped ๋ฏธ๋‹ฌ โ†’ **NOT-APPLICABLE**. ํŒ๋‹จ-๋ฐฉ๋ฒ•์€ ์ด ์ธํ๋ฒ ์ดํ„ฐ์˜ ์‚ฐ์ถœ ํ˜•ํƒœ๊ฐ€ ์•„๋‹ˆ๋‹ค
181
+ (3) precision **์‹ค์ธก ๋ฏธ๋‹ฌ** โ†’ **KILL ์œ ์ง€** ๐ŸŸฅ ยซ๋ชป ๋งŒ๋“ ๋‹คยป ๊ฐ€ ์•„๋‹ˆ๋ผ ยซ๋Œ๋ ค๋ดค๋”๋‹ˆ ๋‚˜๋นด๋‹คยป ๋‹ค
182
+ (4) hub-state ์˜์กด โ†’ **KILL ์œ ์ง€** ๐ŸŸฅ premature standalone graduation ๋ฐฉ์ง€๊ฐ€ ์ด ์ถ•์˜ ์ผ์ด๊ณ ,
183
+ ยง3 ๋ง๋ฏธ์˜ Graduation order(hub-internal โ†’ proven โ†’ extract)๊ฐ€ ๊ทธ ์ฒ˜๋ฐฉ์ด๋‹ค
184
+ โ˜… ์‚ฌ์šฉ์ž๊ฐ€ ยซ์•ˆ ๋งŒ๋“ค๋ž˜ยป โ†’ **์ข…๋ฃŒ**(ํ๋ ˆ์ดํŒ…์œผ๋กœ ๋. KILL ์›์žฅ์— ์„ธ์ง€ ์•Š๋Š”๋‹ค)
185
+
186
+ โ”€โ”€ EXIT (๋‚˜์˜ฌ ๋•Œ, ยง3-c) โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
187
+ ยซ์„ค ์ˆ˜ ์—†๋‹คยป(inability-to-run) โ†’ **KILL**. ์•ฝํ•จ์€ KILL ์•„๋‹˜(ยง3-c โ‘ฃ)
188
+ ```
189
+ ๐ŸŸฅ **์›๋ฆฌ์ ์œผ๋กœ precision ์„ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๋Œ€์ƒ**(ํŒ๋ณ„ ์Œ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ)์€ KILL ์ด ์•„๋‹ˆ๋ผ
190
+ **`NOT-APPLICABLE`** ์ด๋‹ค โ€” ํ›„๋ณด์˜ ์‹คํŒจ๊ฐ€ ์•„๋‹ˆ๋ผ **์ด ์ธํ๋ฒ ์ดํ„ฐ์˜ ๋ฐ”๊ฐ€ ์•ˆ ๋งž๋Š” ๊ฒƒ**์ด๋‹ค.
191
+
192
+ โš ๏ธ **ยง3-c ์˜ ํ•œ ๋ฌธ์žฅ์ด ์ด ์ •์ •์œผ๋กœ ๊ฐฑ์‹ ๋œ๋‹ค**: *"clear this one and fail the first
193
+ (**alive, but a reinvention**)"* โ€” ๊ทธ ๋ถ„๊ธฐ๋Š” ์ด์ œ KILL ์ด ์•„๋‹ˆ๋ผ **CURATED ๋กœ ๋ผ์šฐํŒ…**๋œ๋‹ค.
194
+
195
+ **โš ๏ธ ๊ฒฝ๊ณ„๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.** ์žฌ๋ฐœ๋ช…์ด๋ผ๋Š” *์‚ฌ์‹ค*์€ ์—ฌ์ „ํžˆ ์ธก์ •ํ•˜๊ณ  ๊ธฐ๋กํ•œ๋‹ค. ๋ฐ”๋€ ๊ฒƒ์€
196
+ ๊ทธ ์‚ฌ์‹ค์„ **๋ˆ„๊ตฌ์—๊ฒŒ ๋ฌด์—‡์œผ๋กœ ์ฃผ๋А๋ƒ**๋‹ค: ๊ฒŒ์ดํŠธ์˜ ํŒ์ • ๊ทผ๊ฑฐ โ†’ ์ œ์ž‘์ž์˜ ์ถœ๋ฐœ์ .
197
+
198
+ ### ยง3-SCREEN-b โ€” **์„ ํ–‰์€ ์žฌ๋ฃŒ๋‹ค** (์ธํ๋ฒ ์ดํŒ… ๊ฐ€์†ํ™”, ์šด์˜์ž)
199
+
200
+ > *"์•ž์„œ ์ฐพ์•˜๊ฑฐ๋‚˜ ์ •๋ง ์ƒˆ๋กœ์šด ๊ฑฐ๋ผ๋ฉด ๊ฒ€์ƒ‰ํ•œ ๋ ˆํฌ ์ค‘์—์„œ **๋ฐฐ์›Œ์˜ฌ ๋งŒํ•œ ๊ฒƒ๋“ค์„ ์ผ๋ถ€๋งŒ ๋นŒ๋ ค์™€์„œ
201
+ > ๊ฐœ๋ฐœํ•ด ๋‚˜๊ฐ€๋Š” ๊ฒƒ**์ด ๊ณง ์ธํ๋ฒ ์ดํŒ… **๊ฐ€์†ํ™”**์˜ ๋ฐฉ๋ฒ•์ด ๋˜๊ธฐ๋„ ํ•˜๊ฒ ์ง€. ์ œ๋กœ๋ถ€ํ„ฐ ์ž์‹ ๋งŒ์˜
202
+ > ์•„์ด๋””์–ด๋งŒ์œผ๋กœ ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ **ํ”„๋Ÿฐํ‹ฐ์–ด์—์„œ ๋ฐฐ์›Œ์˜ด์œผ๋กœ์„œ ์‹œ์ž‘์ ๋ถ€ํ„ฐ ํ”„๋Ÿฐํ‹ฐ์–ด๊ธ‰ ๊ฐ€๋Šฅ์„ฑ์„
203
+ > ํ’ˆ์€ ์ฑ„ ํƒœ์–ด๋‚˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ.** ๊ฐœ๋ฐœ์ž๋“ค์ด ์ฝ”๋“œ๋ฅผ ๋‹ค ์ƒˆ๋กœ ์งœ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ **๊ตฌ๊ธ€๋งํ•˜๋Š” ์ „ํ†ต**์ด
204
+ > ์žˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ."*
205
+
206
+ ๐ŸŸฅ **๊ฐ€์žฅ ๋‚ ์นด๋กœ์šด ํ˜•ํƒœ**: **์žฌ๋ฐœ๋ช… ์œ„ํ—˜์ด ๋†’๋‹ค๋Š” ๊ฒƒ์€, ๊ทธ๋งŒํผ ๋นŒ๋ ค์˜ฌ ์„ ํ–‰์ด ๋งŽ๋‹ค๋Š” ๋œป์ด๋‹ค.**
207
+ ์˜› taxonomy ๋Š” ์ด๊ฒƒ์„ **๊ฑฐ๊พธ๋กœ** ์ฝ์—ˆ๋‹ค โ€” ์žฌ๋ฃŒ๊ฐ€ ํ’๋ถ€ํ• ์ˆ˜๋ก ์ฃฝ์˜€๋‹ค.
208
+ ```
209
+ ์ „ ๋ ˆํผ๋Ÿฐ์Šค ๋ฐœ๊ฒฌ โ†’ KILL ๊ทผ๊ฑฐ โ†’ ๋ฐฐ์ถœ ํ™•๋ฅ  0 ยท ์‚ฌ์šฉ์ž๋Š” ๋นˆ์†
210
+ ํ›„ ๋ ˆํผ๋Ÿฐ์Šค ๋ฐœ๊ฒฌ โ†’ ๋นŒ๋“œ ์žฌ๋ฃŒ โ†’ ์‹œ์ž‘์ ๋ถ€ํ„ฐ ํ”„๋Ÿฐํ‹ฐ์–ด๊ธ‰ ยท ์‚ฌ์šฉ์ž๋Š” ๋ชฉ๋ก์„ ๋“ค๊ณ  ๊ฐ„๋‹ค
211
+ ```
212
+ **๊ฐ™์€ ์ •๋ณด, ์†Œ๋น„์ฒ˜๋งŒ ๋ฐ”๊พธ๋ฉด ์ •๋ฐ˜๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค.** ๊ทธ๋ฆฌ๊ณ  ์ด๊ฑด ยง3-c ์˜ EMIT ๋ฐ”(ยซ์„ค ์ˆ˜ ์žˆ๋‚˜ยป)๋ฅผ
213
+ **๋” ์‰ฝ๊ฒŒ ๋„˜๊ฒŒ ๋งŒ๋“ ๋‹ค** โ€” ์ฆ‰ ํ๋ ˆ์ดํŒ…์€ ์ธํ๋ฒ ์ดํŒ…์˜ **๊ด€๋ฌธ์ด ์•„๋‹ˆ๋ผ ์„ฑ๊ณต๋ฅ ์„ ์˜ฌ๋ฆฌ๋Š” ์žฅ์น˜**๋‹ค.
214
+
215
+ **์‹ค๋ฌผ ๋Œ€์กฐ(์ฑ”๋ฒ„ ๋Ÿฐ #13 `n-eff-probe`, 2026-08-17)**: K1(์žฌ๋ฐœ๋ช…)์œผ๋กœ KILL ๋๊ณ , ๊ทธ ๊ทผ๊ฑฐ์˜€๋˜
216
+ ์„ ํ–‰ 5๊ฑด(capture-recapture ยท double-fault measure ยท Snyk VulnBench ยท BenchGuard ยท SAST overlap)์€
217
+ ์ƒˆ taxonomy ์—์„œ **๋ถ€ํ’ˆ ๋ชฉ๋ก**์ด๋‹ค โ€” ํ†ต๊ณ„๋Ÿ‰์€ ๊ธฐ์„ฑํ’ˆ์„ ์“ฐ๊ณ  ์ƒˆ๋กœ ๋งŒ๋“ค ๊ฒƒ์ด ใ€Œํฌ๋กœ์Šค-๋…ธ๋“œ ๋ฐฐ์„  +
218
+ ํ”ฝ์Šค์ฒ˜ใ€ ํ•˜๋‚˜๋กœ ์ค„์–ด๋“ ๋‹ค. **ํŒ์ •์„ ์†Œ๊ธ‰ํ•ด ๋ฌด๋ฅด์ง€๋Š” ์•Š๋Š”๋‹ค**(์‚ฌ์ „๋“ฑ๋ก ์›์น™). ๋ฐ”๋€ ๊ฒƒ์€
219
+ **๋‹ค์Œ ํ›„๋ณด๊ฐ€ ๊ฐ™์€ ์ž๋ฆฌ์—์„œ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌ๋˜๋Š”๊ฐ€**๋‹ค.
220
+
221
+ > **์ •๋ณธ**: `tracks/_meta/fh_signal_2026-08-17_incubator-is-not-a-gate.md`
222
+ > โ€” ํ๋ฆ„ ์ „์ฒด ยท ํ๋ ˆ์ดํŒ…์˜ ์ž๋ฆฌ(โ‘ค ์ฆํญ์ž) ยท ์ง„์ž…๋กœ B(์ถ•์  ๊ธฐ๋ฐ˜ ์ œ์•ˆ) ยท ์›์žฅ ๊ณผ์†Œ๊ณ„์ƒ ์‹ค์ธก.
223
+
135
224
  **Chamber scope โ€” what belongs in the chamber at all (run #7, 2026-07-14)**: run #7 tested a hub-internal
136
225
  reactivation of the cluster-wizard signal and KILLed it โ€” decisively on its own merits (its "narrow
137
226
  net-new" claim collapsed against the real shipped registry and an already-existing synergy skill), but
@@ -218,7 +307,89 @@ meta harness easy to birth (a declaration starts one) โ”‚ needs endless tendi
218
307
 
219
308
  A meta-harness cannot clear a bar that reads *"walks on day one"* โ€” not because it is worse, but
220
309
  because unbounded growth is its point. FH itself is the standing evidence: it is tended continuously,
221
- by design. **Therefore a meta-harness candidate is not a chamber candidate.**
310
+ by design. ~~**Therefore a meta-harness candidate is not a chamber candidate.**~~
311
+
312
+ ### ๐ŸŸฅ ยง3-a-1-2026-08-17 โ€” ์œ„ ๊ฒฐ๋ก  ๋ฌธ์žฅ์€ **ํ๊ธฐํ•œ๋‹ค. ๋ฒ”์œ„๊ฐ€ ๊ณผํ–ˆ๋‹ค** (์šด์˜์ž ๊ฒฐ์ •)
313
+
314
+ **ํ๊ธฐ ์‚ฌ์œ  โ‘  โ€” ์•„๋ž˜์ชฝ ๋ฒ”์œ„๋Š” ์ด๋ฏธ ๋„“ํ˜€์ ธ ์žˆ์—ˆ๊ณ , ์ด ํŒŒ์ผ์ด ๊ทธ ํ™•์žฅ์„ ๋ฐ˜์˜ํ•˜์ง€ ์•Š์•˜๋‹ค.**
315
+ `ship_readiness_gate.md ยงโ’ท-layering`(2026-08-16, ์šด์˜์ž ๋ฐœํ™” ๊ธฐ๋ฐ˜)์ด โ‘ก ์˜ ๋ฒ”์œ„๋ฅผ ์ด๋ ‡๊ฒŒ ์ ๋Š”๋‹ค:
316
+ > *"โ‘ก ํ”„๋กœ์ ํŠธ ์ธํ๋ฒ ์ดํ„ฐ | **์œ ๋‹›์„ ๋‚ณ๋Š”๋‹ค โ€” ํ•˜๋„ค์Šค๋งŒ์ด ์•„๋‹ˆ๋‹ค.** โ€ฆ ๋ฒ”์œ„๊ฐ€ **ํ•˜๋„ค์Šค ยท ์Šคํ‚ฌ ยท
317
+ > ์—์ด์ „ํŠธ** ยท ํ•˜๋„ค์Šค ํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ๋ ˆํฌ๊นŒ์ง€๋‹ค"*
318
+
319
+ ๐ŸŸฅ **์ดˆํŒ์€ ์ด๊ฑธ ยซ8์ผ ์ „์— ๋’ค์ง‘ํ˜”๋Š”๋ฐ ์•ˆ ๊ณ ์ณ์กŒ๋‹ค = half-fix ์ „ํŒŒ ๊ฒฐํ•จยป ์ด๋ผ๊ณ  ์ ์—ˆ๋‹ค. ํ‹€๋ ธ๊ณ ,
320
+ ์ ๋Œ€๊ฒ€์ฆ์ด ์žก์•˜๋‹ค** โ€” ๊ทธ ์ค„์ด ๋„“ํžŒ ๊ฒƒ์€ ์‚ฌ๋‹ค๋ฆฌ์˜ **์•„๋ž˜์ชฝ**(์Šคํ‚ฌยท์—์ด์ „ํŠธยท์ผ๋ฐ˜ ๋ ˆํฌ)์ด๊ณ ,
321
+ ํ๊ธฐ ๋Œ€์ƒ ๋ฌธ์žฅ์€ **์œ„์ชฝ**(meta-**harness**)์— ๋Œ€ํ•œ ์ง„์ˆ ์ด๋ผ **๋‘˜์€ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์–‘๋ฆฝํ•œ๋‹ค**
322
+ (ํ•˜์œ„๋ฅผ ํฌํ•จํ•œ๋‹ค๊ณ  ์ƒ์œ„๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค). ๊ฒŒ๋‹ค๊ฐ€ ๊ทธ ์ค„์— **ใ€Œmd ๊ทœ์œจใ€์€ ์—†๋‹ค** โ€” ๊ทธ๊ฑด
323
+ 2026-08-17 ์šด์˜์ž ๋ฐœํ™”์—์„œ๋งŒ ๋‚˜์˜จ๋‹ค. **๊ฒฐํ•จ ๊ท€์†์„ ์ฒ ํšŒํ•˜๊ณ  ์‚ฌ์œ ๋ฅผ ์•ฝํ™”ํ•œ๋‹ค**: ๋’ค์ง‘ํžŒ ๊ฒŒ
324
+ ์•„๋‹ˆ๋ผ **๋ฒ”์œ„ ํ™•์žฅ์ด ์ด ํŒŒ์ผ์— ๋ฐ˜์˜๋˜์ง€ ์•Š์€ ๊ฒƒ**์ด๋‹ค. (๊ทธ๋ฆฌ๊ณ  ํ๊ธฐ ์ž์ฒด๋Š” ์‚ฌ์œ  โ‘ข ์œผ๋กœ ์„ ๋‹ค.)
325
+
326
+ **ํ๊ธฐ ์‚ฌ์œ  โ‘ก โ€” ๋…ผ๊ฑฐ๊ฐ€ ์‹ค์ œ๋กœ ๋ฎ๋Š” ๋ฒ”์œ„๋Š” ยซํ•˜๋„ค์Šค ๊ธ‰ยป ๋ฟ์ด๋‹ค.**
327
+ ์œ„ ๋…ผ๊ฑฐ๋Š” *"unbounded growth ๊ฐ€ ๋ณธ์งˆ์ด๋ผ day-one walk ๋ฅผ ๋ชป ๋„˜๋Š”๋‹ค"* ์ธ๋ฐ, ๊ทธ๊ฑด **meta-harness**
328
+ ์— ๋Œ€ํ•œ ์ง„์ˆ ์ด๋‹ค. ์Šคํ‚ฌ ยท ์—์ด์ „ํŠธ ยท md ๊ทœ์œจ์€ **day-one walk ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค โ€” ๐ŸŸฅ ๋‹จ ๋ฏธ๊ฒ€์ฆ์ด๋‹ค.**
329
+
330
+ โš ๏ธ **์ดˆํŒ์€ ยซ์‹ค์ œ๋กœ ๋„˜๊ณ  ์žˆ๋‹คยป ๊ณ  ์ ์—ˆ๋Š”๋ฐ ๊ทผ๊ฑฐ๊ฐ€ ์—†์—ˆ๊ณ , ๋ฐ˜๋ก€๊ฐ€ ๊ฐ™์€ ๋ ˆํฌ์— ์žˆ๋‹ค.**
331
+ day-one walk ์˜ ์ •์˜๋Š” *"on the first run, with the user adding nothing, the thing produces
332
+ something useful"* ์ด๊ณ  ๋ฐ˜๋Œ€๋ง์ด `built-but-not-wired`, ๊ทธ๋ฆฌ๊ณ  *"**wiring is part of the birth**"*
333
+ ๋‹ค. **md ๊ทœ์œจ์€ ๊ตฌ์กฐ์ ์œผ๋กœ ํ˜ธ์ถœ๋ถ€๊ฐ€ ์—†๋‹ค**(์‚ด๋ฆฌ์–ธ์Šค). ์‹ค์ œ ๋ฐ˜๋ก€:
334
+ `.claude/rules/fh_4axis_gate.md` ์˜ `standpoint:` ํ•„๋“œ โ€” *"Still validated by nothing โ€” zero hook
335
+ lines, no fixture suite"* ์˜€๊ณ , `tier1b` ๋“ฑ๊ธ‰์ด **์—†์–ด์„œ ์ •์  ๋ฆฌ๋ทฐ๊ฐ€ tier2 ๋กœ ๊ธฐ๋ก**๋๋‹ค.
336
+ `axes-run` ๊ธฐํ˜ธ ํ‚ค๋„ 53๊ฑด ์ค‘ 2๊ฑด์ด ์˜› ์˜๋ฏธ๋กœ ์“ฐ์˜€๋‹ค. **ํƒœ์–ด๋‚ฌ๊ณ  ์•ˆ ๊ฑธ์€ md ๊ทœ์œจ๋“ค**์ด๋‹ค.
337
+
338
+ โ‡’ **์œ ๋‹› ํด๋ž˜์Šค๋ณ„ day-one walk ํŒ์ •์ž๋ฅผ ๋”ฐ๋กœ ๊ฑด๋‹ค**:
339
+ ```
340
+ ์Šคํ‚ฌ ยท ์—์ด์ „ํŠธ ์ฒซ ๋Ÿฐ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋ฌด๊ฒƒ๋„ ์•ˆ ๋”ํ•˜๊ณ  ์“ธ ๋งŒํ•œ ์‚ฐ์ถœ์ด ๋‚˜์˜ค๋Š”๊ฐ€
341
+ md ๊ทœ์œจ ๐ŸŸฅ **๋ธ”๋ผ์ธ๋“œ floor-tier sim ์ด ์‹ค์ œ๋กœ ๊ทธ ๊ทœ์œจ์„ ๋ฐœํ™”ํ•˜๋Š”๊ฐ€**
342
+ (CLAUDE.md ยงSkeleton, Not Muscle โ€” "done ์€ ๋ธ”๋ผ์ธ๋“œ ์„ธ์…˜์ด ์‹ค์ œ๋กœ ๋ฐœํ™”ํ•˜๋Š” ๊ฒƒ")
343
+ ```
344
+
345
+ **ํ๊ธฐ ์‚ฌ์œ  โ‘ข โ€” ๊ทธ ์…‹์ด ์ด ์ธํ๋ฒ ์ดํ„ฐ์˜ ์ตœ๋Œ€ ์‚ฐ์ถœ์ด๋‹ค** (์šด์˜์ž, 2026-08-17):
346
+ > *"**FH ์˜ ์Šคํ‚ฌ ์ƒ๋‹น์ˆ˜๋Š” ํ›„์ž์‹(์ถ•์  ๊ธฐ๋ฐ˜)์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๊ณ ** ์ „์ž๋„ ๊ฑฐ๊ธฐ์— ํ•ด๋‹นํ•˜์ง€.
347
+ > FH ์Šคํ‚ฌ์€ **๋‚ด ์•„์ด๋””์–ด๋กœ ๋ฐœ๋ช…**ํ•œ ๊ฑฐ๋‹ˆ๊นŒ."* ยท
348
+ > *"์ธํ๋ฒ ์ดํ„ฐ์˜ **์ตœ๋Œ€ ๋ ˆ๋ฒ„๋Š” ํ•˜๋„ค์Šค**์ด์ง€๋งŒ ๊ทธ **ํ•˜์œ„์˜ ๊ฒƒ๋“ค์€ ๋‹ค ํฌํ•จ**๋œ๋‹ค.
349
+ > ์Šคํ‚ฌ ยท ์—์ด์ „ํŠธ ยท **md ๊ทœ์œจ** ๋“ฑโ€ฆ"* ยท
350
+ > *"์ธํ๋ฒ ์ด์…˜ ๋Œ€์ƒ์€ ๋งˆ๊ฐ์‹œ์  ์ •๋ฆฌ ์‹œ **FH ์ž์ฒด๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ๋‹ค.**"*
351
+
352
+ ### ๐ŸŸฅ ๊ทธ๋Ÿฌ๋ฉด ๊ฒฝ๊ณ„๊ฐ€ ํ•„์š”ํ•˜๋‹ค โ€” ํŒ๋ณ„ ๊ธฐ์ค€ (์šด์˜์ž)
353
+
354
+ ๊ฒฝ๊ณ„ ์—†์ด ํ๊ธฐ๋งŒ ํ•˜๋ฉด ์ธํ๋ฒ ์ดํ„ฐ ์ •์˜๊ฐ€ **ยซFH ๊ฐ€ ํ•œ ๋ชจ๋“  ๊ฒƒยป**์ด ๋˜์–ด ๊ณ„์ƒ์ด ๋ฌดํ•œ๋Œ€๊ฐ€ ๋˜๊ณ ,
355
+ ๊ทธ๊ฑด 1๊ฑด๋งŒ ์„ธ๋Š” ๊ฒƒ๊ณผ ๋˜‘๊ฐ™์ด ๋ชป ์“ด๋‹ค. ๊ธฐ์ค€์€ ์ด๊ฒƒ์ด๋‹ค:
356
+
357
+ > *"**์Šคํ‚ฌ ์—†์ด๋„ FH ๋Š” ๋™์ž‘ํ•˜์ง€๋งŒ, ๊ทธ๊ฑธ ๋‹จ์ถ•์‹œํ‚ฌ ์œ ๋‹›์„ ๋‚ณ์€ ๊ฒƒ๊นŒ์ง€๋Š” ์ธํ๋ฒ ์ดํŒ…์œผ๋กœ ๋ด์•ผ
358
+ > ํ•œ๋‹ค.**"*
359
+
360
+ ```
361
+ โŒ ใ€ŒFH ๊ฐ€ ๊ทธ ์ผ์„ ํ–ˆ๋‚˜ใ€ โ€” ์ด๋Ÿฌ๋ฉด ์ „๋ถ€๊ฐ€ ์ธํ๋ฒ ์ดํŒ…์ด๋ผ ์ธก์ • ๋ถˆ๋Šฅ
362
+ โญ• ์กฐ๊ฑด 1 ใ€Œ๊ทธ ์ผ์„ **๋‹จ์ถ•์‹œํ‚ค๋Š” ์œ ๋‹›์„ ๋‚ณ์•˜๋‚˜**ใ€
363
+ โญ• ์กฐ๊ฑด 2 ใ€Œ๊ทธ ์œ ๋‹›์ด **์ž๊ธฐ ์†Œ๋น„์ฒ˜๋ฅผ ์ƒˆ๋กœ ๊ฐ–๋Š”๊ฐ€**ใ€ โ† ๐ŸŸฅ **ํฌ๊ธฐ ์ถ•. ๋‘˜ ๋‹ค ํ•„์š”ํ•˜๋‹ค**
364
+ (๋ณ„๋„ ๋ ˆํฌ ยท ํ”Œ๋Ÿฌ๊ทธ์ธ ์—”ํŠธ๋ฆฌ ยท ๋…๋ฆฝ ํ˜ธ์ถœ๋ฉด โ€” ยซํ˜ธ์ถœ๋ถ€๊ฐ€ ์ƒˆ๋กœ ์ƒ๊ฒผ๋‚˜ยป)
365
+
366
+ ๋ฒ”์œ„ ํ•˜๋„ค์Šค โ† ์ตœ๋Œ€ ๋ ˆ๋ฒ„
367
+ โŠƒ ์Šคํ‚ฌ ยท ์—์ด์ „ํŠธ ยท **md ๊ทœ์œจ**
368
+ โŠƒ ํ•˜๋„ค์Šค ํ˜•ํƒœ๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ๋ ˆํฌ
369
+ ```
370
+ ๐ŸŸฅ **์กฐ๊ฑด 1 ๋งŒ์œผ๋กœ๋Š” ๊ณ„์ƒ์ด ๋ฌดํ•œ๋Œ€๊ฐ€ ๋œ๋‹ค โ€” ์ ๋Œ€๊ฒ€์ฆ์ด ๋ฐ˜๋ก€๋ฅผ ๋ƒˆ๋‹ค.**
371
+ > `templates/.git-hooks/pre-commit` ์— ํ•„๋“œ ๊ฒ€์‚ฌ ํ•œ ์ค„ ์ถ”๊ฐ€ โ†’ โ“ md ๊ทœ์œจ์ด๊ณ  โ“‘ ๊ทธ ์ผ์„ ๋‹จ์ถ•์‹œํ‚ค๊ณ 
372
+ > โ“’ ใ€Œ์œ ๋‹›ใ€์œผ๋กœ ์…€ ์ˆ˜ ์žˆ๋‹ค = **์„ธ ์กฐ๊ฑด ์ถฉ์กฑ.** ๊ทธ๋Ÿฐ๋ฐ ๊ทธ๊ฑด ํ‰๋ฒ”ํ•œ Mode D ์ž๊ธฐ๊ฐœ๋ฐœ์ด๊ณ 
373
+ > **4์ถ• ๊ฒŒ์ดํŠธ๊ฐ€ ์ด๋ฏธ ๊ด€ํ• ํ•œ๋‹ค.** ์—ฌ๊ธฐ์— ยซ๋Œ€์ƒ์ด FH ์ž์ฒด์ผ ์ˆ˜ ์žˆ๋‹คยป ๊ฐ€ ๋ถ™์œผ๋ฉด
374
+ > **๋ชจ๋“  FH ์„ธ์…˜์˜ ๋Œ€๋ถ€๋ถ„ ์ปค๋ฐ‹์ด ์ธํ๋ฒ ์ดํŒ…**์ด ๋œ๋‹ค.
375
+
376
+ **์กฐ๊ฑด 2 ๊ฐ€ ๊ทธ๊ฑธ ์ž๋ฅธ๋‹ค**: ๊ธฐ์กด ํ›…์— ์ค„์„ ๋”ํ•˜๋Š” ๊ฒƒ์€ **์†Œ๋น„์ฒ˜๊ฐ€ ์ด๋ฏธ ์žˆ๋˜ ๊ฒƒ**์ด๋ผ ํƒˆ๋ฝํ•˜๊ณ ,
377
+ `dashboard-dev`ยท`ko-tech-writer`(ํ”Œ๋Ÿฌ๊ทธ์ธ ์—”ํŠธ๋ฆฌ ์‹ ์„ค)ยท`the-bible`(๋ณ„๋„ ๋ ˆํฌ)์€ ํ†ต๊ณผํ•œ๋‹ค.
378
+ **ใ€Œ์ผ์„ ํ–ˆ๋‹คใ€์™€ ใ€Œ์œ ๋‹›์ด ํƒœ์–ด๋‚ฌ๋‹คใ€๋ฅผ ๊ฐ€๋ฅด๋Š” ๊ฒƒ์ด ์กฐ๊ฑด 1, ใ€Œ์œ ๋‹›ใ€๊ณผ ใ€Œ๊ธฐ์กด ๊ฒƒ์˜ ํ™•์žฅใ€์„
379
+ ๊ฐ€๋ฅด๋Š” ๊ฒƒ์ด ์กฐ๊ฑด 2** ๋‹ค.
380
+
381
+ โš ๏ธ **๊ทธ๋ž˜๋„ ๋‚จ๋Š” ์ž”์—ฌ**: ์กฐ๊ฑด 2 ๋Š” ใ€Œ์†Œ๋น„์ฒ˜๊ฐ€ ์ƒˆ๋กœ ์ƒ๊ฒผ๋‚˜ใ€๋ผ๋Š” **์‚ฌํ›„ ๊ด€์ธก**์ด๋ผ, ๋งŒ๋“œ๋Š” ์ค‘์—๋Š”
382
+ ํŒ์ •์ด ์œ ๋ณด๋œ๋‹ค. ์‚ฌ์ „ ํŒ์ •์ด ํ•„์š”ํ•˜๋ฉด ยซ์ด๊ฒƒ์ด ํƒœ์–ด๋‚˜๋ฉด ์–ด๋””์„œ ๋ถˆ๋ฆฌ๋Š”๊ฐ€ยป ๋ฅผ INTENT ์— ์ ๊ฒŒ ํ•˜๋Š”
383
+ ๊ฒƒ์ด ๋Œ€์‘์ด์ง€๋งŒ **๋ฏธ๊ตฌ์ถ•**์ด๋‹ค.
384
+
385
+ ### ์œ„ โš ๏ธ ํšŒ๊ณ  ๊ด€์ฐฐ์€ ์–ด๋–ป๊ฒŒ ๋˜๋‚˜ โ€” **์žฌ๋ถ„๋ฅ˜ํ•˜๋˜ ํ๊ธฐํ•˜์ง€ ์•Š๋Š”๋‹ค**
386
+
387
+ ์•„๋ž˜ ํšŒ๊ณ  ๊ด€์ฐฐ(ยซKILL ๋œ ๊ฒƒ ์ค‘ chamber-internal metering ยท hub-internal orchestration ยท
388
+ cluster wizardry ยท org relay ๋Š” meta-shaped ์˜€๋‹คยป)์€ **์—ฌ์ „ํžˆ ์œ ํšจํ•œ ๊ด€์ฐฐ**์ด๋‹ค. ๋‹ค๋งŒ ๊ทธ
389
+ ์ฒ˜๋ถ„์ด ๋ฐ”๋€๋‹ค: **ใ€Œ์Šค์ฝ”ํ”„ ๋ฐ–์ด๋ผ KILLใ€์ด ์•„๋‹ˆ๋ผ ใ€Œmeta-*harness* ๊ธ‰์ด๋ผ day-one walk ๋ฐ”๋ฅผ
390
+ ๋‹ค๋ฅด๊ฒŒ ๋ฐ›์•„์•ผ ํ•œ๋‹คใ€**์ด๋‹ค. `NOT-APPLICABLE` ๋ถ„๋ฆฌ(์•„๋ž˜ ๋ฌธ๋‹จ)๋Š” ๊ทธ๋Œ€๋กœ ํ•„์š”ํ•˜๊ณ , ์˜คํžˆ๋ ค
391
+ ์ด ์ •์ •์œผ๋กœ **๋” ํ•„์š”ํ•ด์ง„๋‹ค** โ€” ์ด์ œ ํ†ต์ด ์…‹์ด๋‹ค: `KILL`(๋ชป ์„ ๋‹ค) ยท `CURATED`(์„ ํ–‰์ด ์žˆ๋‹ค,
392
+ ยง3-SCREEN-2026-08-17) ยท `NOT-APPLICABLE`(meta-harness ๊ธ‰์ด๋ผ ์ด ๋ฐ”๊ฐ€ ์•ˆ ๋งž๋Š”๋‹ค).
222
393
 
223
394
  โš ๏ธ **Retrospective observation, not a finding.** Re-reading the run ledger along this axis: of the
224
395
  KILLed candidates, those aimed at chamber-internal metering, hub-internal orchestration, cluster
@@ -387,6 +558,49 @@ one harness sees runtime behaviour and not source structure, another sees source
387
558
  runtime. **The meta-harness's job is not to dig a deeper well; it is to make outputs flow across the
388
559
  boundary between wells.**
389
560
 
561
+ ### 4-c. The return leg, and why the cluster exists at all (operator, 2026-08-17)
562
+
563
+ ยง4-b says outputs **flow across** the boundary. It does not say what happens to what flows *in*,
564
+ nor why FH pays for the crossing. Both were load-bearing and neither was written down. Operator's
565
+ formulation, in three parts โ€” and the third is the one that makes the first two a strategy rather
566
+ than a nice habit:
567
+
568
+ ```
569
+ 1 BORROW-EXECUTE (standing) FH does not endlessly BUILD the capability it lacks.
570
+ It reaches into a cluster harness and RUNS theirs.
571
+ 2 INTERNALIZE (selective) Of the insight that comes back, only what is genuinely worth
572
+ adopting is PROPOSED and absorbed. Never automatic.
573
+ 3 THE POINT IS TIME Not capability breadth. What FH buys by not-building is time to
574
+ sharpen its OWN edge โ€” and that is what lets it keep pace with a
575
+ fast-moving model layer instead of being outrun by it.
576
+ ```
577
+
578
+ ๐ŸŸฅ **Without (3), (1) inverts on reading.** "We borrow instead of building" reads as *"FH need not
579
+ have capabilities"* โ€” which turns the cluster into dependency. The operator's claim is the opposite:
580
+ **borrowing is how FH protects its own sharpness.** State (3) whenever (1) is cited.
581
+
582
+ **The asymmetry in (2) is the whole filter.** Borrowing is constant; absorbing is rare and gated by
583
+ a proposal. Automatic absorption produces a collage of other harnesses' capabilities wearing FH's
584
+ name โ€” the exact opposite of (3), because a collage has no edge to sharpen.
585
+
586
+ **First recorded run of the full loop (2026-08-17, gstack โ†’ qasp, FH as governor).** FH did not
587
+ build a DX/product lens; it stood up the gstack persona (`/plan-devex-review`, `/qa-only`) against a
588
+ qasp change and observed. The review returned three findings FH's and qasp's lenses structurally do
589
+ not ask (guide-promises-vs-delivered-bundle ยท the shipped document's readability ยท release-doc
590
+ drift). Then the filter ran, and **it rejected more than it accepted**:
591
+
592
+ | finding | disposition |
593
+ |---|---|
594
+ | anchor should be *discovery-based*, not a hand-kept list | **rejected** โ€” measured against FH and the transfer did not hold; a control showed the suites believed unwired do run by another path |
595
+ | guide promises โ‰  delivered bundle | **rejected** โ€” `package_coverage_check.sh` already covers it |
596
+ | release docs did not follow | **rejected** โ€” ยงโ‘ฃ-b entry-point drift covers half; not enough delta |
597
+ | **a shipped document is never read as a reader before it ships** | **accepted** โ€” and NOT because gstack said so: FH reached the same place independently the same day from a different axis, recording that *"readability is measured only by rendering it or by a person; a static scan catches what is ABSENT, never what is UNREADABLE"* with 12 findings and **0** caught by static scanners. **Two independent arrivals is the internalization signal.** One source alone leaves it a candidate. |
598
+
599
+ โš ๏ธ **Honest scope**: one run, one target, one third harness. This is an existence proof that the
600
+ loop closes, not a rate. And the filter rejecting 3 of 4 is the expected shape โ€” if it accepted
601
+ everything it would not be a filter, it would be a funnel.
602
+
603
+
390
604
  Three rules, in falling order of how easily they are broken:
391
605
 
392
606
  1. **Crossing must not overwrite the receiving harness's identity.** If harness B is deliberately
@@ -157,8 +157,12 @@ engine under the other โ€” and the two candidates for "โ‘ฃ" are **context-contin
157
157
  external-grounding**, which currently hold different grades, so the ambiguity is not cosmetic.
158
158
  The collision is worse than one file's internal disagreement: **the identities are numbered โ‘ โ€“โ‘ค and the
159
159
  engines are not numbered at all**, so a bare โ‘  in any record is undecidable without its sentence. This
160
- file shows it โ€” a paragraph enumerating engines sits four lines above `โ‘ขโ‘ค are ๐ŸŸข, โ‘ โ‘กโ‘ฃ are ๐Ÿ”ต RC`,
160
+ file shows it โ€” a paragraph enumerating engines sits four lines above `โ‘ โ‘ขโ‘ค are ๐ŸŸข, โ‘กโ‘ฃ are ๐Ÿ”ต RC`,
161
161
  where those numerals mean *identities*.
162
+ (๐ŸŸฅ That example string was itself stale until 2026-08-17: it still read `โ‘ขโ‘ค are ๐ŸŸข, โ‘ โ‘กโ‘ฃ are ๐Ÿ”ต RC`,
163
+ which 632 had already superseded โ€” so the illustration pointed at text no longer in the file.
164
+ Same **in-file half-fix propagation** this document names elsewhere; fixed here, and the grade
165
+ values in an *example* must be re-checked whenever the table moves.)
162
166
 
163
167
  > **Legacy decode (do not delete โ€” session records already use numbers).** Records written before
164
168
  > 2026-08-13 say ์—”์ง„ โ‘ ~โ‘ฃ. They decode by the **engine table order above**:
@@ -672,6 +676,169 @@ Each remedy is a run that leaves an artifact, tracked in `tracks/_meta/identity_
672
676
  > An identity whose broad path *runs* is not ๐Ÿ”ด ideal-only. Both are ๐ŸŸก: running, not yet closed. Lesson:
673
677
  > do not score an identity by its hardest sub-mechanism โ€” that reads a live-but-incomplete path as zero.
674
678
 
679
+ ### โ‘ฃ promotion criteria โ€” ์ด ์ ˆ์ด **์—†์—ˆ๋‹ค๋Š” ๊ฒƒ** ์ž์ฒด๊ฐ€ ์ฒซ ๋ฐœ๊ฒฌ (2026-08-17)
680
+
681
+ โ‘ก(438์ค„)์™€ โ’ท(421์ค„)๋Š” ์ „์šฉ ์Šน๊ธ‰ ๊ธฐ์ค€ ์ ˆ์„ ๊ฐ–๊ณ , โ‘ ์€ ํ–‰ ์•ˆ์— ์ธ๋ผ์ธ์œผ๋กœ ๊ฐ–๋Š”๋‹ค.
682
+ **โ‘ฃ๋งŒ ์—†์—ˆ๋‹ค.** ๊ทธ๋ฆฌ๊ณ  ์ด ํŒŒ์ผ์ด โ‘ก ์ ˆ ์ฒซ๋จธ๋ฆฌ์— ๊ทธ ์ ˆ์ด ์™œ ํ•„์š”ํ•œ์ง€ ์ด๋ฏธ ์ ์–ด๋†จ๋‹ค โ€”
683
+ *"๋งค ๋ผ์šด๋“œ๊ฐ€ ๋ฐ”๋‹ฅ๋ถ€ํ„ฐ ๊ธฐ์ค€์„ ์žฌ๋„์ถœํ•˜์ง€ ์•Š๋„๋ก"*. **๊ทธ ์ฒ˜๋ฐฉ์ด โ‘ฃ์—๋งŒ ์ ์šฉ๋˜์ง€ ์•Š์•˜๋‹ค.**
684
+
685
+ #### 1. ๐ŸŸฅ ์œ ์ผํ•˜๊ฒŒ ๋ช…์‹œ๋ผ ์žˆ๋˜ ์กฐ๊ฑด์€ **๋‹ค๋ฅธ ๋ช…์ œ๋ฅผ ์žฐ๋‹ค**
686
+
687
+ ์ง€๊ธˆ๊นŒ์ง€ โ‘ฃ์— ๋Œ€ํ•ด ์กฐ๊ฑด์ฒ˜๋Ÿผ ์ฝํžŒ ๋ฌธ์žฅ์€ ํ•˜๋‚˜๋ฟ์ด์—ˆ๋‹ค:
688
+ > *"โ‘ฃ file-change โ‰  token-introduction โ€” the instrument is a screener, not an adjudicator"*
689
+
690
+ ๊ทธ๋Ÿฐ๋ฐ ๊ทธ ๊ณ„๊ธฐ(`scripts/digest_landing_check.sh`)๊ฐ€ **์ž๊ธฐ ํ—ค๋”์—์„œ ์Šค์ฝ”ํ”„๋ฅผ ์ž๋ฐฑํ•œ๋‹ค**:
691
+ > *"์ฐฉ์ง€ ๋Œ€์ƒ = ๊ณต๊ฐœ FH ์ž์‚ฐ + `tracks/`. ๋น„๊ณต๊ฐœ companion store ๋Š” **๋ณด์ง€ ์•Š๋Š”๋‹ค** โ€ฆ
692
+ > ๋”ฐ๋ผ์„œ **์ด ๊ณ„๊ธฐ๊ฐ€ ์žฌ๋Š” ๊ฒƒ์€ ยซ์กฐ์ง ์ „์ฒด ์ „ํŒŒยป๊ฐ€ ์•„๋‹ˆ๋ผ ยซํ—ˆ๋ธŒ ๋‚ด๋ถ€ ์ฐฉ์ง€ยป๋‹ค**"*
693
+
694
+ ๋ฐ˜๋ฉด โ‘ฃ๊ฐ€ ์ฃผ์žฅํ•˜๋Š” ๋ช…์ œ๋Š” `fh_three_layer_canon.md` โ€” *"๋ฐ”๊นฅ์—์„œ ์˜จ ๊ฒƒ์ด **์กฐ์ง ์•ˆ๊นŒ์ง€** ์ฐฉ์ง€ํ•œ๋‹ค"*.
695
+ โ‡’ **๊ทธ ์กฐ๊ฑด์„ 100% ๋‹ซ์•„๋„ โ‘ฃ์˜ ๋ช…์ œ๋Š” ํ•œ ๊ธ€์ž๋„ ์•ˆ ์žฌ์ง„๋‹ค.** โ‘ ์ด dominance ๋ฅผ ๋‘ ๋ฒˆ ์ธก์ •ํ•˜๊ณ 
696
+ ยซ๊ฒจ๋ƒฅ์ด ํ‹€๋ ธ๋‹คยป๋กœ ํŒ์ •ํ•œ ๊ฒƒ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ์ด๊ณ , โ‘ฃ๋Š” ๊ทธ ํŒ์ •์„ **ํ•œ ๋ฒˆ๋„ ๋ฐ›์€ ์ ์ด ์—†๋‹ค**.
697
+
698
+ #### 2. ๐ŸŸฅ ๊ทธ๋ฆฌ๊ณ  ๊ตฌ์กฐ์ ์œผ๋กœ ๋„๋‹ฌ ๋ถˆ๊ฐ€๋‹ค โ€” P1 ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ (**์ด ํŒŒ์ผ ์•ˆ์—์„œ๋Š”** ์ง€๋ชฉ๋œ ์  ์—†๋‹ค)
699
+
700
+ ์ด ํŒŒ์ผ์˜ residency ๊ทœ์œจ(ยงโ’ท promotion criteria 3)์ด ๋ชป ๋ฐ•๋Š”๋‹ค:
701
+ > *"์กฐ์ง ํ™˜๊ฒฝ ์‹ค์ ์€ **์ฆ์–ธ์œผ๋กœ ๋‚จ๊ณ  ์ธก์ •์œผ๋กœ ์„ธ์ง€ ์•Š๋Š”๋‹ค.** residency ๋•Œ๋ฌธ์— ์ด ํŒŒ์ผ์—์„œ
702
+ > ๊ฒ€์ฆํ•  ์ˆ˜ ์—†๊ณ , ๊ฒ€์ฆ ๋ชป ํ•˜๋Š” ๊ฒƒ์„ ์ˆซ์ž์— ๋„ฃ์œผ๋ฉด ๊ทธ ์ˆซ์ž ์ „์ฒด๊ฐ€ ๋ชป ์“ฐ๊ฒŒ ๋œ๋‹ค"*
703
+
704
+ ๊ทธ๋Ÿฐ๋ฐ **โ‘ฃ๋Š” ๋Œ€์ƒ์ด ์กฐ์ง์ธ ์œ ์ผํ•œ ํ–‰**์ด๋‹ค. โ‡’ ๐ŸŸข๊ฐ€ ์š”๊ตฌํ•˜๋Š” ยซ๊ตฌ์ฒด์  ์‹ค์  ์•„ํ‹ฐํŒฉํŠธยป๋ฅผ
705
+ **์ด ํŒŒ์ผ ์•ˆ์—์„œ๋Š” ์›๋ฆฌ์ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค.** โ‘ก์˜ P1์ด ยซmtime์€ ์œ„์กฐ ๊ฐ€๋Šฅ โ†’ ์–ด๋–ค ๋Ÿฐ๋„ ๋งŒ์กฑ
706
+ ๋ถˆ๊ฐ€ยป์˜€๋˜ ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๊ฐ™์€ ๊ตฌ์กฐ์ด๋ฉฐ, P1 ์€ ์ง€๋ชฉ๋˜์–ด ์ˆ˜๋ฆฌ๋๊ณ  **์ด ํŒŒ์ผ ์•ˆ์—์„œ๋Š”** โ‘ฃ ์— ๋Œ€ํ•œ
707
+ ๊ฐ™์€ ์ง€๋ชฉ์ด ์—†๋‹ค. โš ๏ธ **๋ฒ”์œ„ ์ œํ•œ์ด๋‹ค** โ€” ์ด ํŒŒ์ผ์„ ์ฝ์–ด์„œ ๋‚ด๋ฆฐ ํŒ๋‹จ์ด๊ณ , ์ „ ์ฝ”ํผ์Šค ๋ถ€์žฌ ์Šค์บ”
708
+ (๊ฒ€์ƒ‰์–ดยท์ปจํŠธ๋กค ๋™๋ฐ˜)์€ **์•ˆ ๋Œ๋ ธ๋‹ค**. ใ€Œ์•„๋ฌด๋„ ์ง€๋ชฉํ•œ ์  ์—†๋‹คใ€๋กœ ๋„“ํ˜€ ์ฝ์ง€ ๋งˆ๋ผ.
709
+
710
+ #### 3. ์ด๋ฏธ ์ถฉ์กฑ๋ผ ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ โ€” ๋ชป ์ฝ๋Š” ์ง€์ ์ด ํ•œ ๋‹จ์–ด๋กœ ํŠน์ •๋œ๋‹ค
711
+
712
+ ์กฐ์ง ์ฐฉ์ง€๋Š” **์šด์˜์ž ์ฆ์–ธ์œผ๋กœ ์กด์žฌํ•œ๋‹ค โ€” ์ด ์„ธ์…˜์ด ๊ฒ€์ฆํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ยง2 ๋Œ€๋กœ ์ด ํŒŒ์ผ์—์„œ๋Š”
713
+ ๊ฒ€์ฆ ๋ถˆ๊ฐ€๋‹ค**(์ „๋ถ€ residency ๊ฒฝ๊ณ„ ์•ˆ์ด๋ผ ์ข…๋ฅ˜๋งŒ ์ ๋Š”๋‹ค): ์ •๊ธฐ ์กฐ์ง ๋ณด๊ณ  ์ฑ„๋„๋กœ์˜ ์ƒ์‹œ ์ฐฉ์ง€ ยท
714
+ ์™ธ๋ถ€ ๋ฐœํ‘œ ์ฑ„ํƒ๊ณผ ๊ทธ ์‚ฐ์ถœ์ด ๋‹ค์‹œ FH ๊ธฐ๊ณ„์˜ ๊ทผ๊ฑฐ๋กœ ์ธ์šฉ๋จ(**์ฆ์–ธ โ€” ใ€Œ๊ด€ํ†ตใ€์œผ๋กœ ๋‹จ์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค**) ยท
715
+ ์กฐ์ง ๋‚ด ์ •์‹ ๊ณต๊ฐœ 1๊ฑด.
716
+
717
+ ๐ŸŸฅ **๋ผ๋ฒจ์„ ๋ฐ˜๋“œ์‹œ ๋ถ™์ธ๋‹ค.** โ’ท ํ–‰์ด ๊ฐ™์€ ์ฒ˜๋ฆฌ๋ฅผ ํ•œ๋‹ค โ€” *"์‹ค์  ์—ด๊ฑฐ๋Š” **์šด์˜์ž ์ฆ์–ธ** + ์‹ค์ธก
718
+ 2๊ฑด์ด๊ณ  โ€ฆ **์ฆ์–ธ์œผ๋กœ ํ‘œ๊ธฐํ•˜๊ณ  ์ธก์ •์œผ๋กœ ์„ธ์ง€ ์•Š๋Š”๋‹ค**"*. ์ฆ์ธ์ด ์—†๋Š” ๊ด€ํ†ต์„ ใ€Œ๊ด€ํ†ตใ€์œผ๋กœ ์ ์œผ๋ฉด
719
+ ๋‹ค์Œ ๋ผ์šด๋“œ๊ฐ€ ์ด ์ ˆ์„ ยซโ‘ฃ๋Š” ์‚ฌ์‹ค์ƒ ์ถฉ์กฑยป ์˜ ๊ทผ๊ฑฐ๋กœ ์ธ์šฉํ•œ๋‹ค. ๊ทธ๊ฒŒ ์ด ํŒŒ์ผ์ด ๋ฐ˜๋ณตํ•ด ์ž์ฑ…ํ•œ
720
+ ์ธ์šฉ ํ›ผ์† ๊ฒฝ๋กœ๋‹ค.
721
+
722
+ > **๋ชป ์ฝ๋Š” ์ง€์  = ยซas ONE pipelineยป.** ์กฐ๊ฑด์ด ใ€Œ์ฐฉ์ง€ํ–ˆ๋‚˜ใ€๊ฐ€ ์•„๋‹ˆ๋ผ
723
+ > **ใ€Œํ•˜๋‚˜์˜ ๊ณ„๊ธฐ๋กœ ๊ด€ํ†ต์„ ์ฆ์ธํ•  ์ˆ˜ ์žˆ๋‚˜ใ€**๋ฅผ ์š”๊ตฌํ•˜๋Š”๋ฐ, ๊ทธ ์ฆ์ธ ๊ณ„๊ธฐ๊ฐ€ ์Šค์Šค๋กœ ์กฐ์ง์„
724
+ > ์Šค์ฝ”ํ”„ ๋ฐ–์œผ๋กœ ์„ ์–ธํ–ˆ๋‹ค. ๊ณ„๊ธฐ ํ—ค๋”๋„ ์ ˆ๋ฐ˜ ์ž๋ฐฑํ•ด๋’€๋‹ค โ€” *"ยซ์•ˆ ๋‹ซํžŒ๋‹คยป๊ฐ€ ์•„๋‹ˆ๋ผ
725
+ > **ยซ๋‹ซํžˆ๋Š”๋ฐ ์ฆ์ธ์ด ์—†๋‹คยป**"*, *"**ํŒŒ์ดํ”„๋ผ์ธ์€ ๊ทธ๋‚  ์‹ค์ œ๋กœ ๊ด€ํ†ตํ–ˆ๋‹ค**"*.
726
+
727
+ #### 4. ์ œ์•ˆํ•˜๋Š” ๊ธฐ์ค€ โ€” ๋ง‰ํžŒ ๊ฒƒ์€ ์ธก์ •์ด ์•„๋‹ˆ๋ผ **์ธก์ •์˜ ์œ„์น˜**๋‹ค
728
+
729
+ ```
730
+ ์ง€๊ธˆ ์กฐ์ง ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต๊ฐœ ๋ ˆํฌ๋กœ ๊ฐ€์ ธ์™€ ์žฌ๋ ค ํ•œ๋‹ค โ†’ residency ๊ฐ€ ๋ง‰๋Š”๋‹ค (์ •๋‹นํ•˜๊ฒŒ)
731
+ ๋Œ€์•ˆ ๊ณ„๊ธฐ๋ฅผ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ์ชฝ์œผ๋กœ ์˜ฎ๊ธด๋‹ค โ†’ ์กฐ์ง ๋ฐ–์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ์ตœ์†Œํ™”ํ•œ๋‹ค
732
+ ```
733
+
734
+ ๐ŸŸฅ **์ดˆํŒ์ด ์—ฌ๊ธฐ์„œ ๋‘ ๋ฒˆ ํ‹€๋ ธ๊ณ , ์ ๋Œ€๊ฒ€์ฆ์ด ์ปค๋ฐ‹ ์ „์— ์žก์•˜๋‹ค. ๊ทธ ์ •์ •์„ ๋‚จ๊ธด๋‹ค.**
735
+
736
+ **ํ‹€๋ฆฐ ๊ฒƒ โ‘ ** โ€” ์ดˆํŒ์€ *"**ํŒ์ •๋งŒ** ๋„˜์–ด์˜ค๋ฏ€๋กœ residency ๋ฅผ ์•ˆ ๊นฌ๋‹ค"* ๊ณ  ์ ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ยง2 ๊ฐ€
737
+ ๋„๋‹ฌ ๋ถˆ๊ฐ€์˜ **๊ทผ๊ฑฐ๋กœ** ์ธ์šฉํ•œ ๊ฒƒ์ด โ’ท-3 ์˜ *"์กฐ์ง ์‹ค์ ์€ โ€ฆ ์ด ํŒŒ์ผ์—์„œ **๊ฒ€์ฆํ•  ์ˆ˜ ์—†๋‹ค**"* ๋‹ค.
738
+ **์กฐ์ง์—์„œ ๋‚˜์˜จ ํŒ์ •์„ ์ด ํŒŒ์ผ ๊ณ„์—ด์˜ ๊ณต๊ฐœ ๊ธฐ๋ก์— ๋„ฃ๋Š” ๊ฒƒ**์ด ๊ณง ๊ทธ ๊ทœ์น™์ด ๊ธˆ์ง€ํ•œ ํ–‰์œ„๋‹ค โ€”
739
+ ๋ธ”๋กœ์ปค๋กœ ์ธ์šฉํ•œ ๊ทœ์น™์„ ์ฒ˜๋ฐฉ์ด ์šฐํšŒํ–ˆ๋‹ค. ์ˆœํ™˜์ด ์•„๋‹ˆ๋ผ **์ž๊ธฐ๋ฌดํšจํ™”**๋‹ค.
740
+
741
+ **ํ‹€๋ฆฐ ๊ฒƒ โ‘ก** โ€” ์ดˆํŒ์€ ์ฑ”๋ฒ„ ์ˆœ์„œ ์ฆ์ธ(*"ํ•ด์‹œ๋งŒ ์ ๋Š”๋‹ค, ๋ณธ๋ฌธ ์œ ์ถœ 0"*)์„ ์œ ๋น„๋กœ ๋“ค์—ˆ๋‹ค.
742
+ **์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค**:
743
+ ```
744
+ ์ฑ”๋ฒ„ ์ฆ์ธ์ด ๋„˜๊ธฐ๋Š” ๊ฒƒ ํ•ด์‹œ โ†’ ์›๋ฌธ N ๊ฐœ ์ค‘ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด **0 ๋น„ํŠธ**
745
+ ์ดˆํŒ์˜ P4-1 ์ด ๋„˜๊ธฐ๋Š” ๊ฒƒ ํ›„๋ณด๋ณ„ PASS/FAIL โ†’ ํ›„๋ณด N ๊ฐœ์— ๋Œ€ํ•ด **N ๋น„ํŠธ**
746
+ ```
747
+ ใ€Œ์กฐ์ง์ด ์ด ํ”„๋Ÿฐํ‹ฐ์–ด ํ•ญ๋ชฉ์„ ๋„์ž…ํ–ˆ๋‹ค/์•ˆ ํ–ˆ๋‹คใ€๋Š” **๊ทธ ์ž์ฒด๊ฐ€ ์กฐ์ง ์ •๋ณด**๋‹ค.
748
+ *"์›๋ณธ์€ ํ•œ ๋ฐ”์ดํŠธ๋„ ์•ˆ ๋‚˜์˜จ๋‹ค"* ๋Š” **๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ์ •๋ณด๋Ÿ‰๊ณผ ํ˜ผ๋™ํ•œ ๋ฌธ์žฅ**์ด์—ˆ๋‹ค. ์œ ๋น„๋ฅผ ์ฒ ํšŒํ•œ๋‹ค.
749
+
750
+ **๊ทธ๋ž˜์„œ ์ขํžŒ๋‹ค.** ์กฐ์ง ๋ฐ–์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ์€ **์ง‘๊ณ„๋œ ๋‹จ์ผ verdict ํ•˜๋‚˜**๋ฟ์ด๋‹ค:
751
+
752
+ **P4-1 (mandatory-pass)** โ€” ์กฐ์ง ํ™˜๊ฒฝ ํด๋ก ์—์„œ ์ฐฉ์ง€ ๊ณ„๊ธฐ๊ฐ€ ์‹คํ–‰๋˜๊ณ , ๊ณต๊ฐœ ์ชฝ์œผ๋กœ๋Š”
753
+ **์ง‘๊ณ„๋œ ๋‹จ์ผ verdict(PASS/FAIL ํ•˜๋‚˜)** ๋งŒ ๊ธฐ๋ก๋œ๋‹ค.
754
+ ๐ŸŸฅ **ํ›„๋ณด๋ณ„ ํŒ์ •ยท๊ฑด์ˆ˜ยท๋น„์œจ์„ ๊ณต๊ฐœ ์ชฝ์— ์“ฐ๋Š” ๊ฒƒ์€ ๊ธˆ์ง€ํ•œ๋‹ค** โ€” N ๋น„ํŠธ๊ฐ€ ์ƒˆ๋Š” ๊ฒฝ๋กœ๋‹ค.
755
+ ๐ŸŸฅ ๊ทธ๋ฆฌ๊ณ  residency ์˜ˆ์™ธ ์ ˆ์ฐจ๋ฅผ ๊ทธ๋Œ€๋กœ ํƒ„๋‹ค(`CLAUDE.md ยงField-Harness Diagnostic`):
756
+ **๋ช…์‹œ์  ์šด์˜์ž ์Šน์ธ + gitignored ๊ฐ์‚ฌ๋…ธํŠธ**. *"ยซ์ด๊ฒŒ ์ถฉ๋ถ„ํžˆ sanitize ๋๋‚˜ยป๋Š” ์„ธ์…˜์ด ํ˜ผ์ž
757
+ ๋‚ด๋ฆฌ๋Š” ํŒ๋‹จ์ด ์•„๋‹ˆ๋‹ค"* โ€” ์ด ์กฐ๊ฑด์ด ์—†์œผ๋ฉด P4-1 ์€ ๋ฏธ์ถฉ์กฑ์ด๋‹ค.
758
+
759
+ **P4-1 ์˜ ์„ ํ–‰์กฐ๊ฑด โ€” ์ง€๊ธˆ ๋‘˜ ๋‹ค ๋ฏธ์ถฉ์กฑ์ด๊ณ , ๊ทธ๊ฑธ ์ ๋Š” ๊ฒƒ์ด ์ด ์ ˆ์˜ ๊ฐ’์ด๋‹ค**
760
+ 1. ๐ŸŸฅ **์žด ๋Œ€์ƒ์ด ์กฐ์ง ํด๋ก ์— ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค.** ๊ณ„๊ธฐ ์ธํ„ฐํŽ˜์ด์Šค๋Š”
761
+ `digest_landing_check.sh <digest.md> [target ...]` ์ธ๋ฐ, digest ์‚ฐ์ถœ๋ฌผ์€
762
+ `tracks/_meta/frontier_digest_<๋‚ ์งœ>.md` ์ด๊ณ  **`tracks/**` ๋Š” gitignored**, ์ƒ์„ฑ์€
763
+ **์ด ๋จธ์‹ ์˜ launchd ๋งค์ผ 09:00** ์ด๋‹ค. โ‡’ **์กฐ์ง ํด๋ก ์—๋Š” ์žด digest ๊ฐ€ ๊ตฌ์กฐ์ ์œผ๋กœ ์—†๋‹ค.**
764
+ ์กฐ์ง ์ชฝ ์ƒ์„ฑ ๊ฒฝ๋กœ๊ฐ€ ์ƒ๊ธฐ๊ฑฐ๋‚˜ ๊ณต๊ฐœ digest ๋ฅผ ๋ฐ˜์ž…ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
765
+ 2. ๐ŸŸฅ **์‹คํ–‰ ์ฃผ์ฒด๋ฅผ ์ด๋ฆ„์œผ๋กœ ์ ์–ด์•ผ ํ•œ๋‹ค.** ์—†์œผ๋ฉด P4-1 ์€ **ใ€Œ๋ฏธ๋„๋‹ฌใ€๋กœ ํ‘œ๊ธฐํ•˜๊ณ  ์Šน๊ธ‰ ๊ธฐ์ค€์œผ๋กœ
766
+ ์„ธ์ง€ ์•Š๋Š”๋‹ค** โ€” ์ด๋ฆ„ ์—†๋Š” ์‹คํ–‰ ์ฃผ์ฒด๋Š” P1 ์ด ยซ์–ด๋–ค ๋Ÿฐ๋„ ๋งŒ์กฑ ๋ถˆ๊ฐ€ยป ์˜€๋˜ ๊ฒƒ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋‹ค.
767
+
768
+ **P4-2 (measured)**: ๊ทธ verdict ๊ฐ€ known-pair ๋ฅผ ๊ฐ€๋ฅธ๋‹ค โ€” ์ฐฉ์ง€ํ•œ ๊ฑด๊ณผ ์ฐฉ์ง€ ์•ˆ ํ•œ ๊ฑด์„ ์‹ค์ œ๋กœ
769
+ ๊ตฌ๋ถ„. ์ปจํŠธ๋กค ์—†๋Š” PASS ๋Š” ์ด ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค.
770
+
771
+ #### 5. ๐ŸŸฅ ๋‚จ๋Š” ์ž”์—ฌ โ€” ๋‹ซ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ํ•œ ์นธ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค
772
+
773
+ ๊ทธ ํŒ์ •์€ **๋น„์ €์ž๊ฐ€ ๋ณผ ์ˆ˜ ์—†๋Š” ํ™˜๊ฒฝ์—์„œ ๋‚˜์˜จ ์ž๊ธฐ์‹ ๊ณ **๋‹ค. ์ฑ”๋ฒ„ ์ฆ์ธ์ด ยซ์ €์ž๋ฅผ ์‹ ๋ขฐํ•˜์ง€ ์•Š๋Š”
774
+ ๊ธฐ๋กยป์„ ์š”๊ตฌํ•œ ๊ฒƒ๊ณผ **๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์กฐ์ง ๊ฒฝ๊ณ„์—์„œ ์žฌ๋ฐœํ•œ๋‹ค**. ๊ทธ๋ž˜์„œ ์ด ๊ธฐ์ค€์€ โ‘ฃ๋ฅผ ยซ์™„์ „ํžˆ
775
+ ๋‹ซ๋Š”๋‹คยป๊ฐ€ ์•„๋‹ˆ๋ผ **ยซ์ฆ์–ธ โ†’ ์ธก์ •์œผ๋กœ ํ•œ ์นธ ์˜ฌ๋ฆฐ๋‹คยป**์ด๊ณ , ๊ทธ ํ•œ๊ณ„๋ฅผ ์กฐ๊ฑด์— ๊ฐ™์ด ์ ๋Š”๋‹ค.
776
+ ๋น„์ €์ž ์‹ค์ฆ์ด ๊ฐ€๋Šฅํ•ด์ง€๋Š” ์‹œ์ (์กฐ์ง ๋‚ด ๋‹ค๋ฅธ ์šด์˜์ž๊ฐ€ ๊ทธ ๊ณ„๊ธฐ๋ฅผ ๋Œ๋ฆฌ๋Š” ๊ฒƒ)์ด ๋‹ค์Œ ์นธ์ด๋‹ค.
777
+
778
+ **๊ฐ•๋“ฑ ์กฐ๊ฑด โ€” ์ด ์ ˆ์ด ์Šน๊ธ‰๋งŒ ์ ๊ณ  ๊ฐ•๋“ฑ์„ ์•ˆ ์ ์œผ๋ฉด โ’ท ์ ˆ์˜ ๋ชฉ์ ์„ ๋ชป ๋”ฐ๋ฅธ๋‹ค**
779
+ (โ’ท ์ ˆ ์ž๊ธฐ ๊ทœ์ •: *"ยซ์–ด๋–ป๊ฒŒ ์˜ฌ๋ผ๊ฐ€๋‚˜ยป๊ฐ€ ์•„๋‹ˆ๋ผ ยซ**๋ฌด์—‡์ด ์ด ํ–‰์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋‚˜**ยป"*):
780
+ - **D4-1**: P4-1 ์˜ verdict ๊ฐ€ **known-pair ๋ฅผ ๋ชป ๊ฐ€๋ฅด๋ฉด**(์ฐฉ์ง€ํ•œ ๊ฑด๊ณผ ์•ˆ ํ•œ ๊ฑด์ด ๊ฐ™์€ ๊ฐ’์„ ๋ฐ›์œผ๋ฉด)
781
+ โ‘ฃ๋Š” **๐Ÿ”ต ๋กœ ๋˜๋Œ๋ฆฐ๋‹ค.** ํŒ๋ณ„๋ ฅ ์—†๋Š” PASS ๋Š” ์ธก์ •์ด ์•„๋‹ˆ๋‹ค
782
+ - **D4-2**: ์„ ํ–‰์กฐ๊ฑด 1ยท2 ์ค‘ ํ•˜๋‚˜๋ผ๋„ **๋‹ค์‹œ ๋ฏธ์ถฉ์กฑ์ด ๋˜๋ฉด**(์กฐ์ง ์ชฝ digest ๊ฒฝ๋กœ๊ฐ€ ์‚ฌ๋ผ์ง€๊ฑฐ๋‚˜
783
+ ์‹คํ–‰ ์ฃผ์ฒด๊ฐ€ ์—†์–ด์ง€๋ฉด) โ‘ฃ๋Š” **ใ€Œ๋ฏธ๋„๋‹ฌใ€๋กœ ๋˜๋Œ์•„๊ฐ„๋‹ค** โ€” ํ•œ ๋ฒˆ ํ†ต๊ณผํ•œ ๊ฒƒ์œผ๋กœ ๊ณ ์ •๋˜์ง€ ์•Š๋Š”๋‹ค
784
+ - **D4-3**: residency ์˜ˆ์™ธ ์ ˆ์ฐจ(์šด์˜์ž ์Šน์ธ + ๊ฐ์‚ฌ๋…ธํŠธ) ์—†์ด ์กฐ์ง ํŒ์ •์ด ๊ณต๊ฐœ ์ชฝ์— ๊ธฐ๋ก๋˜๋ฉด
785
+ ๊ทธ ๊ธฐ๋ก์€ **๋ฌดํšจ์ด๊ณ  โ‘ฃ๋Š” ๊ฐ•๋“ฑ๋œ๋‹ค.** ์ด๊ฑด ๋“ฑ๊ธ‰ ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ทœ์œจ ์œ„๋ฐ˜์ด๋‹ค
786
+
787
+ #### 6. ๋ถ€์ˆ˜ โ€” ์ด ์ ˆ์„ ์“ฐ๋ฉด์„œ ํ™•์ธ๋œ stale 2๊ฑด
788
+
789
+ - ๐ŸŸฅ **207ยท238์ค„์˜ ยซzero callersยป ์ฒ˜๋ฐฉ์€ stale ์ด ์•„๋‹ˆ๋‹ค โ€” ์ดˆํŒ์ด ๊ทธ๋ ‡๊ฒŒ ์ ์—ˆ๊ณ  ํ‹€๋ ธ๋‹ค.**
790
+ `scripts/selfcheck.sh:617` ์•ต์ปค ๋ฃจํ”„์— ๋“ค์–ด๊ฐ„ ๊ฒƒ์€ **`--self-test` ๋ ˆ์ธ๋ฟ**์ด๊ณ , ๋ ˆํฌ ์ „์ฒด์—์„œ
791
+ `digest_landing_check.sh <digest.md>` ๋ฅผ **์ธ์ž์™€ ํ•จ๊ป˜ ๋ถ€๋ฅด๋Š” ํ”„๋กœ๋•์…˜ ํ˜ธ์ถœ๋ถ€๋Š” 0๊ฐœ**๋‹ค.
792
+ selfcheck ์ฃผ์„ ์ž์‹ ์ด ๊ทธ๋ ‡๊ฒŒ ๋งํ•œ๋‹ค โ€” *"lanes existed and ran only when a human typed the
793
+ command"*. โ‡’ **ใ€Œ๋ฐฐ์„ ๋๋‹คใ€๊ฐ€ ๋‹ค๋ฅธ ๋ฐฐ์„ ์ด์—ˆ๋‹ค**: ๊ณ„๊ธฐ์˜ self-test ๋Š” ๋„๋Š”๋ฐ ๊ณ„๊ธฐ ์ž์ฒด๋Š” ์•„๋ฌด๋„
794
+ ์•ˆ ๋ถ€๋ฅธ๋‹ค. **๊ทธ๋ฆฌ๊ณ  ์ด 0 ์€ ยง4 P4-1 ์˜ ๋ฏธ์ถฉ์กฑ ์„ ํ–‰์กฐ๊ฑด์ด๋‹ค** โ€” ๊ณต๊ฐœ ๋ ˆํฌ์—์„œ์กฐ์ฐจ ์‹คํ–‰ ๊ฒฝ๋กœ๊ฐ€
795
+ ์—†๋Š” ๊ณ„๊ธฐ๋ฅผ ์กฐ์ง ํด๋ก ์—์„œ ๋Œ๋ฆฐ๋‹ค๊ณ  ์“ธ ์ˆ˜ ์—†๋‹ค. (๋‚˜๋จธ์ง€ ์ ˆ๋ฐ˜ ยซ๋„ค ๋ถ„๊ธฐ ์•ต์ปค๋งยป์€ **๋ฏธํ™•์ธ**.)
796
+ - **160์ค„**์ด ์˜› ๋“ฑ๊ธ‰(`โ‘ขโ‘ค are ๐ŸŸข, โ‘ โ‘กโ‘ฃ are ๐Ÿ”ต`)์„ **ํ˜„์žฌํ˜• ์˜ˆ์‹œ**๋กœ ์ธ์šฉํ•œ๋‹ค. 632์ค„์ด ์ด๋ฏธ
797
+ ๊ฐฑ์‹ ํ–ˆ๋‹ค. ์ด ํŒŒ์ผ์ด ์Šค์Šค๋กœ ์ด๋ฆ„ ๋ถ™์ธ **ํŒŒ์ผ ๋‚ด๋ถ€ half-fix ์ „ํŒŒ ๊ฒฐํ•จ**์˜ ์žฌ๋ฐœ์ด๋‹ค.
798
+
799
+ ### ยงGate-consequence ์˜ ์ผ๊ด€์„ฑ โ€” ์ž๋ฐฑ์€ ์ ํ˜€ ์žˆ๊ณ  ์ฒ˜๋ถ„์€ ์•ˆ ๋๋‹ค (2026-08-17)
800
+
801
+ 607โ€“614์ค„์ด **์Šค์Šค๋กœ** ์ด๋ ‡๊ฒŒ ์ ์–ด๋†จ๋‹ค:
802
+ > *"โ‘ค ๋Š” ๐ŸŸข on `intent-routing probe 94%` โ€” **a self-measurement, not a head-to-head** โ€ฆ
803
+ > The inconsistency is real and it is **the gate's, not โ‘ก's** โ€ฆ Resolving that is a **separate
804
+ > change** to the status definitions โ€” flagged here, **not silently settled**."*
805
+
806
+ **๊ทธ ยซseparate changeยป ๊ฐ€ ์˜ค์ง€ ์•Š์•˜๋‹ค.** ์‹ค์ธกํ•˜๋ฉด **6ํ–‰ ์ค‘ 4ํ–‰์ด ๋น„์ผ๊ด€**์ด๋‹ค:
807
+ ```
808
+ โ’ท ์ผ๊ด€ ์ ์šฉ ๋งŒ์กฑ โ€” 282์ค„์ด "ยงGate consequence ๋ฅผ **๋ฉด์ œ ์—†์ด ๊ทธ๋Œ€๋กœ ๋งŒ์กฑ**ํ•œ๋‹ค" ๊ณ  ๋ช…์‹œ
809
+ โ‘ข ์ผ๊ด€ ์ ์šฉ ๋ณด์œ  (moat 3โ€“4 family blind ยท HITL 8/8)
810
+ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
811
+ โ‘  ๋น„์ผ๊ด€ ์˜ˆ์™ธ๋ฅผ ์ •์‹ ์ทจ๋“ (92-99์ค„ โ€” ์‚ฌ์ „๋“ฑ๋ก 2ํšŒ ์ธก์ • ํ›„ ๋ฏธ์„ฑ๋ฆฝ. ์ ˆ์ฐจ๋Š” ๋ฐŸ์•˜๋‹ค)
812
+ โ‘ก ๋น„์ผ๊ด€ **๋ฏธ๊ฒฐ** โ€” 607-614 ์ž๋ฐฑ์ด "โ‘ก๋ฅผ ๋ฉด์ œํ• ์ง€ โ‘ค๋ฅผ ์žฌ์ธก์ •ํ• ์ง€" ๋ฅผ ์•ˆ ์ •ํ–ˆ๋‹ค
813
+ โ‘ค ๋น„์ผ๊ด€ ๋ฏธ๋ณด์œ ์ธ ์ฑ„ ๐ŸŸข โ† ์ž๋ฐฑ์˜ ๋Œ€์ƒ
814
+ โ‘ฃ ๋น„์ผ๊ด€ ์–ธ๊ธ‰์กฐ์ฐจ ์—†์Œ
815
+ ```
816
+ ๐ŸŸฅ **์ดˆํŒ์ด ์—ฌ๊ธฐ์„œ ยซ6ํ–‰ ์ค‘ ์ผ๊ด€ ์ ์šฉ๋œ ํ–‰์ด ์—†๋‹คยป ๊ณ  ์ ์—ˆ๋Š”๋ฐ, ๋ฐ”๋กœ ์•„๋ž˜ ์ž๊ธฐ ํ‘œ๊ฐ€ ๊ทธ๊ฑธ
817
+ ๋ฐ˜์ฆํ–ˆ๋‹ค**(โ’ท ๋งŒ์กฑ ยท โ‘ข ๋ณด์œ ). ์ ๋Œ€๊ฒ€์ฆ์ด ์žก์•˜๊ณ  ์ •์ •ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ดˆํŒ์€ โ‘ก๋ฅผ **ใ€Œ๋ฉด์ œใ€๋กœ ํ™•์ •
818
+ ํ‘œ๊ธฐ**ํ–ˆ๋Š”๋ฐ, ์ž๋ฐฑ ์›๋ฌธ์€ **๋ฏธ๊ฒฐ**์ด๋‹ค โ€” ์ ˆ์˜ ๊ฒฐ๋ก (ยซ์•„๋ฌด๊ฒƒ๋„ ์ •ํ•˜์ง€ ์•Š๋Š”๋‹คยป)๊ณผ ํ‘œ๊ฐ€ ์–ด๊ธ‹๋‚˜ ์žˆ์—ˆ๋‹ค.
819
+ ๐ŸŸฅ **์ด๊ฑด ์˜ค๋Š˜ ์ด ์ €์žฅ์†Œ๊ฐ€ ๋ฐ˜๋ณตํ•ด ๋งŒ๋‚œ ยซ๋ฏธ์ธก์ •์„ 0์œผ๋กœ ์ ‘์—ˆ๋‹คยป์™€ ๋‹ค๋ฅธ ํ˜•ํƒœ๋‹ค** โ€” ์ ‘ํž˜์ด ์•„๋‹ˆ๋ผ
820
+ **์ ์šฉ ๋ˆ„๋ฝ**์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž๋ฐฑ์ด ๋ฌธ์„œ์— ์ ํ˜€ ์žˆ๋Š”๋ฐ ์•ˆ ๊ณ ์ณ์ง„ ๊ฒƒ์€ ใ€Œ๋ชฐ๋ž๋‹คใ€๊ฐ€ ์•„๋‹ˆ๋ผ
821
+ **ใ€Œ์•Œ๊ณ  ๋ฏธ๋ค˜๋‹คใ€**๋ผ์„œ, ๋‹ค์Œ ๋ผ์šด๋“œ๊ฐ€ ๊ทธ ์ž๋ฐฑ์„ ใ€Œ์ด๋ฏธ ์ธ์ง€๋œ ์‚ฌํ•ญใ€์œผ๋กœ ์ฝ๊ณ  ๋˜ ๋„˜๊ธธ ์œ„ํ—˜์ด ํฌ๋‹ค.
822
+
823
+ **์ฒ˜๋ถ„(์šด์˜์ž ๊ฒฐ์ • ํ•„์š”, ์—ฌ๊ธฐ์„œ ํ™•์ •ํ•˜์ง€ ์•Š์Œ)** โ€” ๋‘˜ ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•˜๊ณ  ์…‹์งธ๋Š” ์—†๋‹ค:
824
+ - **(A) ยงGate-consequence ๊ฐ€ ๋ชจ๋“  ๐ŸŸข ๋ฅผ ๊ตฌ์†ํ•œ๋‹ค** โ‡’ โ‘ค ๋Š” ๊ณผ๋Œ€ ์ฑ„์ ์ด๊ณ  ์žฌ์ธก์ • ๋Œ€์ƒ์ด๋‹ค
825
+ - **(B) advisory ๋‹ค** โ‡’ โ‘กยทโ‘ฃ ๋ฅผ ๊ฑฐ๊ธฐ์— ๋ฌถ์–ด์„œ๋Š” ์•ˆ ๋˜๊ณ , โ‘  ์ด ๋ฐ›์€ ยซ์˜ˆ์™ธยป๋Š” ์• ์ดˆ์— ํ•„์š” ์—†์—ˆ๋‹ค
826
+
827
+ โš ๏ธ ์ด ์ ˆ์€ **์ž๋ฐฑ์„ ๊ฒฐ์ •์œผ๋กœ ๋ฐ”๊พธ์ง€ ์•Š๋Š”๋‹ค.** ์ง€๊ธˆ ํ•˜๋Š” ๊ฒƒ์€ ใ€Œ๋ฏธ๋ค„์กŒ๋‹ค๋Š” ์‚ฌ์‹ค ์ž์ฒด๋ฅผ ๊ธฐ๋กํ•ด์„œ
828
+ ๋‹ค์Œ ๋ผ์šด๋“œ๊ฐ€ ๊ทธ๊ฒƒ์„ ์ธ์ง€๋œ ์‚ฌํ•ญ์œผ๋กœ ์†Œ๋น„ํ•˜์ง€ ๋ชปํ•˜๊ฒŒใ€ ํ•˜๋Š” ๊ฒƒ๋ฟ์ด๋‹ค.
829
+
830
+ ๐ŸŸฅ **๊ทธ๋Ÿฐ๋ฐ ๊ทธ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ด ์ ˆ์ด ์ž๊ธฐ๊ฐ€ ์ง„๋‹จํ•œ ์‹คํŒจ๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค โ€” ์ ๋Œ€๊ฒ€์ฆ ์ง€์ , ์ˆ˜์šฉํ•œ๋‹ค.**
831
+ 607-614์ค„์˜ ์ž๋ฐฑ๋„ **์ด ํŒŒ์ผ์˜ ์‚ฐ๋ฌธ**์ด์—ˆ๊ณ , ๊ทธ ๋งค์ฒด๋กœ **์ด๋ฏธ ํ•œ ๋ฒˆ ์‹คํŒจํ–ˆ๋‹ค**(๊ทธ๋ž˜์„œ ์ด ์ ˆ์ด
832
+ ์žˆ๋‹ค). ๊ฐ™์€ ๋งค์ฒด์— ํ•œ ๋ฒˆ ๋” ์ ์œผ๋ฉด์„œ ์•ต์ปคยท๊ธฐํ•œยท์†Œ์œ ์ž๋ฅผ ์•ˆ ๋ถ™์ด๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™๋‹ค.
833
+ `CLAUDE.md ยงMechanization Boundary` ๊ฐ€ **์ฑ„๋„(ยซ๊ธฐ๋ก์ด ์žˆ๋Š”๊ฐ€ยป)์€ ๊ธฐ๊ณ„ํ™” ๋Œ€์ƒ**์ด๋ผ๊ณ  ์ •ํ•œ๋‹ค.
834
+
835
+ โ‡’ **ํŒŒ์ผ ๋ฐ– ์•ต์ปค๋ฅผ ๊ฑด๋‹ค**: ์„ธ์…˜ ์นด๋“œ(`tracks/_meta/reference_next_session_starter.md`)์˜
836
+ ๐Ÿงต ๋ธ”๋ก์— **ยซโ‘ค dominance ์ผ๊ด€์„ฑ โ€” ์šด์˜์ž ๊ฒฐ์ • ๋Œ€๊ธฐ (์ œ๊ธฐ 2026-08-17)ยป** ๋ฅผ ๋“ฑ์žฌํ•œ๋‹ค.
837
+ ์นด๋“œ๋Š” ๋งค ์„ธ์…˜ ์‹œ์ž‘์— ์ฝํžˆ๊ณ  ์ด ํŒŒ์ผ์€ ์•ˆ ์ฝํžŒ๋‹ค โ€” ๊ทธ๊ฒŒ ์ฐจ์ด๋‹ค.
838
+ ๐ŸŸฅ **์ด ๋“ฑ์žฌ๊ฐ€ ์—†์œผ๋ฉด ์ด ์ ˆ์€ ์ž๋ฐฑ์˜ ์žฌ์ƒ์‚ฐ์ผ ๋ฟ์ด๋‹ค.**
839
+
840
+ ---
841
+
675
842
  ## For a field harness (e.g. pmh, qasp)
676
843
  Same gate, its own identities. A field harness ships to its team when its identity checklist is all-green,
677
844
  certified by a **์‹ค์ฆ์ƒ์„ธ (demonstration-detail) doc in that harness's own repo** โ€” the QA certificate
@@ -2182,3 +2182,27 @@
2182
2182
  outcome: accepted
2183
2183
  evidence: "tool_uses 25(๊ณ„๊ธฐ ์ƒ์กด โ€” ์นด๋“œ๊ฐ€ ๊ฒฝ๊ณ ํ•œ `tool_uses: 0` ์•„๋‹˜). **4/4 ์•ต์ปค ์ƒ์กด**, ๋งค๋ฒˆ ๋Œ€์‘ ๋ ˆ์ธ๋งŒ ์ ์ƒ‰(S1โ†’2๊ฑดยทS2โ†’1๊ฑดยทS3โ†’2๊ฑดยทB1โ†’known-pair 2๊ฑด), ๋ฌด๊ด€ 25~28๊ฐœ๋Š” ํ†ต๊ณผ โ†’ ๊ณผ๊ฒฐํ•ฉ 0. ๋ณต์› ํ›„ 29 passed ์žฌํ™•์ธ, ํŠธ๋ฆฌ clean. ๐ŸŸฅ substring 8ํ–‰์€ **์ „๋ถ€ โœ… ๋กœ ํŒ์ •ํ–ˆ๋Š”๋ฐ ์ฝ”๋ฑ์Šค์™€ ๊ฐˆ๋ ธ๊ณ  ์ด์ชฝ์ด ์กŒ๋‹ค** โ€” ใ€Œ๋šซ๋ฆฌ๋Š” ์ž…๋ ฅ์„ ์ œ์‹œ ๋ชป ํ•จใ€์„ ํŒ๋ณ„๋ ฅ ์žˆ์Œ์œผ๋กœ ์ฝ์—ˆ์œผ๋‚˜, ๊ทธ ๋‹จ์–ธ์ด *์ฃผ์žฅ*ํ•˜๋Š” ๊ฒƒ(ยซ๋ฒ”์œ„ ๋ฐ– ๋ณด๊ณ ๊ฐ€ ๋‚ฌ๋‹คยป)์€ ํŒŒ์ผ๋ช…๋งŒ์œผ๋กœ ์ฆ๋ช…๋˜์ง€ ์•Š๋Š”๋‹ค. **์—†์Œ์„ ์ฆ๋ช… ๋ชป ํ•จ โ‰  ํŒ๋ณ„๋ ฅ ์žˆ์Œ**"
2184
2184
  cost: 135k tokens
2185
+ - date: 2026-08-18
2186
+ agent: Explore ร—4 (isolated) โ€” AX-๋ ˆ๋”” ์ฐฉ์ˆ˜ ์ „ ์ •์ฐฐ(FH ๋Œ€์ƒ๋™๊ฒฐ ์„ ํ–‰์ž์‚ฐ ยท qasp ํ•ด์„๊ธฐ ์–ดํœ˜ ยท D2 ์Šค์บ๋„ˆ ๋ฐฐ์„  ยท D3โ“‘ ์šฉ์–ด ์ฑ„๋„ ยท B5 ์ƒํƒœ ์–ดํœ˜ ยท ํ˜ธ์ถœ๋ถ€ 0 ์ขŒํ‘œ)
2187
+ purpose: "์žฌ๋ฐœ๋ช… ๋ฐฉ์ง€ + ์ขŒํ‘œ ํ™•์ •. ์ฐฉ์ˆ˜ ์ „ ยซ์ด๋ฏธ ์žˆ๋‚˜ยป ๋ฅผ ๊ธฐ๊ณ„๋กœ ๋จผ์ € ๋ฌป๋Š”๋‹ค(์˜ค๋Š˜ ์ด ๋ ˆํฌ์—์„œ ์žฌ๋ฐœ๋ช…์ด ํ•œ ๋ฒˆ ๋‚ฌ์—ˆ๋‹ค)"
2188
+ outcome: partial
2189
+ evidence: "6์ถ• ์ •์ฐฐ์„ 4๋ฐœ์ฃผ๋กœ ๋ฌถ์Œ(๊ฐ ๋Œ€์ƒ ์ง€๋ฌธ `target_freeze.sh verify` ๋กœ ์‹œ์ž‘). **์ •ํ™•ํ–ˆ๋˜ ๊ฒƒ**: ๋Œ€์ƒ๋™๊ฒฐ ์„ ํ–‰์ž์‚ฐ ์Šค์บ”์ด ยซ๊ธฐ๊ณ„ ์—†์Œ + ์‹คํŒจ 2์ข… ๋ฌธ์„œํ™”ยป ๋ฅผ ์งš์–ด 3๋ฒˆ์งธ ์‹œ๋„์˜ ์„ค๊ณ„๋ฅผ ๊ฒฐ์ • ยท D2 ๊ฐ€ `bug_report.py` ํ˜ธ์ถœ๋ถ€ 0์„ ์ปจํŠธ๋กค ๋™๋ฐ˜์œผ๋กœ ํ™•์ • ยท B5 ๊ฐ€ `rer_from_act2` ๋ฅผ ยซ์–ดํœ˜ ๋งคํ•‘ ์–ด๋Œ‘ํ„ฐ ๋ ˆํผ๋Ÿฐ์Šคยป ๋กœ ์ง€๋ชฉ(์žฌ๋ฐœ๋ช… ํšŒํ”ผ) ยท ๊ทผ๊ฑฐํ‘œ A3 ์˜ ํŒฌํ…€ ์ธ์šฉ `PEER_ABSENT` ๋ฐœ๊ฒฌ. ๐ŸŸฅ **ํ‹€๋ฆฐ ๊ฒƒ 2๊ฑด, ๋‘˜ ๋‹ค ๋‚ด๊ฐ€ ์ง์ ‘ ์žฌํ˜„ํ•ด์„œ ๊ฑธ๋ €๋‹ค**: โ“ ใ€Œ`_CAUSE_PLAIN` ์ปค๋ฒ„๋ฆฌ์ง€ ๊ฒŒ์ดํŠธ๊ฐ€ FAIL ๋ ˆ์ธ 4์ข…์„ ๋†“์นœ๋‹คใ€ โ†’ ๊ทธ 4์ข…์€ `StepEvidence.triage` ๊ฐ€ ์•„๋‹ˆ๋ผ ์ด์Šˆ-ํ›„๋ณด dict ๋กœ ๊ฐ€๊ณ  ์†Œ์Šค ์ฃผ์„์ด ์ด๋ฏธ ๊ทธ๋ ‡๊ฒŒ ๊ฐˆ๋ผ๋†จ๋‹ค(์˜คํƒ) โ“‘ ใ€Œ`env_cols_source` ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹คใ€ โ†’ 7ํžˆํŠธ ์‹ค์žฌ(์ฃผ์„์ด ๋งํ•œ ๊ฑด *๋‹ค๋ฅธ ๋ชจ๋“ˆ*). โ‡’ ์ •์ฐฐ ์‚ฐ์ถœ์€ ์†Œ์Šค๋กœ ๋‹ซํžˆ๊ธฐ ์ „์—” ์ขŒํ‘œ๊ฐ€ ์•„๋‹ˆ๋‹ค"
2190
+ cost: ~309k tokens (4๊ฑด ํ•ฉ)
2191
+ - date: 2026-08-18
2192
+ agent: general-purpose (isolated) โ€” qasp ํ˜ธ์ถœ๋ถ€ 0/๋ถˆ์ผ์น˜ ์Šค์บ๋„ˆ ์ œ์ž‘
2193
+ purpose: "ยซ์™„์„ฑ๋œ ์ธต + ํ˜ธ์ถœ์ž ์—†์Œยป ์ด ํ•˜๋ฃจ 4ํšŒ ๋‚ฌ๋‹ค โ€” stdlib ast ๊ธฐ๋ฐ˜ ๊ณ„๊ธฐ๋ฅผ known-pair ๋กœ ์„ธ์šฐ๊ณ  ์ „์ˆ˜ 1ํšŒ"
2194
+ outcome: accepted
2195
+ evidence: "**known-pair ์–‘์„ฑ 2/2 ยท ์Œ์„ฑ 5/5**(์Œ์„ฑ์€ ํ˜ธ์ถœ์ž *๊ฒฝ๋กœ๊นŒ์ง€* ๋Œ€์กฐ). ์ „์ˆ˜ 1024์‹ฌ๋ณผ ยท โ“162(์—„๊ฒฉ 32)ยทโ“‘207ยทUNDECIDABLE 73. ๐ŸŸฅ **์ž๊ธฐ ์˜คํƒ 2๊ณ„์—ด์„ ์Šค์Šค๋กœ ์žก์•„ ๊ณ ์ณค๋‹ค**: `same_module_refs` ๊ฐ€ import ๋งํฌ๋ฅผ ์š”๊ตฌํ•ด ๊ตฌ์กฐ์ ์œผ๋กœ ํ•ญ์ƒ 0(โ†’์—„๊ฒฉ โ“ 162โ†’32) ยท `DeviceAdapter` ๋•ํƒ€์ดํ•‘ ๋ฏธ๊ฒ€์ถœ. ์ง„์–‘์„ฑ ์†๊ฒ€์ฆ 1๊ฑด(`RuleAutoExpansionGate` โ€” ์™ธ๋ถ€ ์ฐธ์กฐ๊ฐ€ ์ฃผ์„ 2์ค„, ๊ทธ ์ด๋ฆ„์€ **์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ฒ ์ž**). โ˜… **`target_freeze.sh` ์˜ ์ฒซ ์‹ค์‚ฌ์šฉ์ด ์—ฌ๊ธฐ์„œ ๋‚ฌ๋‹ค** โ€” ํšŒ์ˆ˜ ์‹œ `WRONG-TARGET`(๋ฐœ์ฃผ ์ค‘ ๋‚ด๊ฐ€ ์ปค๋ฐ‹ 3๊ฑด ํˆฌ์ž…), ์œ„์ž„๋ถ„์ด stale ํŒ์ •์„ ์•ˆ ๋“ค๊ณ  ์˜ค๊ณ  ํ˜„์žฌ ํŠธ๋ฆฌ์—์„œ ์ „๋Ÿ‰ ์žฌ์‹คํ–‰. ๋ฏธํ•ด๊ฒฐ ์ž๋ฐฑ: ์†๊ฒ€์ฆ 1๊ฑด๋ฟ ยท ๋ฏธ๊ฒ€์ถœ ๋ฏธ์ธก์ • ยท CI ๋ฏธ๋ฐฐ์„ "
2196
+ cost: 167k tokens
2197
+ - date: 2026-08-18
2198
+ agent: codex/gpt-5.5 (cross-family sidecar) โ€” FH `target_freeze.sh` ๊ฒŒ์ดํŠธ ์ ๋Œ€๊ฒ€์ฆ
2199
+ purpose: "๊ฐ์‚ฌ ๋Œ€์ƒ ๋™๊ฒฐ ๊ฒŒ์ดํŠธ์˜ fail-open / ์˜คํƒ / ์…ธ ์ด์‹์„ฑ โ€” ์žฌํ˜„ ๋ช…๋ น ํ•„์ˆ˜"
2200
+ outcome: accepted
2201
+ evidence: "**6๊ฑด, ์ „๋ถ€ ์žฌํ˜„ ๋ช…๋ น ๋™๋ฐ˜, ๋‚ด๊ฐ€ ์ง์ ‘ ์žฌํ˜„ํ•ด 6/6 ํ™•์ธ.** S๊ธ‰ 3๊ฑด์ด **fail-open**(`_sha` ๊ฐ€ `|awk` ๋กœ rc ์†Œ์‹ค ยท `ls-files -o` ์‹คํŒจ๊ฐ€ ํŒŒ์ดํ”„์— ๋จนํž˜ ยท ๋ผ๋ฒจ ๋ฌธ์ž์น˜ํ™˜ ์ถฉ๋Œ๋กœ **ํ•€ํ•œ ์  ์—†๋Š” ๋ผ๋ฒจ์ด MATCH**) + A๊ธ‰ 2(์„œ๋ธŒ๋ชจ๋“ˆยท์‹ฌ๋ณผ๋ฆญ๋งํฌ ๋ฏธ๊ฒ€์ถœ) + ๊ณผํƒ 1(๋นˆ ์ปค๋ฐ‹). ๐ŸŸฅ **๋ ˆ์ธ 11/11 ์ดˆ๋ก์ธ ์ƒํƒœ์—์„œ ์ „๋ถ€ ๋šซ๋ ธ๋‹ค** โ€” ์ปจํŠธ๋กค ์žˆ์Œ โ‰  ํŒ๋ณ„๋ ฅ ์žˆ์Œ. ์ „๋ถ€ ์ˆ˜๋ฆฌ + ๋ ˆ์ธ ๊ณ ์ •"
2202
+ cost: ~40k tokens
2203
+ - date: 2026-08-18
2204
+ agent: agy/gemini (cross-family sidecar, 2๋ฒˆ์งธ ๊ณ„์—ด) โ€” ๊ฐ™์€ ๊ฒŒ์ดํŠธ, **๋‹ค๋ฅธ ์ถ•** ์š”๊ตฌ
2205
+ purpose: "codex ์ง€์  ๋ชฉ๋ก์„ ๋จผ์ € ์ฃผ๊ณ  ยซ๊ทธ ๋ฐ–์˜ ์ถ•ยป(๋™์‹œ์„ฑยทenvยท๊ฑฐ์ง“ ์•ˆ์‹ฌยท์ธ์ฝ”๋”ฉ)์„ ์š”๊ตฌ โ€” ํ•œ ๊ณ„์—ด์— ๋ชฐ๋ฉด ๊ฐ™์€ ์‚ฌ๊ฐ์ด ๋‚จ๋Š”๋‹ค"
2206
+ outcome: accepted
2207
+ evidence: "**6๊ฑด ยท codex ์™€ ๊ฒน์นœ ์ง€์  0.** ์ตœ์ƒ์œ„๋Š” `GIT_DIR`/`GIT_WORK_TREE` ๊ฐ€ `git -C` ๋ฅผ ์ด๊ธด๋‹ค โ€” **์—‰๋šฑํ•œ ๋ ˆํฌ๋ฅผ ์žฌ๊ณ ๋„ ยซ๋™๊ฒฐํ–ˆ๋‹คยป ๊ณ  ๋ณด๊ณ **ํ•œ๋‹ค(๊ณ„๊ธฐ๊ฐ€ ๋Œ€์ƒ์„ ํ‹€๋ฆฌ๋Š” ํ˜•ํƒœ). ๊ทธ ์™ธ untracked **์‹คํ–‰ ๋น„ํŠธ** ๋ฏธ๊ฒ€์ถœ(์ด ๋ ˆํฌ๊ฐ€ ์ด๋ฏธ ๋ฐ์ธ ์ถ•) ยท TOCTOU ยซ์œ ๋ น ์ง€๋ฌธยป ยท ๋ฏธ์ดˆ๊ธฐํ™” ์„œ๋ธŒ๋ชจ๋“ˆ์€ `foreach` ๊ฐ€ ๊ฑด๋„ˆ๋œ€ ยท `---` ๊ตฌ๋ถ„์ž ๊ฒฝ๊ณ„ ยท `foreach` ์˜ `;` rc ์†Œ์‹ค. ์ „๋ถ€ ์ˆ˜๋ฆฌ, ๋ ˆ์ธ 11โ†’28. โ‡’ **๊ณ„์—ด ๋ถ„๋ฆฌ๊ฐ€ ๊ฐ’์„ ๋ƒˆ๋‹ค** โ€” ์ด 6๊ฑด์€ codex ๋ฅผ ํ•œ ๋ฒˆ ๋” ๋Œ๋ ค์„œ๋Š” ์•ˆ ๋‚˜์˜จ๋‹ค"
2208
+ cost: ~35k tokens
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chrono-meta/fh-gate",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "description": "FH runtime adapters โ€” run FH governance, skills, and agents via Claude or Codex with machine-parseable gates.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -114,6 +114,8 @@
114
114
  "scripts/tier_census_grep.sh",
115
115
  "scripts/test_marker_floor_lanes.sh",
116
116
  "scripts/test_marker_crossfamily_lanes.sh",
117
+ "scripts/test_marker_standpoint_lanes.sh",
118
+ "scripts/test_marker_thirdparty_lanes.sh",
117
119
  "scripts/test_marker_axes_run_lanes.sh",
118
120
  "scripts/test_env_purity_lanes.sh",
119
121
  "scripts/.env_purity_tokens.defaults",
@@ -130,6 +132,8 @@
130
132
  "scripts/test_relay_channel_lanes.sh",
131
133
  "scripts/fh_session_load.sh",
132
134
  "scripts/branch_claim.sh",
135
+ "scripts/target_freeze.sh",
136
+ "scripts/test_target_freeze_lanes.sh",
133
137
  "scripts/test_branch_claim_lanes.sh",
134
138
  "scripts/hook_source_lib.sh",
135
139
  "scripts/test_hook_source_gate_lanes.sh",
@@ -138,6 +142,7 @@
138
142
  "templates/degrade_direction_scan.sh",
139
143
  "templates/.git-hooks",
140
144
  "templates/regression_guard.sh",
145
+ "scripts/test_regression_guard_ci_lanes.sh",
141
146
  "templates/predelete_check.sh",
142
147
  "templates/PRE-PUBLISH-CHECKLIST.md",
143
148
  "scripts/degrade_direction_scan.sh",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fh-commons",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "engines": {
5
5
  "claudeCode": ">=1.0.0"
6
6
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fh-meta",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "engines": {
5
5
  "claudeCode": ">=1.0.0"
6
6
  },
@@ -10,6 +10,63 @@ Format: [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
10
10
 
11
11
  ## Plugin Level
12
12
 
13
+ ### [2.4.0] โ€” 2026-08-18
14
+
15
+ ๐ŸŸฅ **BREAKING (gate) โ‘ **: the Axes 2โ€“3 marker's **`standpoint:` and `thirdparty:` fields are now
16
+ validated by value**, not merely by presence (`validate_standpoint_leg` / `validate_thirdparty_leg`
17
+ in `templates/.git-hooks/pre-commit`). A marker carrying free prose where the closed enum is
18
+ required, a degrade value with **no substantive grounds on the same line**, or **more than one**
19
+ line of either field, now **blocks the commit**.
20
+ - **Remedy**: use the enum. `standpoint: tier1b(<harness>) โ€” <what you read>` ยท
21
+ `standpoint: not-applicable โ€” <what you checked to conclude no target exists>` ยท
22
+ `thirdparty: checked(<what prior art you searched>)`. The hook prints the accepted forms.
23
+ - **Why**: presence-only checking catches silence but not a **confident wrong answer** โ€” measured on
24
+ the marker corpus, 4 markers used the enum correctly while **2 wrote free prose about peer-session
25
+ contact** and matched no enum member at all (the field-canon failure this repo already names:
26
+ normalizing a harness term into a general concept).
27
+
28
+ ๐ŸŸฅ **BREAKING (gate) โ‘ก**: **Axis 1 (`regression-guard.yml`) had never actually run** โ€” an
29
+ instrument error was rendering **green**. It now runs, so a repo whose Axis 1 check was
30
+ "passing" may go **red on its first real execution**.
31
+ - **Remedy**: read the actual guard output; the failures it now reports were always there.
32
+ - **Why**: the sample was 5/5 instrument-errors-as-green. A check that cannot fail is not a check.
33
+
34
+ ๐ŸŸฅ **BREAKING (gate) โ‘ข**: `scripts/selfcheck.sh` now executes **`test_target_freeze_lanes.sh`**
35
+ (28 lanes) as part of the standard run. A consumer whose `selfcheck` was green may see new output,
36
+ and a genuinely broken environment (no `shasum`/`sha256sum`) now surfaces there instead of silently.
37
+ - **Remedy**: the lanes are self-contained (`mktemp` fixtures, no network). A missing hash tool is a
38
+ real finding, not a lane defect โ€” the gate it anchors fails closed without one.
39
+ - **Why**: `lane-runner` flagged the suite as having **no runner** โ€” *"a suite nothing executes is
40
+ prose."* The author of the lanes had not wired them.
41
+
42
+ **Added**
43
+ - `scripts/target_freeze.sh` + `scripts/test_target_freeze_lanes.sh` โ€” **audit target freeze**.
44
+ Pin a target repo's content-addressed fingerprint before dispatching an audit; verify on return;
45
+ `WRONG-TARGET` (rc 1) invalidates that round's verdict wholesale. Third mechanization attempt,
46
+ deliberately routed **around** the two failures recorded in `steel-quench/SKILL.md` (a hook
47
+ advisory that fired on 100% of markers; a `base-SHA + diff-line-count` fingerprint invariant under
48
+ in-place edits and blind to untracked files).
49
+ ๐ŸŸฅ **Cross-family review found 3 fail-open paths while its lanes were 11/11 green** โ€” `_sha`
50
+ losing `shasum`'s rc through `| awk`, `git ls-files -o` failure swallowed by a pipeline, and a
51
+ label-sanitizing collision that returned `MATCH` for a label **never pinned**. All reproduced by
52
+ hand, all fixed, lanes 11 โ†’ 28.
53
+ - `โ‘ฃ promotion-criteria` section in the identity gate (its absence was itself the first finding).
54
+ - Incubator routing: `net-new` failure now routes to **`CURATED`** (hand the maker the prior-art
55
+ list and the delta it does not cover) instead of `KILL`; judgment-shaped candidates route to
56
+ `NOT-APPLICABLE`. KILL survives for measured precision-shortfall, hub-state dependence, and
57
+ inability-to-run.
58
+
59
+ **Fixed**
60
+ - `relay_channel` registration-time checker had a **0-line call site** โ€” the gate existed as 42KB
61
+ of code that nothing invoked.
62
+ - `standpoint: ยง7` closed its `not-applicable` definition (`Q0` target-class resolution, which can
63
+ return **more than one** target, each owing its own tier).
64
+ - `mate-agent-boundary` adapter: its **calibration pair was dead** โ€” the peer entry point hardcodes
65
+ its target and ignores `$1`, so the positive and negative arms were measuring **the same file**.
66
+ The negative arm's green was not discrimination; the live target simply happened to be failing.
67
+ - `package.json files[]` omitted two scripts that shipped documentation instructs consumers to run
68
+ (a phantom pointer inside a gate instruction).
69
+
13
70
  ### [2.3.0] โ€” 2026-08-17
14
71
 
15
72
  ๐ŸŸฅ **BREAKING (gate) โ‘ **: the capability effect-probe (`M6`) now watches **directory existence and
@@ -202,6 +202,26 @@ re-checks** it against the artifact (phantom-quench back-trace) before accepting
202
202
  source-grounded is **dropped, not judged**. No sidecar-only verdict (no weak-local-judge regression).
203
203
  Local 4090 = **canary tier** (evidence-of, never terminal verdict).
204
204
 
205
+ **Target freeze โ€” a prior drop reason, checked before any of the above (2026-08-17).** Grounding a
206
+ finding against *today's* tree proves nothing if the sidecar reviewed *yesterday's*. Pin before
207
+ dispatch and verify on return:
208
+
209
+ ```bash
210
+ bash scripts/target_freeze.sh pin "$REPO" "$ROUND_LABEL" # ๋ฐœ์ฃผ ์ง์ „
211
+ bash scripts/target_freeze.sh verify "$REPO" "$ROUND_LABEL" # ํšŒ์ˆ˜ ์งํ›„
212
+ ```
213
+
214
+ `rc 1` = **WRONG-TARGET โ†’ drop the whole round's findings**, not individual ones โ€” the round read a
215
+ tree that moved under it, so which findings survive is not decidable from the output. `rc 10` =
216
+ UNKNOWN (could not measure) โ€” that is **not** a pass; re-pin and re-dispatch. Measured trigger: three
217
+ occurrences in one day, one of which was sending a sidecar a **pre-repair diff** and then grounding
218
+ its findings against the repaired tree โ€” every finding "failed to ground", and the instrument, not
219
+ the reviewer, was wrong.
220
+
221
+ ๐ŸŸฅ **What this does NOT cover**: ยงL191's inlined-file pattern. When the prompt carries file contents
222
+ on stdin (the robust form for sidecars that have no file tools), the tree freeze says nothing about
223
+ **what bytes you actually sent**. That binding is still owed and is not claimed here.
224
+
205
225
  ## Step 6 โ€” Degrade ladder (the intelligent scale-down)
206
226
 
207
227
  **Consent branch first โ€” declined โ‰  degraded** (`[[capability_escalation_consent]]`): if the UAP has