@chrono-meta/fh-gate 2.5.1 โ†’ 2.7.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 (57) hide show
  1. package/.claude/rules/fh_4axis_gate.md +26 -3
  2. package/.claude-plugin/marketplace.json +2 -2
  3. package/AGENTS.md +24 -3
  4. package/CATALOG.md +41 -0
  5. package/CLAUDE.md +77 -15
  6. package/README.ja.md +36 -11
  7. package/README.ko.md +36 -11
  8. package/README.md +116 -18
  9. package/README.zh.md +32 -11
  10. package/docs/USER_GUIDE.md +118 -0
  11. package/docs/platform_sustainability.md +174 -0
  12. package/knowledge/shared/GLOSSARY.md +26 -1
  13. package/knowledge/shared/harness-core/fh_detail_protocols.md +44 -2
  14. package/knowledge/shared/harness-core/field_verdict_crossfamily_gate.md +19 -5
  15. package/knowledge/shared/harness-core/harness_incubator_doctrine.md +129 -2
  16. package/knowledge/shared/harness-core/multi_model_sidecar_strategy.md +32 -0
  17. package/knowledge/shared/harness-core/ship_readiness_gate.md +77 -8
  18. package/knowledge/shared/learnings/subagent_invocations_log.yaml +110 -0
  19. package/knowledge/shared/rules/knowledge_layer_seam.md +1 -1
  20. package/package.json +17 -3
  21. package/plugins/fh-commons/.claude-plugin/plugin.json +1 -1
  22. package/plugins/fh-meta/.claude-plugin/plugin.json +1 -1
  23. package/plugins/fh-meta/CHANGELOG.md +136 -0
  24. package/plugins/fh-meta/agents/persona-innovator.md +170 -0
  25. package/plugins/fh-meta/skills/auto-decorrelation/SKILL.md +44 -0
  26. package/plugins/fh-meta/skills/fh/SKILL.md +31 -0
  27. package/plugins/fh-meta/skills/goal-quench/SKILL_detail.md +1 -1
  28. package/plugins/fh-meta/skills/harness-doctor/SKILL.md +7 -1
  29. package/plugins/fh-meta/skills/harvest-loop/SKILL.md +32 -0
  30. package/plugins/fh-meta/skills/public-surface-audit/SKILL_detail.md +16 -1
  31. package/plugins/fh-meta/skills/steel-quench/SKILL.md +97 -0
  32. package/scripts/adapters/fixtures/mate_agent_boundary_known_negative.md +31 -0
  33. package/scripts/adapters/fixtures/mate_agent_boundary_known_positive.md +56 -0
  34. package/scripts/adapters/peer_resolve.sh +58 -6
  35. package/scripts/cluster_capability_scan.sh +60 -18
  36. package/scripts/digest_landing_check.sh +181 -10
  37. package/scripts/fh_hub_identity.sh +83 -0
  38. package/scripts/fh_session_load.sh +53 -5
  39. package/scripts/fh_track_resolve.sh +114 -0
  40. package/scripts/field_canon_preload.sh +50 -5
  41. package/scripts/package_coverage_check.sh +17 -0
  42. package/scripts/prior_art_prompt.sh +168 -0
  43. package/scripts/psa_scan_lib.sh +201 -15
  44. package/scripts/residency_admission_check.sh +204 -0
  45. package/scripts/selfcheck.sh +117 -1
  46. package/scripts/test_adapter_lanes.sh +67 -2
  47. package/scripts/test_heavy_classifier_lanes.sh +144 -0
  48. package/scripts/test_marker_defense_lanes.sh +152 -0
  49. package/scripts/test_marker_soul_check_lanes.sh +211 -0
  50. package/scripts/test_prior_art_prompt_lanes.sh +128 -0
  51. package/scripts/test_psa_singlefile_lanes.sh +351 -1
  52. package/scripts/test_residency_admission_lanes.sh +60 -0
  53. package/scripts/test_track_resolve_lanes.sh +158 -0
  54. package/templates/.git-hooks/pre-commit +400 -4
  55. package/templates/.git-hooks/pre-push +17 -2
  56. package/templates/settings.PriorArt.snippet.json +15 -0
  57. package/scripts/test_satellite_publish_gate_lanes.sh +0 -339
@@ -90,7 +90,12 @@ Identity marker: every greeting response opens with **๐Ÿฟ๏ธ then an identity-r
90
90
  **Branch test (mechanical โ€” local state only)**: returning = session files exist (any `tracks/**/session_*.md` or `tracks/_meta/*.md` beyond `.gitkeep`) **OR** mapped project tracks exist (`tracks/{name}/` dirs โ€” **any underscore-prefixed dir doesn't count** (`tracks/_*`, general rule not a closed list: `_meta`/`_audit`/`_contrib`/`_chamber`โ€ฆ); covers mapped-but-not-yet-synced users). **Never infer the branch from git log or CATALOG residue** โ€” a fresh clone carries full commit history but zero session files: it is a NEW install (origin: fresh-clone sonnet sim rendered the returning menu off commit messages, `fh_signal_2026-06-11` FP8).
91
91
 
92
92
  **New user** (neither condition holds โ€” fresh clone/install): 2-door starter, never the returning menu โ€”
93
- > ๐Ÿฟ๏ธ **Welcome to FH.** *Looks like you're new here! โ‘  Create your first project (guided) ยท โ‘ก Map an existing project โ€” and I can run `/install-wizard` to finish initial setup.*
93
+ > ๐Ÿฟ๏ธ **Welcome to FH.** *Looks like you're new here! What would you like to do?*
94
+ > - **โ‘  Create your first project** โ€” guided
95
+ > - **โ‘ก Map an existing project**
96
+ > - **๐Ÿ“– Read the guide / ask me anything**
97
+ >
98
+ > *โ€ฆand I can run `/install-wizard` to finish initial setup.*
94
99
 
95
100
  - **โ‘  Create your first project** โ†’ Step 3-0 (guided: name โ†’ `tracks/` โ†’ `.claudeignore` โ†’ cascade)
96
101
  - **โ‘ก Map an existing project** โ†’ `auto_project_mapping.md`; after a successful mapping, offer the ยง6 Full-Harness promotion prompt
@@ -100,8 +105,33 @@ Identity marker: every greeting response opens with **๐Ÿฟ๏ธ then an identity-r
100
105
  > ๐Ÿฟ๏ธ **Welcome to FH.** *forge-harness is a tool hub for rapidly setting up Claude Code projects. It supports plugin recommendations, project setup, and harness diagnostics. What would you like to work on?*
101
106
 
102
107
  **Returning user** (branch test above) โ€” open with the fixed 4-door menu (the doors are stable; the contents are composed live). A summary copy lives in CLAUDE.md ยงActive Onboarding โ€” keep branch tests and door labels in sync when editing:
103
- > ๐Ÿฟ๏ธ **Welcome back to FH.** *What would you like to start? โ‘  Map a project ยท โ‘ก Create a new project ยท โ‘ข Accelerate **or diagnose** a mapped project (work ยท Full-Harness ยท skills/agents/plugins ยท ์ง„๋‹จ) โ€” {field candidates} ยท โ‘ฃ Cross-project synergy*
108
+ > ๐Ÿฟ๏ธ **Welcome back to FH.** *What would you like to start?*
109
+ > - **โ‘  Map a project**
110
+ > - **โ‘ก Create a new project**
111
+ > - **โ‘ข Accelerate or diagnose a mapped project** (work ยท Full-Harness ยท skills/agents/plugins ยท ์ง„๋‹จ) โ€” {field candidates}
112
+ > - **โ‘ฃ Cross-project synergy**
113
+ > - **๐Ÿ“– Guide / Q&A**
104
114
  >
115
+ ๐ŸŸฅ **One door per line โ€” never join them with `ยท` into a single run-on line** (operator, 2026-08-20).
116
+ A `ยท`-joined menu wraps at an arbitrary terminal width, so the reader cannot see where one door ends
117
+ and the next begins. The vertical list satisfies **G-GREET-02** (๐Ÿฟ๏ธ + welcome on the SAME line),
118
+ **G-GREET-03** (fixed 4-door set) and **G-GREET-05** (welcome literals) unchanged โ€” those probes pin
119
+ the door *set*, the *literals*, and the *welcome line*, **not the menu's line count**. Layout is the
120
+ render layer; the probes are the verdict layer. The ๐Ÿ”ง developer door is likewise its own row at the
121
+ bottom of the list, never appended to another line.
122
+
123
+ **๐Ÿ“– door (unnumbered, always rendered)** โ€” opens `docs/USER_GUIDE.md` and takes FH-usage questions.
124
+ ๐ŸŸฅ **Do not renumber.** โ‘ โ€“โ‘ฃ are the fixed set; ๐Ÿ”ง was the only unnumbered exception and ๐Ÿ“– joins it at
125
+ that layer. A guide is *reference before work*, not *the start of work*, so it does not belong in the
126
+ numbered set. **G-GREET-03 (fixed 4-door) and G-GREET-05 (welcome literals) both stay satisfied** โ€” no
127
+ number was added and no welcome phrase was touched.
128
+ ๐ŸŸฅ **"Open" means path + a 3-line table of contents FIRST.** Never dump the file inline โ€” burning tokens
129
+ every session is precisely what this door exists to avoid. Then, and only then, branch on `uname -s`
130
+ to *suggest* an opener (Darwinโ†’`open` ยท Linuxโ†’`xdg-open` ยท MINGW/MSYSโ†’`start`); if none exists, skip
131
+ silently โ€” the path already landed, so nothing is lost. โš ๏ธ `open` is macOS-only and FH ships via npm,
132
+ so it must never be the default path. Operating detail (allowed corpus ยท say "not found" when absent)
133
+ lives in `/fh` Step 3.5.
134
+
105
135
  > (When **FH-dev state exists** โ€” the operator โ€” the welcome line is **"The FH operator โ€” good to see you."** in place of "Welcome back to FH.")
106
136
 
107
137
  - **โ‘  Map a project** โ†’ routes to `auto_project_mapping.md`; after a successful mapping, offer the ยง6 Full-Harness promotion prompt
@@ -170,6 +200,18 @@ priority: high|medium|low
170
200
  ---
171
201
  # FH Improvement Signal โ€” {date} ({source})
172
202
 
203
+ ## Session Retrospective โ† ๋งˆ๊ฐ ํšŒ๊ณ ๋กœ ์ƒ์„ฑ๋œ ์‹ ํ˜ธ๋งŒ. ์ƒํ•œ 8์ค„. ์ด๋ฒคํŠธ ์‹ ํ˜ธ๋Š” ์ด ์ ˆ ์—†์Œ
204
+ - ์ •์ •: {์šด์˜์ž๊ฐ€ ๋‚˜๋ฅผ ์ •์ •ํ•œ ๊ฑด์ˆ˜} โ€” ๊ฐ ํ•œ ์ค„, ๋ฌด์—‡์„ ์–ด๋–ป๊ฒŒ ํ‹€๋ ธ๋‚˜
205
+ - ์ž๋ ฅ {N} / ํƒ€๋ ฅ {M} โ€” ํƒ€๋ ฅ์€ **์žก์€ ์ถ• ์ด๋ฆ„**์œผ๋กœ (๋ ˆ์ธ ยท ๋˜๋Œ๋ฆผ ยท cross-family ยท ์ฒซ์‹ค์‚ฌ์šฉ ยท โ““ ยท ์šด์˜์ž ยท CI)
206
+ - ์•ˆ ๋Œ๋ฆฐ ์ถ•: {์ด๋ฆ„, ๋˜๋Š” ใ€Œ์—†์Œใ€}
207
+ - ๋ฐ˜๋ณต: {์ด๋ฒˆ์ด N๋ฒˆ์งธ์ธ ์‹ค์ˆ˜ โ€” memory ํ‚ค ๋˜๋Š” ใ€Œ์‹ ๊ทœใ€}
208
+
209
+ ๐ŸŸฅ **๋“ฑ๊ธ‰์„ ์ ์ง€ ๋งˆ๋ผ.** ยซ์„ธ์…˜์ด ์ž˜ ๋๋‹ค/๋ชป ๋๋‹คยป ๋Š” ์žํ‰์ด๊ณ  ๊ฒŒ์ž„ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ ๋Š” ๊ฒƒ์€ **์‚ฌ๊ฑด๊ณผ
210
+ ๊ทธ๊ฒƒ์„ ์žก์€ ์ถ•์˜ ์ด๋ฆ„**๋ฟ์ด๋‹ค. ํŒ์ •์„ ์•ˆ ์ ์œผ๋ฉด ์žํ‰ํ•  ๋Œ€์ƒ์ด ์—†๋‹ค. ใ€Œ์ •์ • ๊ฑด์ˆ˜ใ€๋Š” ํŠธ๋žœ์Šคํฌ๋ฆฝํŠธ
211
+ ์‚ฌ์‹ค์ด์ง€ ํŒ๋‹จ์ด ์•„๋‹ˆ๋ผ์„œ ๊ฒŒ์ž„์ด ์–ด๋ ต๊ณ , ์ž๋ ฅ/ํƒ€๋ ฅ ๋ถ„๋ฆฌ๋Š” ยซ๋‚ด๊ฐ€ ๋‹ค ์žก์•˜๋‹คยป ๋ฅผ ์“ฐ๊ธฐ ๋ถˆํŽธํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.
212
+ โš ๏ธ ์…‹ ๋‹ค ์žํ‰์„ **์–ด๋ ต๊ฒŒ** ํ•  ๋ฟ **๋‹ซ์ง€ ์•Š๋Š”๋‹ค** โ€” ๋‹ซํžˆ๋Š” ๊ฒƒ์€ peer ๋‚˜ cross-family ๊ฐ€ ์ด ํšŒ๊ณ ๋ฅผ
213
+ ์ฝ์„ ๋•Œ์ด๊ณ  ๊ทธ๊ฑด ์ด ํ˜•์‹์˜ ๋ฒ”์œ„ ๋ฐ–์ด๋‹ค.
214
+
173
215
  ## Friction Point
174
216
  -
175
217
 
@@ -469,11 +469,25 @@ own. `tier2b` is the honest reachable rung for that pairing; do not inflate a `t
469
469
  `tier3`, and do not undersell it to `tier2` either โ€” it is a distinct, real, if operator-correlated,
470
470
  data point.
471
471
 
472
- **Mechanization status โ€” `standpoint:` is prose-only today, and this must not be read as more than
473
- that.** `crossfamily:`'s degrade triad is hard-blocked at commit (`templates/.git-hooks/pre-commit`,
474
- `scripts/test_marker_crossfamily_lanes.sh` โ€” grep-verified: ~20 crossfamily references in the hook,
475
- validated fixtures). `standpoint:` has **no value-enum validation and no fixture suite** โ€” nothing stops an author from
476
- writing `not-applicable` with a thin justification, and no marker-shape check catches a wrong value.
472
+ **Mechanization status โ€” ๐ŸŸฅ CORRECTED 2026-08-20.** This paragraph used to say `standpoint:` was
473
+ "prose-only today" with "**no value-enum validation and no fixture suite**". **Both halves are false**
474
+ and had been for a while: `validate_standpoint_leg()` lives in `templates/.git-hooks/pre-commit` and
475
+ `scripts/test_marker_standpoint_lanes.sh` is wired through `scripts/selfcheck.sh`. Measured by varying
476
+ one variable at a time โ€” `banana(qasp)` โ†’ **blocked (enum)** ยท `tier2` without parens โ†’ **blocked
477
+ (enum)** ยท `tier2(qasp)` with no execution grounds โ†’ **passes with a warning** ยท with grounds โ†’
478
+ **passes**.
479
+
480
+ **What is actually true, stated at the right width**: the enum IS closed and enforced; the `tier2`+
481
+ execution grounds are **advisory** (a thin `tier2` records and warns, it does not block); and nothing
482
+ checks whether the recorded value is *true*. The old sentence collapsed all three into "no validation",
483
+ which suppresses use of a control that exists โ€” the quietest kind of drift, because it reads as
484
+ honest modesty.
485
+
486
+ ๐ŸŸฅ **This same false claim stood in FIVE places** (`CLAUDE.md` ร—2, `.claude/rules/fh_4axis_gate.md`,
487
+ `AGENTS.md`, here). The first repair fixed one; the second fixed three and still missed this file and
488
+ over-stated the fix. Both misses were surfaced by a **different-family reviewer**, not by a lane and
489
+ not by the author โ€” there is still no check that compares a rule's self-description against the
490
+ machinery it describes.
477
491
 
478
492
  ๐ŸŸฅ **Two sentences that stood here were STALE and are corrected (2026-08-17, re-measured โ€” a
479
493
  cross-family reviewer flagged the second, the first fell out of checking it).** They read
@@ -331,8 +331,18 @@ by design. ~~**Therefore a meta-harness candidate is not a chamber candidate.**~
331
331
  day-one walk ์˜ ์ •์˜๋Š” *"on the first run, with the user adding nothing, the thing produces
332
332
  something useful"* ์ด๊ณ  ๋ฐ˜๋Œ€๋ง์ด `built-but-not-wired`, ๊ทธ๋ฆฌ๊ณ  *"**wiring is part of the birth**"*
333
333
  ๋‹ค. **md ๊ทœ์œจ์€ ๊ตฌ์กฐ์ ์œผ๋กœ ํ˜ธ์ถœ๋ถ€๊ฐ€ ์—†๋‹ค**(์‚ด๋ฆฌ์–ธ์Šค). ์‹ค์ œ ๋ฐ˜๋ก€:
334
- `.claude/rules/fh_4axis_gate.md` ์˜ `standpoint:` ํ•„๋“œ โ€” *"Still validated by nothing โ€” zero hook
335
- lines, no fixture suite"* ์˜€๊ณ , `tier1b` ๋“ฑ๊ธ‰์ด **์—†์–ด์„œ ์ •์  ๋ฆฌ๋ทฐ๊ฐ€ tier2 ๋กœ ๊ธฐ๋ก**๋๋‹ค.
334
+ `.claude/rules/fh_4axis_gate.md` ์˜ `standpoint:` ํ•„๋“œ โ€” ๊ทธ ๊ทœ์œจ์ด *"Still validated by nothing โ€”
335
+ zero hook lines, no fixture suite"* ๋ผ๊ณ  **์ž๊ธฐ ์ž์‹ ์— ๋Œ€ํ•ด** ์ ๊ณ  ์žˆ์—ˆ๋‹ค.
336
+ ๐ŸŸฅ **2026-08-20 ์ •์ • โ€” ์ด ์˜ˆ์‹œ๋Š” ์ธ์šฉํ•œ ๋ฌธ์žฅ์ด ํ‹€๋ ธ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์ ธ ๋ฐฉํ–ฅ์ด ๋ฐ”๋€๋‹ค.** ์‹ค์ธก: ๊ทธ ์‹œ์ ์—
337
+ `validate_standpoint_leg()` ๋Š” ํ›…์— **์žˆ์—ˆ๊ณ ** ํ”ฝ์Šค์ฒ˜๋„ `selfcheck.sh` ๋กœ ๋ฐฐ์„ ๋ผ ์žˆ์—ˆ๋‹ค
338
+ (`banana(qasp)` โ†’ ์ฐจ๋‹จ ยท `tier2` ๊ด„ํ˜ธ ์—†์Œ โ†’ ์ฐจ๋‹จ). ์ฆ‰ ์ด๊ฑด ยซํƒœ์–ด๋‚ฌ๋Š”๋ฐ ์•ˆ ๊ฑธ์€ ๊ทœ์œจยป์ด ์•„๋‹ˆ๋ผ
339
+ **ยซ๊ฑท๊ณ  ์žˆ๋Š”๋ฐ ์ž๊ธฐ๊ฐ€ ๋ชป ๊ฑท๋Š”๋‹ค๊ณ  ์ ์–ด๋‘” ๊ทœ์œจยป**์ด๋‹ค โ€” ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒŒ ๋” ์กฐ์šฉํ•œ ๊ฒฐํ•จ์ด๋‹ค: ์ •์งํ•œ
340
+ ๊ฒธ์†์ฒ˜๋Ÿผ ์ฝํžˆ๋ฉด์„œ **์ด๋ฏธ ์žˆ๋Š” ์ปจํŠธ๋กค์˜ ์‚ฌ์šฉ์„ ์–ต์ œ**ํ•˜๊ณ , ์‹ค์ œ๋กœ ๊ทธ ๋ฌธ์žฅ์€ **์—ฌ์„ฏ ๊ฐœ ๋ฌธ์„œ๋กœ
341
+ ์ „ํŒŒ๋ผ** ์žˆ์—ˆ๋‹ค(`CLAUDE.md` ร—2 ยท ๊ทธ ๊ทœ์น™ ํŒŒ์ผ ยท `AGENTS.md` ยท `field_verdict_crossfamily_gate.md` ยท
342
+ ์—ฌ๊ธฐ). โ‡’ md ๊ทœ์œจ์˜ ์‹คํŒจ ๋ชจ๋“œ๋Š” **ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ ๋‘˜**์ด๋‹ค:
343
+ โ‘  ํƒœ์–ด๋‚˜๊ณ  ์•ˆ ๊ฑท๋Š”๋‹ค(ํ˜ธ์ถœ๋ถ€ ๋ถ€์žฌ) โ‘ก **๊ฑท๋Š”๋ฐ ์ž๊ธฐ ์ƒํƒœ๋ฅผ ํ‹€๋ฆฌ๊ฒŒ ์ ๋Š”๋‹ค**(์ž๊ธฐ์„œ์ˆ  ๋“œ๋ฆฌํ”„ํŠธ).
344
+ โ‘ก๋Š” โ‘ ์˜ ํŒ์ •์ž(ยซ๋ธ”๋ผ์ธ๋“œ sim ์ด ๋ฐœํ™”ํ•˜๋Š”๊ฐ€ยป)๋กœ๋Š” ์•ˆ ์žกํžŒ๋‹ค โ€” ๊ทœ์œจ์€ ์ •์ƒ ๋ฐœํ™”ํ•˜๊ณ , ํ‹€๋ฆฐ ๊ฒƒ์€
345
+ ๊ทธ ๊ทœ์œจ์ด ์ž๊ธฐ์— ๋Œ€ํ•ด ํ•˜๋Š” **์ง„์ˆ **์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๊ฑธ ์žก๋Š” ๊ฒ€์‚ฌ๋Š” ์•„์ง ์—†๋‹ค.
336
346
  `axes-run` ๊ธฐํ˜ธ ํ‚ค๋„ 53๊ฑด ์ค‘ 2๊ฑด์ด ์˜› ์˜๋ฏธ๋กœ ์“ฐ์˜€๋‹ค. **ํƒœ์–ด๋‚ฌ๊ณ  ์•ˆ ๊ฑธ์€ md ๊ทœ์œจ๋“ค**์ด๋‹ค.
337
347
 
338
348
  โ‡’ **์œ ๋‹› ํด๋ž˜์Šค๋ณ„ day-one walk ํŒ์ •์ž๋ฅผ ๋”ฐ๋กœ ๊ฑด๋‹ค**:
@@ -530,6 +540,123 @@ ceiling will never propose the redesign that was the point of incubating.
530
540
  *nursery* is allowed to do to it while it is still inside. The first is an exit condition; the second
531
541
  is a working posture.
532
542
 
543
+ ### 3-e. Two moves observed in one incubation session โ€” ยซ์ฑ„์šด๋‹คยป is not the whole job (operator-approved, 2026-08-19)
544
+
545
+ โš ๏ธ **Scope, up front**: this section records a **failure taxonomy measured on one field harness in
546
+ one session**, and the move it names. It is **not** a claim about what incubation essentially *is*.
547
+ A cross-family review of the first draft killed that framing, and it was right to
548
+ (ยง3-e-PROVENANCE below).
549
+
550
+ Operator's framing going in: *"qasp๊ฐ€ ์•„์ง ๋‚จ์€ ์ ๋“ค์ด ์žˆ์œผ๋‚˜ fh๋‚˜ pmh์˜ ์ธํ๋ฒ ์ดํŒ… ๋ชจ๋“œ๋กœ
551
+ ์‚ฌ์šฉ์‹œ(pmh๊ฐ€ ์‹ค์‹œ๊ฐ„ ๊ฒ€์ฆ ๋ฐ ๋ณด๊ฐ•)์—๋Š” ๋ถ€์กฑํ•œ ์ ์„ ๋ฉ”๊พธ์–ด์„œ ์˜๋„ํ•œ ๊ธฐ๋Šฅ๋“ค์ด โ€ฆ ๋ฐœํœ˜ ๊ฐ€๋Šฅํ•œ
552
+ ์ƒํƒœ๋“ค์ด๋ผ๊ณ  ๋‚˜๋Š” ๋ณด๊ณ ์žˆ์–ด. ์ธํ๋ฒ ์ดํ„ฐ ๊ธฐ๋Šฅ์˜ ํ™•์žฅ์ด์ง€."*
553
+
554
+ That holds **for the class of gap it names**. The session then measured a class outside it:
555
+
556
+ | | |
557
+ |---|---|
558
+ | โ‘  **์ฑ„์šด๋‹ค** | The target **declares** it cannot do something โ€” `UNCALIBRATED`, an unwired slot, a domain lock. The incubator supplies the capability at more tokens, more time. |
559
+ | โ‘ก **์„ ์–ธ๋˜๊ฒŒ ๋งŒ๋“ ๋‹ค** | The target produces **plausible output that is wrong**. โ‘  has nothing to grab. The move here is to *manufacture the declaration* โ€” or, more often than expected, **to move an existing declaration into the path someone reads.** |
560
+
561
+ #### ๐ŸŸฅ The five cases split three ways โ€” and the first draft got this wrong
562
+
563
+ The draft asserted *"none of the five signals a shortfall upstream."* **That is false, and the
564
+ falsification came from this repo's own artifacts** (cross-family review flagged it; source check
565
+ confirmed and went further than the reviewer did):
566
+
567
+ ```
568
+ ์ง„์งœ ๋ฌด์Œ โ€” ์ฑ„๋„์ด ์—†์—ˆ๋‹ค "๋ฉด์ œ"ยท"๋ฌด๋ฃŒ" ์ž๊ธฐ์–ต์ œ 2๊ฑด
569
+ (scanner did not exist until the session built it)
570
+ ์‹ ํ˜ธ๋Š” ์žˆ๋Š”๋ฐ ์•ˆ ์ฝํ˜”๋‹ค ๋ผ์šฐํŒ… ๊ณ ์•„ โ€” caller_zero_baseline.json ์ด 2๊ฑด
571
+ ORPHAN ์œผ๋กœ ๊ธฐ๋ก ์ค‘์ด์—ˆ๋‹ค(tracked ยท CI ๊ฐ€ ์ฝ๋Š”๋‹ค)
572
+ ํ•ธ๋“œ์˜คํ”„ โ€” ์„ ํ–‰ ๋ฌธ์„œ๊ฐ€ "ํ›„์†์ด ๊ฐฑ์‹ ๋ณธ" ์ด๋ผ๋Š”
573
+ ํฌ์ธํ„ฐ๋ฅผ ๋‚จ๊ฒผ๊ณ , ๊ทธ ํ›„์†์ด ์นจ๋ฌตํ–ˆ๋‹ค
574
+ ์ฑ„๋„์„ ๋งŒ๋“ค์—ˆ๋”๋‹ˆ ์„ ์–ธ๋๋‹ค p6 ๋ถ„๋ฅ˜ํ‘œ 0/6 โ€” `_UNMAPPED_SEEN` ๊ด€์ธก ์ฑ„๋„์ด 1๊ฑด
575
+ ํ•˜๋ฃจ ์ „ ์ปค๋ฐ‹์œผ๋กœ ๋„์ž…๋ผ ๋ฆฌํฌํŠธ๊นŒ์ง€ ๋ฐฐ์„ ๋๊ณ ,
576
+ ๊ทธ ๋‹ค์Œ ๋‚  ์ˆ˜๋ฆฌ๋๋‹ค
577
+ ```
578
+
579
+ **The third row is the load-bearing one, and the draft had it backwards** โ€” it cited p6 as an example
580
+ of silence when p6 is the **existence proof of โ‘ก succeeding**: someone built the channel, the silent
581
+ thing declared itself, โ‘  closed it the next day. One case, one day apart, in-repo.
582
+
583
+ โ‡’ So โ‘ก is not one move but two, and the second is more common than expected:
584
+
585
+ - **(a) build the channel where none exists** โ€” the 2 self-suppression cases
586
+ - **(b) put the channel where the reader is** โ€” the 2 unread-signal cases. This is
587
+ `gate_locality_principle.md` applied to *declarations* rather than to gates: a declaration nobody
588
+ reads is not a declaration. **Neither of those two was fixed by adding information; both were fixed
589
+ by moving where it surfaces.**
590
+
591
+ #### What was actually built, stated narrowly
592
+
593
+ Function โ‘ก was realized on that session as **authoring-time static instruments** โ€”
594
+ `scripts/self_suppression_scan.py` (trigger vocabulary swallowed by negation vocabulary),
595
+ `scripts/domain_coupling_scan.py` (hardcoded domain vocabulary), plus anchors that go red when the
596
+ instrument itself dies.
597
+
598
+ ๐ŸŸฅ **This is not a runtime declaration mechanism and must not be read as one.** Nothing there makes a
599
+ *running* audit announce ยซthis output is confidently wrongยป. What was demonstrated: **an incubator
600
+ holding ยง3-d's whole-repo authority built instruments the target had not built for itself.** Whether
601
+ the target *could* have is not established โ€” the observed reason was ordinary (nobody had looked),
602
+ not structural.
603
+
604
+ #### Ordering: conditional, not a law
605
+
606
+ The draft said *"โ‘ก is prior to โ‘ "*. Weakened deliberately: **where a defect is undeclared, โ‘  has no
607
+ target, so โ‘ก has to come first for that defect.** That is a statement about one defect's handling
608
+ order, not a phase ordering for incubation, and one session cannot support the stronger reading.
609
+
610
+ Likewise the draft's *"the second is worse than the first"* (silent-wrong vs crash) is **withdrawn** โ€”
611
+ severity depends on the operating context, and nothing here measured it.
612
+
613
+ #### ๐ŸŸฅ โ‘ก presupposes decorrelated input โ€” this belongs in the definition, not the caveats
614
+
615
+ Self-detection on that session was **2 of 16**, and both of the two were *reading something already
616
+ written down* (a baseline file that said `ORPHAN`; a loop that finished suspiciously fast), not
617
+ inference. The rest came from cross-family review (two families, zero overlap), revert probes, the
618
+ full suite, a caller-zero ratchet, a peer session, and a company session.
619
+
620
+ โ‡’ **โ‘ก as described is a property of an incubation regime that has decorrelated review attached, not
621
+ of a lone incubation session.** A single session should not be assumed able to run it.
622
+
623
+ ๐ŸŸฅ **And ยซdecorrelatedยป is decided by what you SEND, not by which family you send it to.** A panel
624
+ that all receives the same payload keeps the same blind spot no matter how many reviewers sign it.
625
+ The payload for โ‘ก is **the frozen diff *and* the change's own marker** โ€” the diff carries the code,
626
+ the marker carries the *claims* (which axes ran, which controls were alive, what residual is
627
+ admitted). A reviewer who never sees the marker cannot catch ยซan axis asserted with no traceยป or
628
+ ยซa residual implied but unlistedยป, because those defects are not in the code.
629
+
630
+ **Measured on this section itself, the same day**: the grounding arm was sent a **5-item fact list**
631
+ instead of repo access, and consequently reported every well-grounded statement outside that list as
632
+ invention โ€” one usable finding out of six. The family was fine; **the payload was the defect.**
633
+ โ‡’ [[feedback_decorrelation_axis_is_what_you_send]]. The plumbing that supplies this is
634
+ `auto-decorrelation` Step 5 (payload = frozen diff + marker), scoped to **consistency**, not honesty
635
+ โ€” asking whether the record matches the diff is a channel check; asking whether the record is *true*
636
+ is a verdict, and ยงMechanization Boundary keeps verdicts out of code.
637
+
638
+ #### The failure mode โ‘ก carries
639
+
640
+ The instruments were wrong **seven times** in that session. Six produced **plausible wrong numbers**;
641
+ one died loudly (`No such file`, `rc=1`) and was caught instantly. Once, a control was the only thing
642
+ standing between ยซthe corpus has none of this shapeยป and the truth, ยซthe detection surface does not
643
+ see that shapeยป.
644
+
645
+ โ‡’ **An instrument built to expose silent wrongness is itself a source of silent wrongness.** The
646
+ prescription measured there: **put the control in the same commit as the instrument.** Where that was
647
+ done the error surfaced immediately; where it was not, it surfaced afterwards, if at all.
648
+
649
+ #### ยง3-e-PROVENANCE โ€” what this section's own review caught
650
+
651
+ - **cross-family (codex, gpt-5.5)**: killed the ยซessence of incubationยป framing, the
652
+ ยซnone of the fiveยป claim, the ยซprior toยป ordering, and the ยซworse thanยป severity rule. All four
653
+ were adopted. Self-detection on this section: **0**.
654
+ - **grounding pass (agy, gemini-3.1-pro)**: mostly measured **the author's own dispatch error** โ€” it
655
+ was given a 5-item fact list rather than repo access, so every well-grounded statement outside that
656
+ list was reported as invention. One finding survived: *"all of them wrong"* overstated p6
657
+ (a finding whose true category happened to be the fallback would not be wrong), now softened.
658
+ ๐ŸŸฅ Recorded because the lesson is about **the reviewer's input scope**, not about the reviewer.
659
+
533
660
  ## 4. Compose โˆช disrupt โ€” two operating modes over other harnesses
534
661
 
535
662
  | Mode | What | FH mechanism |
@@ -149,6 +149,38 @@ human-review floor is structural, not a transitional patch. (Its Faros AI number
149
149
  the author's own caveat travels with any citation.)
150
150
  "Aggressive" Codex/Gemini use is bounded by the fit task-class above, never a blanket main-seat swap.
151
151
 
152
+ ### Write authority โ€” a sidecar audits, it does not edit (measured 2026-08-21)
153
+
154
+ The doctrine above governs **verdicts**: a sidecar's finding is an evidence candidate until the governor
155
+ source-closes it. That is the *judgment* axis. It says nothing about the **write** axis, and the gap is
156
+ not academic โ€” a sidecar with tool access will start editing the target tree unless told not to.
157
+
158
+ > **A sidecar returns findings and, at most, a proposed patch as TEXT. It does not write to the target
159
+ > tree.** The governor applies, or does not apply, each change. Same shape as the verdict rule: the
160
+ > sidecar supplies material, the governor is the only writer.
161
+
162
+ ๐ŸŸฅ **The reason is not overreach. It is that the fixer and the checker become the same party.**
163
+ Measured this day: `codex/gpt-5.5` was dispatched as an adversarial auditor over a hook delta and began
164
+ editing the working tree directly (caught by `mtime`, not by any gate). Its *finding* was real and sharp
165
+ โ€” two detectors in the same file had divergent leniency. Its *fix* widened one detector's pattern, and
166
+ the widened pattern then matched **the claim line's own text** as its own evidence โ€” a self-referential
167
+ false positive that flipped a BLOCK lane to PASS. **41 lanes stayed green.** A human reading the diff
168
+ sees "leniency aligned", which is correct as far as it goes. What caught it was the first real use in an
169
+ isolated clone. This is [[feedback_blind_separation_is_a_defect_generator]] arriving through a door the
170
+ verdict rule left open: the sidecar was, for those minutes, both author and reviewer of the same lines.
171
+
172
+ **Operationally**: dispatch sidecars with the target tree read-only where the runtime supports it; when it
173
+ does not, state the constraint in the prompt AND verify afterwards (`git status` / `mtime` on the files you
174
+ handed over). A sidecar edit discovered after the fact is treated as a **finding to re-derive**, never as a
175
+ patch to keep โ€” re-decide it in the governor's seat, because a patch you did not author is a patch you did
176
+ not review.
177
+
178
+ โš ๏ธ **Process safety, same surface**: terminating a runaway sidecar needs a discriminator for *your own*
179
+ process โ€” pin the model, capture the PID, or `pgrep` first. A bare `pkill -f codex` on a shared machine
180
+ reaches other sessions' sidecars; measured the same day (nothing was actually killed โ€” exit codes
181
+ separated the cases afterwards โ€” but the command could not have known that in advance). **Confirm what
182
+ died after killing**, not before.
183
+
152
184
  ### Decorrelation axes โ€” model family AND authoring context (measured 2026-08-01)
153
185
 
154
186
  Decorrelation has been treated as one axis (model family). A codex-outage session measured a second,
@@ -28,7 +28,7 @@ our own tests pass" โ€” a real and reportable milestone, and *still* short of th
28
28
  is authored by the same party it tests. The boundary is the one named in
29
29
  `[[feedback_adversarial_review_not_substitute_for_first_use]]`: **passing your own tests is not firing in
30
30
  the real situation**, and the first real use is repeatedly what invalidates the design. So RC never opens
31
- a `v1.0.0`; only REALIZED does.
31
+ an `identity-v1.0.0`; only REALIZED does.
32
32
 
33
33
  > The origin note (2026-08-08 session card) drew this ladder with RC and REALIZED **both** marked ๐ŸŸข. That
34
34
  > shorthand is fine in a card and breaks here: this gate's rule reads literally as "every identity ๐ŸŸข โ†’
@@ -109,19 +109,65 @@ Score with the same triangulation the 2026-07-14 audit used โ€” no single-source
109
109
  novice-vocabulary intents, scored on whether the right skill/gate fires. Salience-only โ‰  measured.
110
110
 
111
111
  ## Versioning policy โ€” the formal release track
112
- The formal release tag is **independent of the npm package version**. The npm version (currently in the
113
- `1.4.x` range) is the **plugin-cache lockstep number** โ€” it bumps on every shipped-asset change so Codex/
112
+ The formal release tag is **independent of the npm package version**. The npm version (**2.6.0** as of
113
+ 2026-08-21; โš ๏ธ this parenthetical said `1.4.x` until then โ€” a version number written into prose goes
114
+ stale silently and reads as fact, so verify it against `package.json` before citing) is the
115
+ **plugin-cache lockstep number** โ€” it bumps on every shipped-asset change so Codex/
114
116
  marketplace cache-invalidate; it is not a maturity claim. The **formal identity-maturity release starts at
115
117
  `v0.1.0`**. Do not conflate the two counters; a high npm number does not make the harness mature.
116
118
 
119
+ ๐ŸŸฅ **Tag namespace โ€” the two counters must not share one (added 2026-08-21, operator-approved).**
120
+ They did, and it broke the public surface: both tracks used `vX.Y.Z`, only the maturity track had
121
+ GitHub *Release* objects, so the Releases page advertised **`v0.3.0` (2026-08-16) as "Latest"** while
122
+ the shipped package was **2.6.0**. A visitor could not tell which number was newer or what either meant.
123
+
124
+ This is the same defect class this repo keeps finding in its gates โ€” **two layers, one name** (a CI
125
+ `paths:` filter read as the local hook; a leg scoped to load-bearing changes read as scoped to every
126
+ marker, both measured 2026-08-21). The fix is never "merge the layers"; the two counters measure
127
+ genuinely different quantities and collapsing them destroys the maturity signal. The fix is to stop
128
+ sharing the name:
129
+
130
+ ```
131
+ maturity track identity-v0.4.0 onward (v0.1.0 ยท v0.2.0 ยท v0.3.0 keep their names)
132
+ package track v2.6.0 onward, unchanged tags only โ€” NO GitHub Release objects (see below)
133
+ ```
134
+
135
+ ๐ŸŸฅ **The Releases page carries the maturity track ONLY โ€” and this was measured, not assumed.**
136
+ On 2026-08-21 a Release object was created for `v2.6.0` to make "Latest" reflect what ships. It was
137
+ deleted the same hour, by operator decision, because it solved the wrong half: **GitHub gives exactly
138
+ one "Latest" badge**, so two tracks on one page compete for it and the holder defines what the repo
139
+ announces. The package number took the headline and pushed the maturity claim under it. The misreading
140
+ that prompted it was already closed by the cheaper half โ€” a one-line header on the existing release
141
+ bodies. โ‡’ **package releases live in `CHANGELOG.md` and the registry, not here.** The `v2.x` tags
142
+ remain (a deleted Release does not delete its tag โ€” verified).
143
+
144
+ ๐ŸŸฅ **Read every bare `vX.Y.Z` in THIS section as the maturity track โ€” and from v0.4.0 that means the
145
+ tag is `identity-vX.Y.Z`.** So the all-green ship below is the tag **`identity-v1.0.0`**, not `v1.0.0`;
146
+ a bare `v1.0.0` would now be ambiguous with the package track (already past `v2.x`, so it will never
147
+ mint one โ€” but "will never collide" is not the same as "is unambiguous to a reader").
148
+ โš ๏ธ Renaming the prefix without carrying it to the milestone is exactly the half-fix this repo keeps
149
+ recording โ€” the rule lands and the thing the rule points at does not follow
150
+ (`[[feedback_half_fix_propagation_boundary]]`). Caught by a peer session, not by the author, on the
151
+ same day the rename was written.
152
+ โš ๏ธ Deliberately **not** rewritten: `fh-gate v1.0.0` (a different package), the CHANGELOG's record of a
153
+ past version normalization (history), and CATALOG entries โ€” checked one by one before editing. A
154
+ blanket substitution would have corrupted all three.
155
+
156
+ โš ๏ธ **Existing tags are NOT renamed.** Retagging deletes and recreates a public ref that release bodies
157
+ and inbound links already point at โ€” an irreversible operation on a public surface, so the
158
+ Destructive-Op gate applies to this repo's own tags. The cheap equivalent is a one-line header on the
159
+ existing release bodies stating which track they belong to. (The v0.3.0 body already says it โ€”
160
+ *"independent of the npm plugin-cache number"* โ€” but four paragraphs down, where the Releases list does
161
+ not show it. Gate-locality: if it is not where the reader is, it is not there.)
162
+
117
163
  **The `0.x` โ†” `1.0` mapping (refined 2026-07-14, informed operator decision).** Semver `0.x` explicitly
118
164
  means *early / not-yet-complete*, so the formal track maps cleanly onto the identity gate:
119
165
  - **`v0.1.0` = the first formal-release baseline.** It is tagged when the harness has a *proven core*
120
166
  (โ‰ฅ1 identity ๐ŸŸข by real artifact) and an *honest, evidence-scored status for the rest* โ€” NOT when every
121
167
  identity is green. `v0.1.0` makes **no all-green claim**; its release notes carry the real per-identity
122
168
  status (๐ŸŸข/๐ŸŸก/๐Ÿ”ด). This is the baseline *from which* all-green is tracked, not the all-green ship itself.
123
- - **`v1.0.0` = the all-green ship.** The original "ship only when every identity is ๐ŸŸข" condition maps to
124
- **v1.0.0**, not v0.1.0. A ๐ŸŸก/๐Ÿ”ด blocks *v1.0*, and names exactly what real run is missing โ€” it does not
169
+ - **`identity-v1.0.0` = the all-green ship.** The original "ship only when every identity is ๐ŸŸข" condition maps to
170
+ **`identity-v1.0.0`**, not `v0.1.0`. A ๐ŸŸก/๐Ÿ”ด blocks *v1.0*, and names exactly what real run is missing โ€” it does not
125
171
  block the honest v0.1.0 baseline.
126
172
 
127
173
  This refinement resolves the tension of tagging a baseline while identities are still maturing: `0.x` is
@@ -286,11 +332,34 @@ unchanged and keeps its own 2026-07-14 evidence).
286
332
  | **โ’ท** | **ํ”„๋กœ์ ํŠธ ๋ถ€์Šคํ„ฐ** (booster) โ€” ๐ŸŸฅ **๋‹ค๋ฅธ ๋‹ค์„ฏ๊ณผ ๊ฐ™์€ ์ธต์ด ์•„๋‹ˆ๋‹ค. ํฌ๊ด„ ๊ธฐ๋Šฅ์ด๋˜ โ‘ โ‘กโ‘ค ๋ฅผ ยซํฌํ•จยปํ•˜์ง€ ์•Š๊ณ  ยซ๋Œ์–ด๋‹ค ์“ด๋‹คยป โ€” ์…‹ ๋‹ค ๋ถ€์ŠคํŒ… ๋ฐ–์˜ ๊ณ ์œ  ๋ฒ”์œ„๋ฅผ ๊ฐ–๋Š”๋‹ค** โ€” ๋ฒˆํ˜ธ ๋Œ€์‹  โ’ท ๋ฅผ ์“ฐ๋Š” ์ด์œ ์ด์ž ยงโ’ท-layering ์„ ๋จผ์ € ์ฝ์–ด์•ผ ํ•˜๋Š” ์ด์œ  | judgment-circuit + ship-gate | ๐ŸŸข **GREEN (์‹ ์„ค 2026-08-16)** | **์ด ํ–‰์ด ์—†๋˜ ๊ฒƒ์ด ์ด ํ‘œ์˜ ๋งน์ ์ด์—ˆ๋‹ค.** ์˜จ๋ณด๋”ฉ ๋ฌธ โ‘ข(ยซ๋งคํ•‘ ํ”„๋กœ์ ํŠธ ๊ฐ€์†ยป)์ด ์˜ค๋ž˜์ „๋ถ€ํ„ฐ ์ด ๊ธฐ๋Šฅ์„ ํŒ”๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ๋“ฑ๊ธ‰ํ‘œ์— ๋Œ€์‘ ํ–‰์ด ์—†์—ˆ๋‹ค โ€” ๊ทธ๋ž˜์„œ ๋ถ€์Šคํ„ฐ๋Š” **ํ•œ ๋ฒˆ๋„ ๋“ฑ๊ธ‰์ด ๋งค๊ฒจ์ง„ ์ ์ด ์—†๊ณ , ์•ฝ์ ์ด ๋ฐœ๊ฒฌ๋  ์ž๋ฆฌ๋„ ์—†์—ˆ๋‹ค.** ๋ฏธํ• ๋‹น ๊ธฐ๋Šฅ์€ ๋ฏธ๊ฐ์‚ฌ ๊ธฐ๋Šฅ์ด๋‹ค. **์ธ์ ‘ ์„ธ ํ–‰์ด ์ด๊ฑธ ์•ˆ ๋ฎ๋Š”๋‹ค**: โ‘ก๋Š” *์ƒˆ ํ•˜๋„ค์Šค๋ฅผ ๋‚ณ๊ณ *(์„ฑ์ˆ™ํ•œ ํ•˜๋„ค์Šค๋Š” ๋Œ€์ƒ ์•„๋‹˜), โ‘ค๋Š” *์‚ฌ๋žŒ์˜ ์˜๋„*๋ฅผ ๋ฒผ๋ฆฌ๊ณ (์ฆํญ ๋Œ€์ƒ์ด ํ•˜๋„ค์Šค๊ฐ€ ์•„๋‹ˆ๋‹ค), โ‘ ์€ ๋‚จ์˜ ๋Šฅ๋ ฅ์„ *FH ๊ฐ€* ์“ด๋‹ค(ํ™œ์šฉ โˆช ํก์ˆ˜ โ€” ๋‘˜ ๋‹ค FH ๊ฐ€ ์ด๋“ ๋ณด๋Š” ๋ฐฉํ–ฅ). ๋ถ€์Šคํ„ฐ๋Š” **FH ์˜ ๊ธฐ๊ณ„๊ฐ€ ์ƒ๋Œ€ ํ•˜๋„ค์Šค์˜ ์ž์ฒด ๊ฐœ๋ฐœ์„ ๊ฐ€์†ํ•˜๋Š” ๊ฒƒ**์ด๋ผ ์…‹ ๋‹ค์™€ ๋ฐฉํ–ฅ์ด ๋‹ค๋ฅด๋‹ค. **์‹ค์ (์šด์˜์ž ์—ด๊ฑฐ + ์‹ค์ธก)**: pmh ๋Š” *์ด ๊ฒฝ๋กœ์—์„œ ์ถœ๋ฐœํ–ˆ๋‹ค* ยท mate ์Šคํ‚ฌ ์ถœํ•˜ + ์ธํ”„๋ผ ๋ฐฐ์„  ยท ์กฐ์ง ํ™˜๊ฒฝ 2๊ฑด(ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ ์ธํ”„๋ผ ์ด์‹, ์ž์‚ฐ๋ช…์€ residency ๋กœ ๋ฏธ๊ธฐ์žฌ) ยท clawd-on-desk ยท gstack. **Dominance โ€” ยงGate consequence ๋ฅผ ๋ฉด์ œ ์—†์ด ๊ทธ๋Œ€๋กœ ๋งŒ์กฑํ•œ๋‹ค.** ๊ฒฝ์Ÿ์ž = *๊ทธ ํ•˜๋„ค์Šค ์ž์‹ ์˜ ๊ฐœ๋ฐœ ๊ณผ์ •*, ๊ฒฐ๊ณผ = ๊ทธ ๊ณผ์ •์ด ๋†“์นœ ๊ฒƒ์„ ๋ถ€์ŠคํŒ…์ด ์žก์•˜๋‹ค: โ‘ด **gstack**(์™ธ๋ถ€ยท์šด์˜์ž ํ†ต์ œ ๋ฐ–) โ€” ์ด์Šˆ #1890 ์„ ์™ธ๋ถ€์ธ ์ž๊ฒฉ์œผ๋กœ ์ œ๊ธฐ, ๊ทธ ๋ ˆํฌ ์˜ค๋„ˆ๊ฐ€ ์ˆ˜์ •ํ•˜๊ณ  **ํšŒ๊ท€ ํ…Œ์ŠคํŠธ `test/claude-provider-keychain.test.ts` ๋กœ ๋ชป ๋ฐ•์•„ ๋ฆด๋ฆฌ์Šค์— ์‹ค์—ˆ๋‹ค**(2026-08-15). ์ฑ„ํƒ ํŒ์ •์ด **์šฐ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ทธ์ชฝ ๋ฉ”์ธํ…Œ์ด๋„ˆ**๋ผ ์ž๊ธฐ์ฑ„์ ์ด ์•„๋‹ˆ๋‹ค. โ‘ต **pmh**(2026-08-16 ์‹ค์ธก) โ€” ์ด์‹๋œ ์ž์‚ฐ์ด ๋Œ€์ƒ ํ™˜๊ฒฝ์—์„œ **๊ฒŒ์ดํŠธ๊ฐ€ ์ฃฝ์€ ์ฑ„** ์žˆ์—ˆ๊ณ  selfcheck 35 FAIL ์ด CI ๋ถ€์žฌ๋กœ ๋ช‡ ๋‹ฌ๊ฐ„ ์•ˆ ๋ณด์˜€๋‹ค; ๋ถ€์ŠคํŒ… ๊ฒฝ๋กœ๊ฐ€ ๊ทธ๊ฑธ ๋“œ๋Ÿฌ๋‚ด๊ณ  31/31ยท35โ†’2 ๋กœ ๋‹ซ์•˜๋‹ค. โ‘ ์ด ๋ฐ›์€ dominance ๋ฉด์ œ๋Š” **์ด ํ–‰์— ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค** โ€” โ‘ ์€ ์‚ฐ์ถœ์ด ยซ์•ˆ ์ง€์–ด๋„ ๋๋‹คยป๋ผ ๊ฒจ๋ƒฅ์ด ํ‹€๋ ธ๋˜ ๊ฒฝ์šฐ๊ณ , ๋ถ€์Šคํ„ฐ์˜ ์‚ฐ์ถœ์€ ยซ์ƒ๋Œ€๊ฐ€ ๋ชป ์žก๋˜ ๊ฑธ ์žก์•˜๋‹คยป๋ผ ์ด ์ ˆ์˜ ์ •์˜์— ๊ทธ๋Œ€๋กœ ๋งž๋Š”๋‹ค. ๐ŸŸฅ **๋ช…์‹œ ์ž”์—ฌ โ€” ์ดˆ๋ก ํ–‰์˜ ์ž”์—ฌ์ด์ง€ ๋ณด๋ฅ˜ ์‚ฌ์œ ๊ฐ€ ์•„๋‹ˆ๋‹ค**(โ‘ ์ด ยซ(d) ์•ˆ ๋‹ซํž˜ยป์„ ์•ˆ๊ณ  ๐ŸŸข์ธ ๊ฒƒ๊ณผ ๊ฐ™์€ ์ฒ˜๋ฆฌ): **๋ถ€์ŠคํŒ…์ด ์ด์‹ํ•œ ์ž์‚ฐ์ด ๋Œ€์ƒ ํ™˜๊ฒฝ์—์„œ ์‹ค์ œ๋กœ ๋ฐœํ™”ํ•˜๋Š”์ง€ ์žฌ๋Š” ๊ณ„๊ธฐ๊ฐ€ ์—†์—ˆ๋‹ค.** 2026-08-16 pmh ์‹ค์ธก์ด ๊ทธ ๋Œ€๊ฐ€๋‹ค โ€” ํ•œ ์ค„(`set -euo pipefail` ์•„๋ž˜ `package.json` ์ฝ๋Š” ํ• ๋‹น๋ฌธ)์ด ๊ฒŒ์ดํŠธ๋ฅผ ์ฆ‰์‚ฌ์‹œ์ผฐ๊ณ , 30๋ ˆ์ธ ํšŒ๊ท€ ์Šค์œ„ํŠธ๊ฐ€ ๊ทธ๊ฑธ 30๋ฒˆ ๋ณด๊ณ ํ•˜๋Š”๋ฐ **์•„๋ฌด๋„ ์•ˆ ๋ดค๋‹ค**(๊ทธ ๋ ˆํฌ์— CI ๊ฐ€ ์—†์—ˆ์œผ๋ฏ€๋กœ). ์Šน๊ธ‰์ด ์•„๋‹ˆ๋ผ **์ด ํ–‰์˜ ์ฒซ ์Šน๊ธ‰ ๊ธฐ์ค€**์ด ๊ฑฐ๊ธฐ์„œ ๋‚˜์˜จ๋‹ค(์•„๋ž˜). โš ๏ธ n ์€ ์„ธ์ง€ ์•Š๋Š”๋‹ค โ€” ์‹ค์  ์—ด๊ฑฐ๋Š” ์šด์˜์ž ์ฆ์–ธ + ์˜ค๋Š˜ ์‹ค์ธก 2๊ฑด์ด๊ณ , ์กฐ์ง ํ™˜๊ฒฝ 2๊ฑด์€ ์ด ํŒŒ์ผ์—์„œ ๊ฒ€์ฆ ๋ถˆ๊ฐ€(residency)์ด๋ฏ€๋กœ **์ฆ์–ธ์œผ๋กœ ํ‘œ๊ธฐํ•˜๊ณ  ์ธก์ •์œผ๋กœ ์„ธ์ง€ ์•Š๋Š”๋‹ค** |
287
333
  | โ‘ข | ๊ฑฐ๋ฒ„๋„Œ์Šค ๊ฒŒ์ดํŠธ (governance) | ship-gate | ๐ŸŸข GREEN | pre-commit/pre-push physically block; moat measured 3โ€“4 family blind (HITL 8/8 ABSENT); cross-family caught a real companion-store-name leak 2026-07-14 (fail-closed) |
288
334
  | โ‘ค | ์ฆํญ์ž (amplifier) | judgment-circuit | ๐ŸŸข GREEN | short-intentโ†’literature-groundingโ†’ultimate-doc real instances; rules-diet โˆ’18.2k measured; intent-routing probe 94% (below) |
289
- | โ‘ฃ | ํ”„๋Ÿฐํ‹ฐ์–ดโ†’์กฐ์ง ์ „ํŒŒ (**๐Ÿ”ต RC, 2026-08-09**) | external-grounding | ๐Ÿ”ต RC | frontier-digest launchd auto + AX submission docs both real, but digestโ†’org never closed as ONE pipeline. **2026-08-09**: the missing link was built โ€” `scripts/digest_landing_check.sh` extracts the digest's candidate table into probes and reuses the existing landing checker (no second verifier). Self-test 8 lanes green. **๐Ÿ”ต RC (2026-08-09)**: the mtime defect that initially held it back is closed โ€” the since-filter now splits two axes (git-tracked โ†’ commit time via `git log --since`; gitignored `tracks/**` โ†’ mtime, the only evidence that axis has; dirty-tracked โ†’ `UNMEASURED`), and **two lanes pin that split**: a file with only a fresh mtime is *not* counted, and a file with only a fresh commit *is* counted even when its mtime is stale. The second lane matters โ€” without it the fix degenerates into "discard all tracked files so only negatives pass" (named by the cross-family reviewer). Self-test **10 lanes** green. **What remains is a named residual, not a calibration gap**: `file-change โ‰  token-introduction` โ€” a file committed after the digest may carry the token from before (closing it needs token-level diff, which does not fit the checker's interface). The instrument therefore prints, and this row states, that it is a **screener, not an adjudicator**: hits must be opened. Four real runs, four hand-verifications, four defects found |
335
+ | โ‘ฃ | ํ”„๋Ÿฐํ‹ฐ์–ด ๋‹ต์Šต (**์˜๋„ ๊ธฐ๋ฐ˜** โ€” ๐Ÿ”ต RC, ์žฌ์ •์˜ 2026-08-21) | external-grounding | ๐Ÿ”ต RC | ๐ŸŸฅ **์ด ์ •์ฒด์„ฑ์€ ยซํŒŒ์ดํ”„๋ผ์ธยป์ด ์•„๋‹ˆ๋ผ ยซ๋ฃจํ”„ยป๋‹ค** (์šด์˜์ž ์žฌ์ •์˜ 2026-08-21): **ํŠธ๋ฆฌ๊ฑฐ** = ์šด์˜์ž๊ฐ€ ๋‚ด ํ–‰๋™ยทํŒ๋‹จ์— **์˜๋ฌธ์„ ํ‘œํ•œ ์ˆœ๊ฐ„**(*"๊ทธ๊ฑฐ ์•„๋‹ˆ์ง€ ์•Š์•„?"* ยท *"์ข€ ์ด์ƒํ•œ๋ฐ"* ยท *"์ด๊ฑฐ ์–ด๋•Œ?"* ยท *"์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•ด?"*) โ†’ **์ ˆ์ฐจ** = ์ˆ™๊ณ  โ†’ **๋‚ด๋ฉด ๋„๊ตฌ ๋จผ์ €(์ฑ…์žฅ)** โ†’ ์•ˆ ๋‹ซํžˆ๋ฉด **์„ธ๊ณ„(๋„์„œ๊ด€)** โ†’ **์ œ์•ˆ 2๋‹จ** = ยซ๋ฌผ์–ด๋ณผ๊นŒ?ยป ๊ทธ๋ฆฌ๊ณ  ยซ๋ฐ˜์˜ํ• ๊นŒ?ยป. **์™„์ฃผ ํŒ์ •** = *์‚ฌ๋žŒ์ด ์•ˆ ์‹œ์ผฐ๋Š”๋ฐ* ยซ๋ฌผ์–ด๋ณผ๊นŒ?ยป๊ฐ€ ๋–ด๊ณ , ํšŒ์ˆ˜ํ•œ ๊ฒƒ์ด **์‹ค์ œ ๊ฐ•ํ™”๋กœ ์ด์–ด์กŒ๋‚˜**. ๐ŸŸฅ **`frontier-digest` ๋Š” ์ด ์ •์ฒด์„ฑ์ด ์•„๋‹ˆ๋‹ค** โ€” ๊ทธ๊ฑด launchd ๋กœ ๋„๋Š” **๊ธฐ๊ณ„ํ™”๋œ ์ผ์ƒ์ž‘์—…**์ด๊ณ , ์ด ํ–‰์ด ๊ทธ๋™์•ˆ ๊ทธ๊ฒƒ์„ ์žฌ๊ณ  ์žˆ์—ˆ๋‹ค(๋ฒ”์œ„ ์˜ค์กฐ์ค€). ์•„๋ž˜ ยงdigest-routine ์œผ๋กœ ์ด๊ด€. **2026-08-21 ์‹ค์ธก โ€” 0/4**: ๊ทธ๋‚  ์šด์˜์ž ์˜๋ฌธ 5๊ฑด ์ค‘ 4๊ฑด(*๋ด‰์ธ ๊ฐœ๋ด‰* ยท *๋ฐœํ™”์†๋„ ์ˆซ์ž* ยท *์˜๋„ ์˜ค๋…* ยท *์ž‘์—… ๋ฒ”์œ„*)์—์„œ ์„ธ์…˜์€ **์ „๋ถ€ ๋‚ด๋ถ€ ํ™•์ธ์œผ๋กœ ๋‹ซ์•˜๊ณ  ์™ธ๋ถ€ ์กฐํšŒ 0ํšŒ**, ๋‚˜๋จธ์ง€ 1๊ฑด์€ *"์„ธ๊ณ„์— ๋ฌผ์–ด๋ณด์•˜๋‚˜"* ๋ผ๋Š” **๋ช…์‹œ ๋ช…๋ น**์ด๋ผ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์ง€์‹œ์˜€๋‹ค. ๊ทธ 1ํšŒ๊ฐ€ ๊ณง๋ฐ”๋กœ ์„ ํ–‰์—ฐ๊ตฌ(`arXiv:2507.23158`, ๊ฐ™์€ ๊ณผ์ œ์˜ ๋ฒค์น˜๋งˆํฌ P61/R36)๋ฅผ ๋ƒˆ๋‹ค โ€” **๋Šฅ๋ ฅ์ด ์•„๋‹ˆ๋ผ ๊ฒฉ๋ฐœ์ด ๋นˆ ์ž๋ฆฌ**์ž„์„ ๊ฐ™์€ ๋‚  ์–‘์ชฝ์œผ๋กœ ๋ณด์—ฌ์ค€๋‹ค. **๊ฒฉ๋ฐœ ํ‘œ๋ฉด์€ ๋‘˜์ด๊ณ  ์ƒํƒœ๊ฐ€ ๋‹ค๋ฅด๋‹ค**: โ“ **๋นŒ๋“œ ์‹œ์ **(์ƒˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ง“๊ธฐ ์ง์ „) โ€” ๋ฌผ๊ฑด์€ ์žˆ๋‹ค(`feat/prior-art-prompt-t2`, ใ€Œ์ฑ…์žฅ ๋จผ์ €, ์—†์œผ๋ฉด ๋„์„œ๊ด€ใ€) ๊ทธ๋Ÿฌ๋‚˜ **์–ด๋А settings ์—๋„ ๋ฏธ๋“ฑ๋ก**์ด๊ณ , ๋“ฑ๋กํ•ด๋„ `matcher=Write` ๋ผ **auto-mode ์„ธ์…˜์ด heredoc ์œผ๋กœ ํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ํ•œ ๊ตฌ์กฐ์ ์œผ๋กœ ์šฐํšŒ๋œ๋‹ค**(2026-08-21 ์ธก์ •, ์ปจํŠธ๋กค ๋™๋ฐ˜). โ“‘ **๋Œ€ํ™” ์‹œ์ **(์˜๋ฌธ ๋ฐœํ™”) โ€” **๊ธฐ๊ณ„ ์—†์Œ**. ๐ŸŸฅ **๊ฒฝ๊ณ„**: ยซ์ด ์˜๋ฌธ์ด ์™ธ๋ถ€๋ฅผ ์š”๊ตฌํ•˜๋‚˜ยป๋Š” **ํŒ๋‹จ์ด์ง€ ์ฑ„๋„์ด ์•„๋‹ˆ๋‹ค**. ํ›…์ด ํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€๋Š” ยซ์™ธ๋ถ€ ๊ณ ์œ ๋ช…์‚ฌ๊ฐ€ ์ œ์•ˆ/๋ฌผ์Œ ํ˜•ํƒœ๋กœ ๋“ค์–ด์™”๋‹คยป๋ฅผ surface ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€๊ณ , ๋‚ก์•˜๋Š”์ง€๋Š” ์‚ฌ๋žŒ/์„ธ์…˜์ด ์ •ํ•œ๋‹ค โ€” ์ด๊ฑธ ๊ธฐ๊ณ„์— ๋„˜๊ธฐ๋ฉด ยงMechanization Boundary ๊ฐ€ ๊ธˆํ•˜๋Š” ยซ๊ฒฐ๋ก ์„ ๋‹จ์–ธํ•˜๋Š” ์ฒดํฌยป๊ฐ€ ๋œ๋‹ค |
290
336
  | โ‘  | ํ•˜๋„ค์Šค ํด๋Ÿฌ์Šคํ„ฐ (**๐ŸŸข 2026-08-16 โ€” ๊ธฐ์ค€์ด ๋ฐ”๋€Œ์—ˆ๋‹ค, ์•„๋ž˜ ยงโ‘ -2026-08-16 ๋ฅผ ๋จผ์ € ์ฝ์–ด๋ผ**) | context-continuity | ๐ŸŸข | routing already ran for real (17 nodes, sidecar-orchestrator, Skill Bus). **The relay half is now built rather than specified**: `capability_composition_contract.md` (2026-08-02) was a complete spec with **zero implementing code** โ€” the โ‘  blocker was missing wiring, not missing design ([[feedback_built_but_not_wired]]). `scripts/relay_channel.sh` executes it (strictest-wins merge ยท typed invocation ยท checks 1/2/3 ยท short-circuit ยท causal binding), `scripts/test_relay_channel_lanes.sh` carries **64 lanes, BLOCK/PASS symmetric**, and three arms ran across **two real field harnesses** (pmh-dev ยท qasp-dev) on FH's own assets. โญ **The measured result is the divergence arm, and its mechanism is not what the first draft of this row said.** On `templates/.git-hooks`, `qasp` alone returns exit 0 โ€” a single-node pass would have shipped it โ€” and the composition returns `BLOCKED` because `pmh` returns `FINDINGS`. But `qasp`'s exit 0 is `degrade-scan: no scannable (py/sh) target files`: **zero files were scanned.** The qasp copy predates pmh's 2026-07-28 shebang pass, so extension-less hook files are invisible to it, and its exit 0 means *no target*, not *clean*. So the composition did not catch a substantive disagreement between two harnesses โ€” it caught **a single node rendering an unmeasured surface as a pass**, which is `[[feedback_not_found_is_not_zero_family]]`, and structurally the spec's own ยงโ“‘.4 B1 ("the exit 0 that means I never started"). That is a *stronger* result than the first framing and a narrower one: it demonstrates the union catching a blind spot, not decorrelated judgment. **Correction also to the order claim**: both orders return `rc=2`, but in the pmh-first order the chain short-circuits at node 1 and qasp never runs โ€” only the qasp-first order actually exercises the union. Non-decorative: reverting each wiring line reddens lanes and no reversion passes silently. **Why this is RC and not ๐ŸŸข** โ€” *updated 2026-08-11; (b) and (c) moved, (a) did not, and a fourth appeared*: (a) the row's *other* half, external-harness recommend, is still parked โ€” **unchanged, and it is a build, not a check**; (b) ~~`scripts/capability_registry_check.sh` does not exist~~ โ†’ **built 2026-08-11** (M1โ€“M5 + the ranโ‰ did-not-run clause, M4 pair executed, 7 self-test lanes BLOCK/PASS symmetric); (d) **NEW, and it cuts against the row**: a capability declaring `writes: read-only` passed all of M1โ€“M5 and its entry point then `rm -rf`'d this repo's `scripts/`. The registration bar measures *form* and *known-pair separation*, never *whether the declaration is true* โ€” so the machinery this row now points at carries a demonstrated structural hole (`capability_composition_contract.md ยงSalience`). A checker whose green can precede a destructive act is not yet a green identity; (c) ~~the two nodes are copies of one scanner at different staleness~~ โ†’ **superseded 2026-08-11, but only partly**: a run now exists across two *genuinely different* capabilities (a leak lens โˆช a verdict-direction lens โ€” different enums, different defect classes, each blocking on its own finding), and the clean arm exercised the union end-to-end. โš ๏ธ **That satisfies the letter of the old (c) and not the identity's spirit: both new nodes live inside FH.** This identity was then named *๋ฉ€ํ‹ฐํ•˜๋„ค์Šค ํด๋Ÿฌ์Šคํ„ฐ* (shortened to *ํ•˜๋„ค์Šค ํด๋Ÿฌ์Šคํ„ฐ* 2026-08-16); the only run that actually crossed harness boundaries is still the older pmh-dev/qasp-dev one, whose nodes were<a name="c-orig"></a> **copies of one scanner at different staleness** (all three copies โ€” pmh 237 ln, qasp 121 ln, FH 269 ln โ€” share a byte-identical 12-line header; the clean arm's two `out_sha` were identical), so the run proves the channel turns and that composing unequal copies has value, not that two independent judgments were decorrelated. Artifact: `tracks/_meta/identity_audit_2026-08-09_relay_channel.md` <br><br>**<a name="id1-20260816"></a>ยงโ‘ -2026-08-16 โ€” ์ด ํ–‰์ด ๐ŸŸข ์ด ๋œ ์ด์œ ๋Š” ยซ๋” ์ž˜ํ•ด์„œยป ๊ฐ€ ์•„๋‹ˆ๋ผ ยซ๋‹ค๋ฅธ ๊ฒƒ์„ ์žฌ์„œยป ๋‹ค. ๊ทธ ์‚ฌ์‹ค์„ ๋จผ์ € ์ ๋Š”๋‹ค.** ๐ŸŸฅ **์˜› ๋ฐ”๋กœ ์žฌ๋ฉด ์ด ํ–‰์€ ์˜ค๋Š˜๋„ ๐Ÿ”ต ๋‹ค.** ยงGate consequence ์˜ dominance ์ ˆ์„ **๋‘ ๋ฒˆ** ์Ÿ€๊ณ  **๋‘˜ ๋‹ค ๋ฏธ์„ฑ๋ฆฝ**์ด๋‹ค โ€” 1์ฐจ(๊ธฐ๊ณ„ ์Šค์บ” vs recall, `tracks/_meta/dominance_2026-08-16_cluster_scan_vs_recall_RESULT.md`)๋Š” **์ƒ๋ณด**: ๊ธฐ๊ณ„๋Š” ์‹คํ–‰ ์ถ•(M4ยทM6)์„ ๋…์ ํ•˜๊ณ  recall ์€ ๊ตฌ์กฐยท์ •ํ•ฉ ์ถ•์„ ๋…์ ํ•œ๋‹ค โ€” ์„œ์—ด์ด ์•„๋‹ˆ๋ผ ์ง๊ต๋‹ค. 2์ฐจ(**๋ณต์‚ฌ vs ํ˜ธ์ถœ**, survives ๋‹ค๋ฆฌ, `tracks/_meta/dominance_2026-08-16b_copy_vs_call_RESULT.md`)๋Š” **safety ๋™๋ฅ **: ๊ตฌ enum ์‚ฌ๋ณธ์œผ๋กœ `exit 4` ๋ฅผ ๋ถ€๋ฅด๋ฉด relay ๊ฐ€ enum ๋ฐ– ๊ฐ’์„ `HARNESS_ERROR` ๋กœ ์ ‘์–ด `BLOCKED`(rc=2), ์†Œ์œ  ์„ ์–ธ์€ `OUT_OF_SCOPE` ๋กœ `BLOCKED`(rc=2) โ€” **๋‘˜ ๋‹ค ๋ง‰๋Š”๋‹ค.** ใ€Œ๋ณต์‚ฌ๋Š” ์กฐ์šฉํžˆ ์ฉ๋Š”๋‹คใ€๋Š” ์˜ˆ์ธก์ด ๋ฐ˜์ฆ๋๊ณ , ์•ˆ ์ฉ๊ฒŒ ๋ง‰์•„์ฃผ๋Š” ๊ฒƒ์€ ์ด ๋ ˆํฌ๊ฐ€ ์ด๋ฏธ ๊ฐ€์ง„ ยซ๋ฏธ์ธก์ •โ‰ PASSยป ๊ทœ์œจ์˜ ๊ธฐ๊ณ„ ํŒ๋ณธ์ด์—ˆ๋‹ค. ๋‘ ์ธก์ • ๋‹ค **์‚ฌ์ „๋“ฑ๋ก ๋ด‰์ธ ํ›„ ์‹คํ–‰**์ด๊ณ  ๋ฐ˜์ฆ ์กฐ๊ฑด์„ ๊ฒฐ๊ณผ ๋’ค์— ์˜ฎ๊ธฐ์ง€ ์•Š์•˜๋‹ค. โ‡’ **์šด์˜์ž ๊ฒฐ์ •(2026-08-16)**: โ‘ ์˜ ๐ŸŸข ๊ธฐ์ค€์„ dominance ์—์„œ **โ“โ“‘โ“’ 3๊ธฐ์ค€์œผ๋กœ ๋Œ€์ฒด**ํ•œ๋‹ค. ์šด์˜์ž ์›๋ฌธ โ€” *"๊ทธ๋“ค์˜ ๋Šฅ๋ ฅ์„ ํ™œ์šฉํ•˜๊ณ  **๋‚ด ์ชฝ์—์„œ ๋” ์ง“์ง€ ์•Š๊ธฐ ์œ„ํ•œ(์žฌ๋ฐœ๋ช…์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•œ)** ๋ชฉ์ ์ด ๋ฉ€ํ‹ฐํ•˜๋„ค์Šค ํด๋Ÿฌ์Šคํ„ฐ"* ยท *"FH ์˜ **๋พฐ์กฑํ•œ ๋ถ€๋ถ„์„ ์œ ์ง€ํ•˜๋ฉด์„œ** ๋Šฅ๋ ฅ์„ ์ตœ๋Œ€ํ•œ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•"* ยท *"์˜ค๋ž˜์˜ค๋ž˜ ์ง„ํ™”์— ๋”ฐ๋ผ **์‚ด์•„๋‚จ์œผ๋ฉด์„œ ์–‡์•„์ง€๋ฉด์„œ๋„** ๊ฐ€์น˜๋ฅผ ๋ฐœํœ˜ โ€ฆ LLM ์˜ ์ง„ํ™” ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ์œ ์ˆ˜์˜ ํ•˜๋„ค์Šค๋“ค์˜ ์ง„ํ™”, **๊ทธ ๋•์„ ๋ฐ›๋Š” ๊ฒƒ์ด ๋ชฉ์ **"* (์ „๋ฌธ + ๋ฐฉ๋ฒ•๋ก : `tracks/_meta/doctrine_2026-08-16_identity1_redefinition_and_method.md`). โ‘ ์˜ ์‚ฐ์ถœ์€ ยซ๋” ๋งŽ์ด ์žก์•˜๋‹คยป๊ฐ€ ์•„๋‹ˆ๋ผ **ยซ์•ˆ ์ง€์–ด๋„ ๋๋‹คยป** ๋ผ์„œ dominance ๋Š” ๊ฒจ๋ƒฅ์ด ํ‹€๋ฆฐ ๊ณ„๊ธฐ๋‹ค. โš ๏ธ **์ด ๋Œ€์ฒด๋Š” โ‘ ์—๋งŒ ์ ์šฉ๋œ๋‹ค** โ€” ๋‹ค๋ฅธ ํ–‰์˜ dominance ์š”๊ตฌ๋Š” ๊ทธ๋Œ€๋กœ๋‹ค. **โ“ ์žฌ์‚ฌ์šฉ์ด ์‹ค์žฌํ•˜๊ณ  ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ๊ฐ€(๋ณต๋ถ™ ์•„๋‹˜)** โ†’ โœ… **์ธก์ •**: `pmh-dev:merge-noop-check` ๊ฐ€ **pmh ์ž๊ธฐ ๋ ˆํฌ์—์„œ** ์„ ์–ธ๋˜๊ณ (`.claude/capabilities/merge-noop-check.cap`, `requires_cwd: SELF`, known-pair ๋Š” ๊ทธ ๋ ˆํฌ์˜ ์‹ค์ œ ์ปค๋ฐ‹ ๋‘ ๊ฐœ), FH ๊ฐ€ `cluster_capability_scan.sh discover` ๋กœ **๋ฐœ๊ฒฌ** โ†’ `capability_registry_check.sh` M1โ€“M6 `REGISTRABLE` โ†’ `relay_channel.sh run` ์œผ๋กœ **์‹ค์ œ ํ˜ธ์ถœ**ํ•œ๋‹ค. ์–‘ยท์Œ arm ์ด ๊ฐˆ๋ฆฐ๋‹ค โ€” NO-OP ์ž…๋ ฅ์€ `FH_NODE1_VERDICT: NO_OP` ๋กœ node1 ์—์„œ BLOCKED, ์ฐจ์ด ์žˆ๋Š” ์ž…๋ ฅ์€ node1 ํ†ต๊ณผ(`HAS_DIFF`) ํ›„ node2(`forge-harness:degrade-direction-scan`)๊ฐ€ `FINDINGS` ๋กœ BLOCKED. **๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ์ด์œ ๋กœ** ๋ง‰ํžˆ๋ฏ€๋กœ ใ€Œ๋Š˜ ๋ง‰๋Š” ๊ณ„๊ธฐใ€์™€ ๊ตฌ๋ถ„๋œ๋‹ค. **โ“‘ FH ๊ฐ€ ์•ˆ ์ปค์กŒ๋Š”๊ฐ€ โ€” ยซ์•ˆ ํ•œ ์ผยป์„ ์ด๋ฆ„์œผ๋กœ ๋Œˆ ์ˆ˜ ์žˆ๋Š”๊ฐ€** โ†’ โœ…: `merge_noop_check.sh`(ํŠธ๋ฆฌํ•ด์‹œ + ์กฐ์ƒ๊ด€๊ณ„ ํŒ์ •)๋ฅผ FH ๋Š” ์ง“์ง€ ์•Š์•˜๊ณ , FH ์ž๊ธฐ ์ •๋ณธ `knowledge/shared/rules/multi_session_close_protocol.md ยง1-b` ๊ฐ€ **๊ทธ ํŒŒ์ผ์„ ์ด๋ฆ„์œผ๋กœ ์ง€๋ชฉํ•˜๋ฉฐ ยซ๊ฐ€์ ธ์˜ค๋ฉด ๋œ๋‹คยป** ๊ณ  ์ด๋ฏธ ์ ์–ด๋‘” ์ž๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ๋‹ค. ์˜ค๋Š˜ FH ๊ฐ€ ์ƒˆ๋กœ ์ง€์€ ๊ฒƒ์€ **์ฑ„๋„**(`relay_channel.sh --cap-args`, ๋…ธ๋“œ๋ณ„ ํ˜ธ์ถœ ์ธ์ž)์ด์ง€ ํŒ๋‹จ์ด ์•„๋‹ˆ๋‹ค โ€” ๊ทธ ์ฑ„๋„์ด ์—†๋Š” ๋™์•ˆ ํ˜ธ์ถœ ์‹œ์  ์ธ์ž๋ฅผ ์š”๊ตฌํ•˜๋Š” ๋Šฅ๋ ฅ์€ **ํ•ญ์ƒ `ARGS โ†’ HARNESS_ERROR โ†’ BLOCKED`** ์˜€๋‹ค(๋ฐฉํ–ฅ์€ fail-closed ๋กœ ์˜ณ์•˜์œผ๋‚˜ **์‹ ํ˜ธ๊ฐ€ 0**, ์ฆ‰ ยซํ˜ธ์ถœ ๊ฐ€๋Šฅยป ์„ ๊ตฌ์กฐ์ ์œผ๋กœ ๋งŒ์กฑ์‹œํ‚ฌ ์ˆ˜ ์—†์—ˆ๋‹ค). **โ“’ ๋พฐ์กฑํ•จ์ด ๋ณด์กด๋˜๋Š”๊ฐ€** โ†’ โœ… **์ธก์ •**: ํ•ฉ์„ฑ์ด `FH_MERGED_residency: company`(๋‘˜ ์ค‘ ์—„๊ฒฉํ•œ ์ชฝ) ยท `verdict_binding` ์€ 4๊ฐ’ ํ•ฉ์ง‘ํ•ฉ ยท ์ƒ๋ฅ˜๊ฐ€ ๋ง‰ํžˆ๋ฉด ํ•˜๋ฅ˜ ๋…ธ๋“œ ๋ฏธ์‹คํ–‰. ๐ŸŸฅ **๋ช…์‹œ ์ž”์—ฌ โ€” ์ถ•์†Œํ•˜์ง€ ์•Š๋Š”๋‹ค.** โ‘ด **๋‘ ์ธก๋„๋ฅผ ๊ฐˆ๋ผ ์ ๋Š”๋‹ค.** **ใ‰ฎ ์„ ์–ธ ๋ณด์œ  ํ•˜๋„ค์Šค = 2**(FH ยท pmh) โ€” *๋Šฅ๋ ฅ(capacity)* ์ธก๋„. **ใ‰ฏ ์‹ค์ œ๋กœ ํ•จ๊ป˜ ๋ˆ ํ•˜๋„ค์Šค = 5** โ€” *์‚ฌ๊ฑด(event)* ์ธก๋„์ด๊ณ  ์ •์ฒด์„ฑ์ด ๋ฌป๋Š” ์ชฝ์ด๋‹ค. ๐ŸŸฅ **๋‹จ์ผ ํ•ฉ์„ฑ ํ•œ ๋ฒˆ์— 5๊ฐœ๊ฐ€ ๋Œ์•˜๋‹ค(์‹ค์ธก, ์„ธ์…˜ ๋ง)**: `relay_channel.sh run` 4๋…ธ๋“œ ์ฒด์ธ์ด `gstack`(์–ด๋Œ‘ํ„ฐ) โ†’ `pmh-dev`(์†Œ์œ  ์„ ์–ธ) โ†’ `mate-dev`(์–ด๋Œ‘ํ„ฐ) โ†’ `qasp-dev`(์–ด๋Œ‘ํ„ฐ) ๋ฅผ ํƒœ์šฐ๊ณ  FH ๊ฐ€ ๊ทธ ์‚ฌ์ด์—์„œ ๋ณ‘ํ•ฉํ–ˆ๋‹ค โ€” ์ฒญ์ • arm ์€ **๋„ค ๋…ธ๋“œ ์ „๋ถ€ ์‹คํ–‰ ํ›„ `FH_RELAY_VERDICT: PASS`(rc=0)**, ๊ต๋ž€ arm ์€ node3 `FAIL` ์—์„œ `BLOCKED` + ํ•˜๋ฅ˜ ๋ฏธ์‹คํ–‰(rc=2). **๋Š˜ ํ†ต๊ณผํ•˜์ง€๋„ ๋Š˜ ๋ง‰์ง€๋„ ์•Š๋Š”๋‹ค.** ๋ณ‘ํ•ฉ ๊ฒฐ๊ณผ: `residency: company`(๋‹ค์„ฏ ์ค‘ ์ตœ์—„๊ฒฉ) ยท `verdict_binding` **9๊ฐ’ ํ•ฉ์ง‘ํ•ฉ**. โš ๏ธ ใ‰ฎ ๊ฐ€ ์—ฌ์ „ํžˆ 2์ธ ๊ฒƒ์€ ๋‚˜๋จธ์ง€ ์…‹์ด **์–ด๋Œ‘ํ„ฐ**(FH ์†Œ์œ ยทFH ์œ ์ง€)์ด๊ธฐ ๋•Œ๋ฌธ์ด๊ณ , ๊ทธ๊ฒŒ ๊ฒฐํ•จ์ด ์•„๋‹ˆ๋ผ ์šด์˜์ž ๊ฒฐ์ •์œผ๋กœ ์ •ํ•ด์ง„ **๊ธฐ๋ณธ ๊ฒฝ๋กœ**๋‹ค(ยง์„ ์–ธ ์œ„์น˜). ใ‰ฎ ๊ฐ€ ์ปค์ง€๋Š” ๊ฒƒ์€ ๋‚จ์ด ยซ๋…ธ์ถœํ•œ๋‹คยป ๊ณ  ์ž๊ธฐ ์ •๋ณธ์— ์ ์—ˆ์„ ๋•Œ๋ฟ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ใ‰ฎ ๊ฐ€ ์—ฌ์ „ํžˆ ์ž‘๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋‚จ๋Š”๋‹ค: โš ๏ธ **๋ถ€ํ’€๋ฆฌ์ง€ ์•Š๋Š”๋‹ค**: clawd-on-desk ๋Š” ํ•˜๋„ค์Šค ์ž์‚ฐ์ด ์—†๋Š” **๋Œ€์ƒ ๋ ˆํฌ**๋ผ PR #888 ์€ ๊ธฐ์—ฌ์˜€์ง€ ํ•˜๋„ค์Šค ์ฃผํ–‰์ด ์•„๋‹ˆ๋‹ค โ€” ์„ธ์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ใ‰ฎ ๊ฐ€ ์—ฌ์ „ํžˆ ์ž‘๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋‚จ๋Š”๋‹ค: qasp ๋Š” **๊ทธ ํ•˜๋„ค์Šค ์ž์‹ ์˜ ์ž…์žฅ๋ฆฌ๋ทฐ๊ฐ€ REJECT** ํ–ˆ๋‹ค โ€” ์ •๋ณธ ๊ทผ๊ฑฐ 0๊ฑด ยท ์†Œ๋น„์ž 0๊ณณ(์ฝ๋Š” ๊ฑด FH ๋ฟ) ยท `session.md:101` ใ€Œn=3 ์ „์—” ์ถ”์ƒํ™” ๊ธˆ์ง€ใ€ ์œ„๋ฐ˜ ยท **๊ทธ ์„ ์–ธ ๊ฒฝ๋กœ๊ฐ€ ๊ทธ ํ•˜๋„ค์Šค์˜ ์กฐ์ง ๋ฏธ๋Ÿฌ ๋Œ€์ƒ์—์„œ ์ œ์™ธ๋ผ ์žˆ์ง€ ์•Š๋‹ค**(์šด์˜์ž๊ฐ€ ์ด ๋ ˆํฌ์—์„œ ํ†ต์ œํ•˜์ง€ ์•Š๋Š” ๋ชฉ์ ์ง€๋กœ ๊ทธ๋Œ€๋กœ ๋ณต์ œ๋œ๋‹ค). ์šด์˜์ž ๊ฒฐ์ •(2026-08-16)์œผ๋กœ **๋ณด๋ฅ˜**์ด๋ฉฐ, ใ€Œ์ด ํ•˜๋„ค์Šค๋Š” ์™ธ๋ถ€ ํ•˜๋„ค์Šค์— ์ž๊ธฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋…ธ์ถœํ•œ๋‹คใ€๋ฅผ **๊ทธ ํ•˜๋„ค์Šค ์ž์‹ ์˜ ์ •๋ณธ์— ์ ๋Š” ๊ฒƒ**์ด ์„ ํ–‰ ์กฐ๊ฑด์ด๋‹ค. ์„ ์–ธ ํŒŒ์ผ์ด ๋‚จ์˜ ๋ ˆํฌ์— **์žˆ๋‹ค**๋Š” ๊ฒƒ๊ณผ ๊ทธ ํ•˜๋„ค์Šค๊ฐ€ ๋…ธ์ถœ์„ **๊ฒฐ์ •ํ–ˆ๋‹ค**๋Š” ๊ฒƒ์€ ๋‹ค๋ฅธ ๋ช…์ œ๋‹ค. โ‘ต ๐ŸŸฅ **(d) ๋Š” ์•ˆ ๋‹ซํ˜”๋‹ค.** `.git/objects` ๋ฅผ ๊ฐ์‹œ๋ฉด์— ๋„ฃ์–ด ๊ฐ์ฒด ์“ฐ๊ธฐ ํ•œ ๋ถ€๋ฅ˜๋ฅผ ๋‹ซ์•˜๊ณ (probe L13 ํƒ์ง€ / L13b ๊ณผ์ฐจ๋‹จ ์ปจํŠธ๋กค / ๋˜๋Œ๋ฆผ ์‹œ ์ •ํ™•ํžˆ L13 ๋งŒ ์ ์ƒ‰), **๊ทธ๋Ÿฌ๋‚˜ M6 ๋Š” ์„ ์–ธ๋œ ์บ˜๋ฆฌ๋ธŒ๋ ˆ์ด์…˜ arm ๋งŒ ๊ด€์ธกํ•œ๋‹ค** โ€” ์‹ค์ฆ: `merge_noop_check.sh` ๋Š” **๋ถ„๊ธฐ ์ž…๋ ฅ์—์„œ git ๊ฐ์ฒด๋ฅผ ์“ฐ๋Š”๋ฐ**(๊ฒฉ๋ฆฌ ํด๋ก  ์‹ค์ธก: `.git/objects` ํŒŒ์ผ ์ˆ˜๊ฐ€ **+1**. โš ๏ธ ์ ˆ๋Œ€๊ฐ’์€ ํด๋ก  ์ƒํƒœ์— ์˜์กดํ•˜๋ฏ€๋กœ **๋ธํƒ€๋งŒ ์ธ์šฉํ•œ๋‹ค** โ€” ์ด์ „ ํŒ๋ณธ์ด ์ ์—ˆ๋˜ ์ ˆ๋Œ€ ์Œ์€ ์žฌํ˜„ ๋ถˆ๊ฐ€๋ผ ์ฒ ํšŒํ•œ๋‹ค) ์„ ์–ธ๋œ ๋‘ arm ์ด ๊ทธ ๊ฒฝ๋กœ๋ฅผ ์•ˆ ์ง€๋‚˜๋ฏ€๋กœ `writes: read-only` ๋กœ ๊ฑฐ์ง“ ์„ ์–ธํ•ด๋„ `REGISTRABLE` ์ด ๋‚œ๋‹ค(์‹ค์ธก ํ™•์ธ). ๊ฐ™์€ ๋‚  ์•„์นจ์— ๋‚˜์˜จ **ใ€Œ๊ฒ€์‚ฌ๊ธฐ์— enumโ†”๊ตฌํ˜„ ์ผ์น˜ ์ถ•์ด ์—†๋‹คใ€์™€ ๊ฐ™์€ ํ˜•ํƒœ**๋‹ค โ€” ๊ฐ™์€ stale ์„ ์–ธ์ด ์บ˜๋ฆฌ๋ธŒ๋ ˆ์ด์…˜ ์Œ์— ๋”ฐ๋ผ REJECTED ๋„ REGISTRABLE ๋„ ๋œ๋‹ค. ํ•œ ๋ฌธ์žฅ์œผ๋กœ: **๊ฒ€์‚ฌ๊ธฐ๋Š” ์„ ์–ธ์ด ์‹œํ‚ค๋Š” ๊ฒƒ๋งŒ ๋ณธ๋‹ค.** โ‘ถ ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ด ๐ŸŸข ์€ **ใ€Œํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ๋ˆ๋‹คใ€**์— ๋Œ€ํ•œ ๊ฒƒ์ด์ง€ **ใ€Œ๋“ฑ๋ก ๋ฐ”๊ฐ€ ์„ ์–ธ์˜ ์ง„์œ„๋ฅผ ๊ฒ€์ฆํ•œ๋‹คใ€**์— ๋Œ€ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ํ›„์ž๋Š” ์—ด๋ ค ์žˆ๊ณ , ์—ด๋ ค ์žˆ๋‹ค๊ณ  ์ ๋Š”๋‹ค. Artifact: `tracks/_meta/identity_audit_2026-08-16_cluster_green.md` <br><br>**<a name="id1-naming"></a>ยงโ‘ -naming (์šด์˜์ž ๊ฒฐ์ •, 2026-08-16) โ€” ์ด๋ฆ„์„ ์ค„์ด๊ณ , ๊ทธ ์•ˆ์˜ ํ•˜์ค‘ ๋ถ€ํ’ˆ์— ์ด๋ฆ„์„ ์ค€๋‹ค.** ใ€Œ๋ฉ€ํ‹ฐํ•˜๋„ค์Šค ํด๋Ÿฌ์Šคํ„ฐใ€ โ†’ **ใ€Œํ•˜๋„ค์Šค ํด๋Ÿฌ์Šคํ„ฐใ€**: ใ€Œ๋ฉ€ํ‹ฐใ€์™€ ใ€Œํด๋Ÿฌ์Šคํ„ฐใ€๊ฐ€ ๋‘˜ ๋‹ค ๋ณต์ˆ˜๋ฅผ ๋œปํ•ด **์ค‘๋ณต์ด์—ˆ๋‹ค**. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์•„๋ž˜์— **ํฌ๋กœ์Šคํ•˜๋„ค์Šค**๋ฅผ ๋‘”๋‹ค โ€” *"์„œ๋กœ๊ฐ„์˜ ๋Šฅ๋ ฅ์„ ๋ณด๊ฐ•ํ•˜๊ธฐ ์œ„ํ•จ์ด์•ผ. **์—†๋Š” ๊ฑธ ์“ฐ๊ธฐ ์œ„ํ•จ**์ด๊ณ , FH ์—์„œ **โ€˜์ง“์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒƒโ€™์„ ๋‹ค๋ฅธ ๋ ˆํฌ ๊ฐœ๋ฐœ์— ํ™œ์šฉ**ํ•˜๊ธฐ ์œ„ํ•จ์ด์ง€. ๋‹ค๋งŒ ๊ทธ ์™€์ค‘์— **FH ์—์„œ ์ง€์–ด์•ผ ํ•˜๋Š” ๊ฒŒ ๋ณด์ด๋ฉด ๊ฐœ์„ ํ•ด์„œ ๋‹ต์Šต**ํ•˜๋Š” ๊ฑฐ๊ณ ."*(์šด์˜์ž) โ‡’ **ํฌ๋กœ์Šคํ•˜๋„ค์Šค๋Š” ์–‘๋ฐฉํ–ฅ์ด๋‹ค**: **ํ™œ์šฉ**(๋‚จ์˜ ๋Šฅ๋ ฅ์„ ํ˜ธ์ถœํ•ด FH ๊ฐ€ ์•ˆ ์ง“๋Š”๋‹ค) **โˆช ํก์ˆ˜**(FH ๊ฐ€ ์ง€์–ด์•ผ ํ•  ๊ฒƒ์ด ๋ณด์ด๋ฉด ๊ฐœ์„ ํ•ด ๋“ค์—ฌ์˜จ๋‹ค). ์ข…์ „ ์ •์˜๋Š” ์•ž์˜ ์ ˆ๋ฐ˜๋ฟ์ด์—ˆ๋‹ค. ๐ŸŸฅ **๋‘˜์˜ ๊ด€๊ณ„๋Š” ํ•ฉ์ง‘ํ•ฉ์ด ์•„๋‹ˆ๋ผ ยซํฌํ•จ + ํ•˜์ค‘ยป์ด๋‹ค.** ์šด์˜์ž: *"ํ•˜๋„ค์Šค ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋Œ๋ ค๋ฉด ํฌ๋กœ์Šคํ•˜๋„ค์Šค๋Š” ํ•ญ์ƒ ์žˆ์–ด์•ผ ํ•˜๋‹ˆ๊นŒ."* โ‡’ **ํฌ๋กœ์Šคํ•˜๋„ค์Šค๋Š” ํ•˜๋„ค์Šค ํด๋Ÿฌ์Šคํ„ฐ์˜ ํ•„์š”์กฐ๊ฑด**์ด๊ณ , ๊ทธ๋ž˜์„œ ํŒ์ •์—์„œ ๋‹ค์Œ์ด ๋”ฐ๋ผ ๋‚˜์˜จ๋‹ค โ€” **โ“(ยซ์žฌ์‚ฌ์šฉ์ด ์‹ค์žฌํ•˜๊ณ  ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ๊ฐ€ยป)๊ฐ€ ๊ณง ํฌ๋กœ์Šคํ•˜๋„ค์Šค ์‹œํ—˜์ด๊ณ , ๊ทธ๊ฒŒ ์ด ์ •์ฒด์„ฑ์˜ ๊ฒฐ๋ฐ• ์ง€์ ์ด๋‹ค.** ๋…ธ๋“œ ์ˆ˜ n ์€ ํด๋Ÿฌ์Šคํ„ฐ์˜ **๋ฒ”์œ„**๋ฅผ ์žฌ์ง€ ยซ๋„๋Š”๊ฐ€ยป๋ฅผ ์žฌ์ง€ ์•Š๋Š”๋‹ค. (์ด ๊ตฌ๋ถ„์ด ์—†์–ด์„œ ์ด ํ–‰์˜ ์ž”์—ฌ โ‘ด์ด ยซn=1ยป์„ ๋งˆ์น˜ ๋ฏธ์„ฑ๋ฆฝ์ฒ˜๋Ÿผ ์ฝํžˆ๊ฒŒ ์ ํ˜€ ์žˆ์—ˆ๋‹ค โ€” n=1 ์—์„œ๋„ ๊ตํ™˜์€ ์‹ค์ œ๋กœ ์ผ์–ด๋‚ฌ๋‹ค. ๋‹ค๋งŒ **n ์„ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ ์˜ณ๊ณ , ๊ทธ๊ฑด ์„ ์–ธ์ด ์—†์–ด์„œ์ง€ ๊ธฐ์ œ๊ฐ€ ์—†์–ด์„œ๊ฐ€ ์•„๋‹ˆ๋‹ค**: ์‹ค์ธก 2026-08-16, ๋งคํ•‘๋œ ํ•˜๋„ค์Šค 12๊ฐœ ์ค‘ ์„ ์–ธ ๋ณด์œ  2๊ฐœ ยท ๋‚˜๋จธ์ง€ 10๊ฐœ๋Š” `.claude/capabilities` ๋””๋ ‰ํ† ๋ฆฌ ์ž์ฒด๊ฐ€ ์—†๋‹ค. ๋„๊ตฌ๋Š” ์žˆ๋‹ค โ€” gstack `bin/*`=69 ยท gbrain 50 ยท openhuman 43 ยท mate-dev 7 ยท qasp-dev 16.) ๐ŸŸฅ **ํฌ๋กœ์Šคํ•˜๋„ค์Šค๋Š” ๋‘ ํ˜•ํƒœ๋ฅผ ๊ฐ–๊ณ , ๋‘˜ ๋‹ค ยซ๊ฑด๋„œ๋‹คยป์— ๋“ ๋‹ค(์šด์˜์ž, 2026-08-16).** **๊ธฐ๊ณ„ ํ˜•ํƒœ** = ๋‚จ์˜ ๋Šฅ๋ ฅ์„ typed ์ฑ„๋„๋กœ ํ˜ธ์ถœํ•œ๋‹ค(`.cap` ์„ ์–ธ ํ•„์š”) ยท **ํŒ๋‹จ ํ˜•ํƒœ** = **๋‚จ์˜ ์ •๋ณธ์„ ๊ทผ๊ฑฐ๋กœ ์‹ฌ์‚ฌ๋ฐ›๋Š”๋‹ค**(์ž…์žฅ๋ฆฌ๋ทฐ โ€” ์„ ์–ธ ๋ถˆ์š”). ์šด์˜์ž: *"์ž…์žฅ๋ฆฌ๋ทฐ๋„ ํฌ๋กœ์Šค๊ฐ€ ์•„๋‹๊นŒ โ€ฆ ๊ฒฐ๊ตญ ๋„ˆ์™€ ๊ทธ์ชฝ ํ•˜๋„ค์Šค 2๊ฐœ๊ฐ€ ๋™์‹œ์— ๋„๋Š” ๊ฑฐ๋‹ˆ๊นŒ."* โ‡’ **ํŒ๋‹จ ํ˜•ํƒœ๋Š” ์„ ์–ธ ์—†์ด ์ง€๊ธˆ ๋‹น์žฅ ๋ชจ๋“  ํ•˜๋„ค์Šค์—์„œ ์„ฑ๋ฆฝํ•œ๋‹ค**, ๊ทธ๋ฆฌ๊ณ  **ํ•œ ๋ฒˆ์˜ ํฌ๋กœ์‹ฑ์ด ์ด๋ฏธ ํ•˜๋„ค์Šค 2๊ฐœ์˜ ๋™์‹œ ์ฃผํ–‰**์ด๋‹ค. *"ํฌ๋กœ์Šคํ•˜๋„ค์Šค๋Š” ๋…ธ๋“œ 1๊ฐœ๋ผ๋„ ๋ฐœํœ˜๋˜๋Š” ๊ฑฐ๊ณ  โ€ฆ ๊ทธ๊ฒŒ ๋Š˜์–ด๋‚˜๋ฉด ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋˜๋Š” ๊ฑฐ๊ณ ."* โ‡’ **ํฌ๋กœ์Šคํ•˜๋„ค์Šค = ์‚ฌ๊ฑด(๊ฑด๋„œ๋‹ค) ยท ํ•˜๋„ค์Šค ํด๋Ÿฌ์Šคํ„ฐ = ๊ทธ ์‚ฌ๊ฑด์˜ ๋ˆ„์ .** ๐ŸŸฅ **์ด ๋ฌธ์žฅ์ด ์•„๋ž˜ ์ž”์—ฌ โ‘ด์˜ ๊ณ„์ˆ˜ ์˜ค๋ฅ˜๋ฅผ ์žก๋Š”๋‹ค** โ€” ๋‚˜๋Š” ยซ์™ธ๋ถ€ **์„ ์–ธ** ์ˆ˜ยป๋ฅผ ์…Œ๋Š”๋ฐ ์ •์ฒด์„ฑ์ด ๋ฌป๋Š” ๊ฒƒ์€ ยซ**ํ•จ๊ป˜ ๋ˆ ํ•˜๋„ค์Šค** ์ˆ˜ยป๋‹ค. ๋‘ ์ธก๋„๋ฅผ ๊ฐˆ๋ผ ์ ๋Š”๋‹ค(๋‘˜ ๋‹ค ๋‚จ๊ธด๋‹ค, ์œ ๋ฆฌํ•œ ์ชฝ๋งŒ ๋‚จ๊ธฐ์ง€ ์•Š๋Š”๋‹ค). ๐ŸŸฅ **๋ช…์นญ ๊ฒฝ๊ณ„ โ€” ์•Œ๊ณ  ์“ด๋‹ค.** `cross-harness` ๋Š” ์ด ๋ ˆํฌ์—์„œ **์ด๋ฏธ ๋‹ค๋ฅธ ๋œป**์œผ๋กœ ์“ฐ์ธ๋‹ค: `CLAUDE.md ยงStandpoint axis` ยท `field_verdict_crossfamily_gate.md ยง7` ์˜ *"cross-harness-boundary change"* = **๋‹ค๋ฅธ ํ•˜๋„ค์Šค์˜ ๋™์ž‘ยท๊ฒŒ์ดํŠธ ๊ฒฐ๊ณผยท์ƒํ˜ธ์ž‘์šฉ ๊ณ„์•ฝ์„ ๋ฐ”๊พธ๋Š” diff**(๊ฒŒ์ดํŠธ ํŠธ๋ฆฌ๊ฑฐ ๋ฒ”์œ„). ์ •์ฒด์„ฑ ์ด๋ฆ„์ด ใ€Œํ•˜๋„ค์Šค ํด๋Ÿฌ์Šคํ„ฐใ€๋กœ ๋‚จ์œผ๋ฏ€๋กœ **์ตœ์ƒ์œ„ ์ธต์—์„œ๋Š” ์ถฉ๋Œํ•˜์ง€ ์•Š์ง€๋งŒ**, ํ•˜์œ„ ๊ธฐ์ œ ใ€Œํฌ๋กœ์Šคํ•˜๋„ค์Šคใ€์™€๋Š” ์—ฌ์ „ํžˆ ๊ฐ™์€ ๋‚ฑ๋ง์ด๋‹ค โ€” ๊ตฌ๋ถ„: **๋ช…์‚ฌ ใ€Œํฌ๋กœ์Šคํ•˜๋„ค์Šคใ€ = ๋Šฅ๋ ฅ ๊ตํ™˜(์ด ์ •์ฒด์„ฑ์˜ ํ•„์š”์กฐ๊ฑด)** ยท **ํ˜•์šฉ๊ตฌ cross-harness-boundary = ๊ทธ ๊ฒŒ์ดํŠธ์˜ ์ ์šฉ ๋ฒ”์œ„**. ์„ž์–ด ์“ฐ์ง€ ๋งˆ๋ผ. ๐ŸŸฅ **โ“‘ ๊ธฐ์ค€์ด ์–‘๋ฐฉํ–ฅํ™”์— ๋งž์ถฐ ยซ์ข์•„์ง„๋‹คยป(๋А์Šจํ•ด์ง€๋Š” ๊ฒŒ ์•„๋‹ˆ๋‹ค).** ํก์ˆ˜๋ฅผ ํ—ˆ์šฉํ•˜๋ฉด โ“‘(ยซFH ๊ฐ€ ์•ˆ ์ปค์กŒ๋Š”๊ฐ€ยป)๊ฐ€ ๊ทธ๋Œ€๋กœ๋Š” ๋ฌด๋ ฅํ•ด์ง€๋ฏ€๋กœ: **FH ๋Š” ยซ๋‹ซ๋Š” FH ๊ฒฐํ•จ์„ ์ด๋ฆ„์œผ๋กœ ๋Œˆ ์ˆ˜ ์žˆ์„ ๋•Œ๋งŒยป ์ปค์ง„๋‹ค.** ์ƒˆ ๊ทœ์œจ์ด ์•„๋‹ˆ๋ผ ์ด๋ฏธ ์žˆ๋Š” ์ฆ๊ฑฐ-์ž„๊ณ„ ๋นŒ๋“œ ๊ทœ์œจ(`fh_signal_2026-08-16_expedition_two_tracks.md` ยง๊ฒฝ๊ณ„ 2 โ€” *"ยซ์ข‹์•„ ๋ณด์—ฌ์„œยป๊ฐ€ ์•„๋‹ˆ๋ผ ยซ์šฐ๋ฆฌ ๊ฒฐํ•จ์ด ๊ทธ๊ฑธ ์š”๊ตฌํ•ด์„œยป"*)์„ โ“‘ ์˜ ํŒ์ • ๋ฌธ๊ตฌ๋กœ ์Šน๊ฒฉ์‹œํ‚จ ๊ฒƒ์ด๋‹ค. โ‡’ **โ“‘ = โ‘ด ํ˜ธ์ถœ๋กœ ๋Œ€์ฒดํ•œ ๊ฒƒ์„ ์ด๋ฆ„์œผ๋กœ ๋Œˆ ์ˆ˜ ์žˆ๊ณ , โ‘ต ์ƒˆ๋กœ ์ง€์€ ๊ฒƒ์€ ๊ฐ๊ฐ ๋‹ซ๋Š” FH ๊ฒฐํ•จ์„ ์ด๋ฆ„์œผ๋กœ ๋Œ„๋‹ค.** ์˜ค๋Š˜ ์‹ค์ : ๋Œ€์ฒด = `merge_noop_check.sh`(์•ˆ ์ง€์—ˆ๋‹ค) ยท ์‹ ์ถ• = `--cap-args` ์ฑ„๋„(๋‹ซ๋Š” ๊ฒฐํ•จ = ยซํ˜ธ์ถœ ์‹œ์  ์ธ์ž๋ฅผ ์š”๊ตฌํ•˜๋Š” ๋Šฅ๋ ฅ์ด relay ๋ฅผ ํ†ต๊ณผํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹คยป, ์‹ค์ธก) + `.git/objects` ๊ฐ์‹œ(๋‹ซ๋Š” ๊ฒฐํ•จ = ยซ`writes: read-only` ๊ฑฐ์ง“ ์„ ์–ธ์ด VERIFIED ๋ฅผ ๋ฐ›๋Š”๋‹คยป, ์‹ค์ธก). ๋‘˜ ๋‹ค ์ด๋ฆ„์ด ๋ถ™๋Š”๋‹ค. ๐ŸŸฅ **์„ ์–ธ ์œ„์น˜๋Š” ๋‘ ์ข…๋ฅ˜์ด๊ณ , ๊ธฐ๋ณธ์€ ยซ์–ด๋Œ‘ํ„ฐยป๋‹ค(์šด์˜์ž ๊ฒฐ์ • 2026-08-16 โ€” ์ดˆํŒ์€ ์ด๊ฑธ ๊ฑฐ๊พธ๋กœ ์ ์—ˆ๋‹ค).** ์šด์˜์ž: *"์‚ฌ์šฉ์ž๋“ค์€ ๋‹ค๋“ค ๋Œ€์ƒ ๋ ˆํฌ์— ์ง“์ง€ ์•Š์„ ๊ฑฐ์•ผ. **FH ๋‚ด๋ถ€์— ์ƒ์ฃผ์‹œํ‚ค๊ฒ ์ง€.** ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ฐœ์ธ์šฉ ๋ ˆํฌ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ๊ด€๋ฆฌํ•  ๊ฑฐ๊ณ ."* ยท *"๋กœ์ปฌ์—์„œ ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•œ ๊ฑฐ๋‹ˆ๊นŒ **์–ด๋Œ‘ํ„ฐ๋Š” ๋‚ด์žฅ๋˜์–ด ์žˆ์–ด์•ผ์ง€.**"* โ‡’ **์–ด๋Œ‘ํ„ฐ ์„ ์–ธ = ๊ธฐ๋ณธ ๊ฒฝ๋กœ**(FH ์•ˆ `.claude/capabilities/adapters/` + FH ์†Œ์œ  ์Šคํฌ๋ฆฝํŠธ, **์œ ์ง€ ์ฑ…์ž„์€ FH**, peer ๋Š” **์ด๋ฆ„์œผ๋กœ ํ•ด์„**ํ•ด tracked ํŒŒ์ผ์— ํ™ˆ ์ ˆ๋Œ€๊ฒฝ๋กœ๋ฅผ ์•ˆ ์‹ฃ๋Š”๋‹ค). **์†Œ์œ  ์„ ์–ธ = ํŠน๊ถŒ์  ๊ฒฝ์šฐ** โ€” ๊ทธ ํ•˜๋„ค์Šค๋ฅผ ์†Œ์œ ํ•˜๊ณ  **๋™์‹œ์—** ใ€Œ์™ธ๋ถ€ ํ•˜๋„ค์Šค์— ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋…ธ์ถœํ•œ๋‹คใ€๋ฅผ **๊ทธ ํ•˜๋„ค์Šค ์ž์‹ ์˜ ์ •๋ณธ์— ์ ์—ˆ์„ ๋•Œ๋งŒ**(pmh-dev ๊ฐ€ ๊ทธ ์œ ์ผํ•œ ์‚ฌ๋ก€๋‹ค). ๐ŸŸฅ **์ด ๋’ค์ง‘๊ธฐ๋Š” ์‹ค์ธก์ด ๊ฐ•์ œํ–ˆ๋‹ค**: qasp ์ž…์žฅ๋ฆฌ๋ทฐ๊ฐ€ ๋‚จ์˜ ๋ ˆํฌ ์•ˆ ์„ ์–ธ์„ REJECT ํ–ˆ๊ณ (์ •๋ณธ ๊ทผ๊ฑฐ 0๊ฑด ยท ์†Œ๋น„์ž 0๊ณณ ยท n=3 ๊ทœ์น™ ์œ„๋ฐ˜ ยท ์กฐ์ง ๋ฏธ๋Ÿฌ ๋…ธ์ถœ), gstack ์€ **์• ์ดˆ์— ๋‚จ์˜ ๊ณต๊ฐœ ๋ ˆํฌ(READ ๊ถŒํ•œ)๋ผ ํ‘ธ์‹œ ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ**ํ–ˆ๋‹ค โ€” ์ฆ‰ ์†Œ์œ  ์„ ์–ธ์€ ยซ๋“œ๋ฌธ ๊ฒฝ์šฐยป๊ฐ€ ์•„๋‹ˆ๋ผ **๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์„ฑ๋ฆฝ์กฐ์ฐจ ํ•˜์ง€ ์•Š๋Š”๋‹ค.** ์–ด๋Œ‘ํ„ฐ๊ฐ€ ํ—ˆ์šฉ๋˜๋Š” ๊ทผ๊ฑฐ๋Š” dominance-2 ๊ฐ€ ์žฐ ๊ฒƒ์ด๋‹ค โ€” ๋ณต์‚ฌ vs ํ˜ธ์ถœ์ด **safety ๋™๋ฅ **์ด์—ˆ๊ณ  ์ฐจ์ด๋Š” ยซ์ •๋ณด์™€ ์œ ์ง€ ์ฑ…์ž„ยป๋ฟ์ด์—ˆ๋‹ค. ๋ผ๋ฒจ๊ณผ FH ์†Œ์œ ๊ฐ€ ๊ทธ ์ฐจ์ด๋ฅผ ๋‹ซ๋Š”๋‹ค. โš ๏ธ **residency ๊ฒฝ๊ณ„**: `company` peer ์˜ ์–ด๋Œ‘ํ„ฐ๋Š” **tracked ๋กœ ๋‘์ง€ ์•Š๋Š”๋‹ค** โ€” ์ปค๋ฐ‹ ์‹œ์  ๊ณต๊ฐœํ‘œ๋ฉด ์Šค์บ”์ด floor ์ด์ง€๋งŒ, ํŒ๋‹จ์ด ๋จผ์ €๋‹ค. โš ๏ธ **๋ฏธ๊ฒฐ โ€” ์šด์˜์ž ๊ฒฐ์ • ๋Œ€๊ธฐ**: *"์šด์˜์ž ํ™˜๊ฒฝ์—์„œ๋Š” ์ƒ์‹œ ์ œ์•ˆ ๊ฐ€๋Šฅ. ์‚ฌ์‹ค ์ œ์•ˆ๋„ ์ž๋™์œผ๋กœ ๋ฐ˜์˜ ๊ฐ€๋Šฅ"*. ์ œ์•ˆ์˜ **์ž๋™ ๋ฐ˜์˜**์€ ์ž์œจ์„ฑ ํ™•์žฅ์ด๋ผ ยงOperational Adaptation Loop ์˜ action-class floor ๋ฅผ ๊ทธ๋Œ€๋กœ ํ†ต๊ณผํ•ด์•ผ ํ•œ๋‹ค โ€” ํก์ˆ˜ ์ปค๋ฐ‹ ์ž์ฒด๋Š” ๊ฐ€์—ญ์ด์ง€๋งŒ **๊ทธ๊ฒƒ์ด publish ๋ฅผ ๋จน์ด๋ฉด taint ๊ฐ€ ์ „ํŒŒ**๋˜๊ณ , ๊ทธ ๊ฒฝ์šฐ registry floor ๊ฐ€ `promotion_eligible` ์„ ๊ธˆํ•œ๋‹ค. ๋ฐ”์šด๋“œ๋œ ํ˜•ํƒœ(์šด์˜์ž ํ™˜๊ฒฝ ํ•œ์ • ยท ๊ฐ€์—ญ ํ‘œ๋ฉด ํ•œ์ • ยท typed ๊ธฐ๋ก ํ•„์ˆ˜ ยท ๊ฒŒ์ดํŠธ๋Š” ๊ทธ๋Œ€๋กœ)๋กœ ์ขํžˆ๊ธฐ ์ „์—” ์ž๋™ํ™”ํ•˜์ง€ ์•Š๋Š”๋‹ค. **๋ฏธ๊ตฌ์ถ•์ด๋ฉฐ, ๋ฏธ๊ตฌ์ถ•์ด๋ผ๊ณ  ์ ๋Š”๋‹ค.**
291
- | โ‘ก | ํ”„๋กœ์ ํŠธ ์ธํ๋ฒ ์ดํ„ฐ (**๐Ÿ”ต RC, 2026-08-09**) | context-continuity + judgment-circuit | ๐Ÿ”ต RC | **RC ์„ธ ๋‹ค๋ฆฌ๊ฐ€ ์„ฐ๋‹ค** โ€” (a) ๊ตฌํ˜„: `chamber_run.sh` 6๋‹จ๊ณ„ ๊ฒŒ์ดํŠธ (b) known-pair: ๋Ÿฌ๋„ˆ ๊ฒŒ์ดํŠธ **18 ๋ ˆ์ธ**(`test_chamber_run_lanes.sh`, BLOCK/PASS ๋Œ€์นญ โ€” PASS arm ์ด ์žˆ์–ด์•ผ "์ „๋ถ€ ๋ง‰๋Š” ๊ฒŒ์ดํŠธ"๋„ ๊ฑธ๋ฆฐ๋‹ค) + ์ˆœ์„œ ์ฆ์ธ **16 ๋ ˆ์ธ**(`chamber_witness.sh`) (c) self-test ์ดˆ๋ก. **์‹ค์ƒํ™ฉ ๋ฐœํ™” ๋Œ€๊ธฐ = formal chamber EMIT ์•„์ง 0** โ€” ๊ทธ๊ฒƒ์ด RC ๊ฐ€ ๐ŸŸข ์ด ์•„๋‹Œ ์ด์œ ์ด์ž RC ์ •์˜ ๊ทธ ์ž์ฒด๋‹ค. โš ๏ธ **๊ทธ 0 ์˜ ํ•ด์„์ด 2026-08-09 ์— ๋ฐ”๋€Œ์—ˆ๋‹ค**: ์ง€๊ธˆ๊นŒ์ง€ *"์ฑ”๋ฒ„๊ฐ€ ์—„๊ฒฉํ•ด์„œ"* ๋กœ ์ฝ์—ˆ์œผ๋‚˜, KILL ๋œ ํ›„๋ณด ๋‹ค์ˆ˜๊ฐ€ **๋ฉ”ํƒ€-ํ˜•** ์ด๊ณ  ์œ ์ผํ•œ EMIT(`forge-wiki`)๋งŒ **ํ•„๋“œ-ํ˜•** ์ด๋‹ค โ€” ์ฆ‰ *๋‚ณ์„ ์ˆ˜ ์—†์—ˆ๋˜* ๊ฒŒ ์•„๋‹ˆ๋ผ **์• ์ดˆ์— ๋Œ€์ƒ์ด ์•„๋‹Œ ํ›„๋ณด๊ฐ€ ๋“ค์–ด์™”์„** ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ํ•„๋“œ โŠฅ ๋ฉ”ํƒ€ ํ”„๋กœํŒŒ์ผ๊ณผ ์”จ์•—(precocial) ๊ธฐ์ค€ ์ •์˜: `harness_incubator_doctrine.md ยง3-a`. โš ๏ธ ๊ทธ ๋ถ„๋ฅ˜๋Š” **์‚ฌํ›„์— ์ด๋ค„์กŒ๊ณ  n=9** ๋ผ ๊ฐ€์„ค์ด๋‹ค โ€” ์‚ฌ์ „ ๋“ฑ๋ก ํ›„ ๋‹ค์Œ ๋Ÿฐ์„ ์˜ˆ์ธกํ•ด์•ผ ๊ฒฐ๊ณผ๊ฐ€ ๋œ๋‹ค. ์•„๋ž˜ ์˜› ํŒ์ • ์ค„์€ ์ด๋ ฅ์œผ๋กœ ๋‚จ๊ธด๋‹ค |
337
+ | โ‘ก | ํ”„๋กœ์ ํŠธ ์ธํ๋ฒ ์ดํ„ฐ (**๐ŸŸข 2026-08-21**) | context-continuity + judgment-circuit | ๐ŸŸข GREEN | **์ •์‹ ํ๋ฆ„์ด ๋ฐฐ์ถœํ–ˆ๊ณ , ๋ฐฐ์ถœ๋ฌผ์ด ๋Œ€์ƒ ํ•˜๋„ค์Šค์—์„œ ๋Œ์•˜๋‹ค.** (a) ๊ตฌํ˜„ `chamber_run.sh` 6๋‹จ๊ณ„ ๊ฒŒ์ดํŠธ (b) known-pair ๋Ÿฌ๋„ˆ 18 ๋ ˆ์ธ + ์ˆœ์„œ ์ฆ์ธ 16 ๋ ˆ์ธ (c) self-test ์ดˆ๋ก โ€” RC ์„ธ ๋‹ค๋ฆฌ๋Š” 2026-08-09 ์— ์„ฐ๋‹ค. **๐ŸŸข ๋กœ ์˜ฌ๋ฆฐ ๊ทผ๊ฑฐ๋Š” ๊ทธ ์œ„์˜ ๋„ท์ด๋‹ค**: โ“ **๋Ÿฐ #15 `interslide-dependency-graph` = EMIT + ์ˆœ์„œ ์ฆ์ธ `WITNESSED`**(๊ฒŒ์ดํŠธ ์•„ํ‹ฐํŒฉํŠธ 3๊ฑด์ด verdict ๋ณด๋‹ค ๋จผ์ € ์ปค๋ฐ‹ ๊ณ ์ •; `chamber_witness.sh verify` ์žฌ์‹คํ–‰ ํ™•์ธ) โ“‘ ๋ฐฐ์ถœ๋ฌผ์ด **๋Œ€์ƒ ํ•˜๋„ค์Šค์— ๋ฐฐ์„ ๋˜์–ด ์‹ค๋ฌผ ๋ฐœํ™”**(2026-08-21, `preprep` L8 โ€” ์ ˆ 29 ยท HARD ์˜์กด 4 ยท ๊นจ์ง 0 ยท UNRESOLVED 2) โ“’ **๋ฐฐ์ถœ๋ฌผ์˜ ๋ฏธํ•ด์†Œ๋ฅผ ์žฌ์„œ ์ค„์˜€๊ณ  ์ •๋‹ต์Œ์ด ์•ˆ ๊นจ์กŒ๋‹ค**(ํ‘œ๊ธฐ ์ •๊ทœํ™” ์ˆ˜๋ฆฌ โ†’ `S20 โ†’ S9 [OK]`; arm A rc=1 BROKEN ์œ ์ง€ ยท arm B rc=0 ๋ถˆ๋ณ€; ์ง„์งœ ๋ชจํ˜ธํ•œ 1๊ฑด์€ ์•ˆ ํ’€๋ฆผ = ์ƒˆ ์˜คํƒ 0) โ““ advisory ๋˜๋Œ๋ฆผ ์ปจํŠธ๋กค ํ†ต๊ณผ(HEAD ํŒ ๋Œ€๋น„ rcยทUSE ๋ถˆ๋ณ€). ๐ŸŸฅ **์ •์ง ์กฐ๊ฑด ์…‹, ์ง€์šฐ์ง€ ๋งˆ๋ผ**: (1) **n=1** โ€” ๋Ÿฐ #14 ๋„ EMIT ์ด๋‚˜ ์ˆœ์„œ ์ฆ์ธ `VOID(TAMPERED)` ๋ผ ๊ทผ๊ฑฐ๋กœ ๋ชป ์“ฐ๊ณ  **๊ทธ ๋ฌธ์„œ๊ฐ€ ์Šค์Šค๋กœ ๊ทธ๋ ‡๊ฒŒ ์ ์—ˆ๋‹ค** (2) L8 ์€ **advisory ๊ณ ์ •**์ด๋ผ ์•„์ง ยซ์‚ฌ๋žŒ์ด ๋ชป ๋ณธ ๊ฒฐํ•จ์„ ์žก์€ยป ์ ์€ ์—†๋‹ค โ€” ์žก์€ ๊ฒƒ์€ ์ž๊ธฐ ๋ฏธํ•ด์†Œ๋‹ค (3) ์˜› ์„œ์ˆ  *"formal chamber EMIT ์•„์ง 0"* ์€ **2026-08-20 ๋ถ€๋กœ stale** ์ด์—ˆ๋‹ค(#14ยท#15). ๊ทธ stale ์ด 12์ผ๊ฐ„ ์•ˆ ์žกํžŒ ๊ฒƒ ์ž์ฒด๊ฐ€ `[[feedback_rule_misdescribes_its_own_machine]]` ์‚ฌ๋ก€๋‹ค. ์•„๋ž˜ ์˜› ํŒ์ • ์ค„์€ ์ด๋ ฅ์œผ๋กœ ๋‚จ๊ธด๋‹ค |
292
338
  | โ‘ก-old | (์ด๋ ฅ) ํ”„๋กœ์ ํŠธ ์ธํ๋ฒ ์ดํ„ฐ | context-continuity + judgment-circuit | ๐ŸŸก PARTIAL | incubation is running โ€” **stockbattle is being incubated now** (S1 built, mid-flight) + qasp/pmh spin-out precedent + scaffold-emit shipped (doctrine: "emit shipped today as scaffold+approval; the chamber flow is the named target"). **Corrected 2026-08-08** (the old text read "6 runs, 6 KILL โ€ฆ 0/6", which was stale on both counts, and the ledger itself was missing a run): hand-counted from `tracks/_chamber/INDEX.md` โ€” **9 full runs (#2โ€“#10), 8 KILL, 1 EMIT** (#1 is a trigger probe, not a full run). Runs #5โ€“#6 *measured* the emit-worthiness criterion (net-new โˆง artifact-shaped โˆง real-data-precision-adequate โˆง hub-state-independent); run #6 confirmed the graduation-order principle โ€” hub-internal proof before standalone extraction, never the reverse. **The ๐ŸŸก is now held for a different reason than before.** The old reason ("no closed emit-via-incubation yet") is false: run #9 `forge-wiki` emitted and shipped publicly under operator approval with the Pre-Publish gate passed. What is *not* proven is that the **formal chamber flow** produced it โ€” that run's workspace holds only an `EMISSION_VERDICT.md`, with no `INTENT.md`, `BUDGET.md` or `SIM_NOTES.md`, so the intent/budget/blind-persona gates have no artifact and the verdict was written after the fact. The first run to complete the formal flow end-to-end is #10 (2026-08-08, 3 blind isolated personas) and it KILLed. So: **the identity has fired once, the mechanism has not yet been shown to be what fired it**, and the dominance result every ๐ŸŸข owes is still outstanding โ†’ ๐ŸŸก |
293
339
 
340
+ ### ยงdigest-routine โ€” ์˜› โ‘ฃ ํ–‰์˜ ์ธก์ • ๋‚ด์šฉ (์‚ญ์ œ ์•„๋‹˜, ์ด๊ด€)
341
+
342
+ `scripts/digest_landing_check.sh` ๋Š” **๊ธฐ๊ณ„ํ™”๋œ ์ผ์ƒ์ž‘์—…(frontier-digest)์˜ ์Šคํฌ๋ฆฌ๋„ˆ**๋‹ค.
343
+ ์›๋ฌธ์˜ ์ธก์ •์„ ๊ทธ๋Œ€๋กœ ๋ณด์กดํ•œ๋‹ค: ๋‘ ์ถ• ๋ถ„๋ฆฌ(git์ถ”์  โ†’ `git log --since` ์ปค๋ฐ‹์‹œ๊ฐ / gitignored
344
+ `tracks/**` โ†’ mtime / dirty-tracked โ†’ `UNMEASURED`)๋ฅผ **๋‘ ๋ ˆ์ธ์ด ๊ณ ์ •**ํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ๋ ˆ์ธ์ด
345
+ ์—†์œผ๋ฉด ยซ์ถ”์  ํŒŒ์ผ์„ ์ „๋ถ€ ๋ฒ„๋ ค negative ๋งŒ ํ†ต๊ณผยป๋กœ ํ‡ดํ™”ํ•œ๋‹ค(cross-family ์ง€๋ชฉ). self-test
346
+ **20 ๋ ˆ์ธ** ์ดˆ๋ก. ๋ช…์‹œ ์ž”์—ฌ: `file-change โ‰  token-introduction`. ํ–‰์ด ์Šค์Šค๋กœ
347
+ *"screener, not an adjudicator โ€” ํžˆํŠธ๋Š” ์—ด์–ด์•ผ ํ•œ๋‹ค"* ๋ผ๊ณ  ์„ ์–ธํ•œ๋‹ค.
348
+
349
+ **2026-08-21 ์ถ”๊ฐ€ ์‹ค์ธก โ€” ๊ทธ ์„ ์–ธ์ด ์‹ค์ œ๋กœ ๋ฌผ์—ˆ๋‹ค**:
350
+ ```
351
+ frontier_digest_2026_08_20.md ๊ณ„๊ธฐ rc=0 ยซ3๊ฑด ์ „๋ถ€ ์ฐฉ์ง€ยป โ†’ ์†๊ฒ€์ฆ 0/3 ์ฐฉ์ง€
352
+ ํ›„๋ณด 1ยท2ยท3 ์ด ๊ฐ์ž ์ฐฉ์ง€ ์ง€์ ์„ ์ง€์ •ํ•ด๋’€๊ณ , ์„ธ ์ž๋ฆฌ ๋ชจ๋‘ ๋น„์–ด ์žˆ๋‹ค(์ปจํŠธ๋กค ๋™๋ฐ˜)
353
+ ๋น„๊ณต๊ฐœ companion store ๋„ ํ™•์ธ โ€” ๊ฑฐ๊ธฐ๋„ ์—†๋‹ค(์Šค์ฝ”ํ”„ ๋ฐ– ์ฐฉ์ง€ ์•„๋‹˜)
354
+ ๊ฐ™์€ ํ›„๋ณด(2608.09096ยท2608.06301)๊ฐ€ 08-17 digest ์—๋„ ์•ต์ปค๊ฒ€์ฆ๊นŒ์ง€ ๋ผ์„œ ์˜ฌ๋ผ๊ฐ”๊ณ  ๊ทธ๋•Œ๋„ ๋ฏธ์ฐฉ์ง€
355
+ ```
356
+ ๐ŸŸฅ **์ด๊ฒƒ์„ ยซ๊ณ„๊ธฐ ๊ฒฐํ•จยป์œผ๋กœ ์ ์ง€ ๋งˆ๋ผ** โ€” ํ–‰์ด ์ด๋ฏธ ์Šคํฌ๋ฆฌ๋„ˆ๋ผ๊ณ  ์„ ์–ธํ–ˆ๊ณ  ยซํžˆํŠธ๋ฅผ ์—ด์–ด๋ผยป๊ณ 
357
+ ์ง€์‹œํ•œ๋‹ค. ์ƒˆ๋กœ์šด ๊ฒƒ์€ ๊ฒฐํ•จ์ด ์•„๋‹ˆ๋ผ **๋น„์œจ(1๊ฐœ digest 3/3)๊ณผ ๋ฐ˜๋ณต(๊ฐ™์€ ํ›„๋ณด 2ํšŒ ๋ฏธ์ฐฉ์ง€)**์ด๋‹ค.
358
+ โ‡’ ์ผ์ƒ์ž‘์—… ์ชฝ ์ž”์—ฌ๋กœ ๊ธฐ๋ก: **ํ‘œ๋ฉดํ™”๋Š” ๋˜๋Š”๋ฐ ๋‹ซํžˆ์ง€ ์•Š๋Š”๋‹ค.** ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฒฐ๊ณผ๋Š” **โ‘ฃ ์˜ ํŒ์ •์—
359
+ ์•ˆ ๊ฑธ๋ฆฐ๋‹ค** โ€” ์žฌ์ •์˜๋กœ ๋Œ€์ƒ์ด ๊ฐˆ๋ ธ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
360
+
361
+ ---
362
+
294
363
  ### <a name="b-layering"></a>ยงโ’ท-layering โ€” **ํ”„๋กœ์ ํŠธ ๋ถ€์Šคํ„ฐ**๋Š” ์—ฌ์„ฏ ๋ฒˆ์งธ ํ–‰์ด ์•„๋‹ˆ๋ผ **๋‹ค๋ฅธ ์ธต**์ด๋‹ค (์šด์˜์ž, 2026-08-16)
295
364
 
296
365
  > ๐ŸŸฅ **๋จผ์ € โ€” ์ด ์ ˆ์„ ์œ„๊ณ„๋„๋กœ ์ฝ์ง€ ๋งˆ๋ผ. ์ด ํ‘œ๋Š” ๋ถ„๋ฅ˜ํ•™์ด ์•„๋‹ˆ๋ผ ์žฌ๊ณ  ๋ชฉ๋ก์ด๋‹ค.**
@@ -635,7 +704,7 @@ incubator entry absorbed into deep-clarify) โ€” the identity-โ‘ก weakness surfac
635
704
  **Verdict (2026-08-09 โ€” supersedes the 2026-07-14 line)**: FH is tagged **`v0.1.0` = honest baseline**,
636
705
  not all-green. ~~โ‘ขโ‘ค are ๐ŸŸข, **โ‘ โ‘กโ‘ฃ are ๐Ÿ”ต RC**~~ โ†’ **2026-08-16: โ‘ โ‘ขโ‘ค are ๐ŸŸข, โ‘กโ‘ฃ are ๐Ÿ”ต RC**,
637
706
  **none ๐Ÿ”ด** โ€” the `v0.1.0` notes state this and make no
638
- all-green claim (per the refined 0.xโ†”1.0 mapping above). **`v1.0.0` remains the all-green target.**
707
+ all-green claim (per the refined 0.xโ†”1.0 mapping above). **`identity-v1.0.0` remains the all-green target.**
639
708
  ๐ŸŸฅ **โ‘ ์˜ ๐ŸŸข ์€ ๊ธฐ์ค€์ด ๋ฐ”๋€ ๊ฒฐ๊ณผ๋‹ค** โ€” ์˜› dominance ์ ˆ๋กœ ์žฌ๋ฉด ์˜ค๋Š˜๋„ ๐Ÿ”ต ์ด๊ณ , ๋‘ ๋ฒˆ ์Ÿ€๊ณ  ๋‘˜ ๋‹ค
640
709
  ๋ฏธ์„ฑ๋ฆฝ์ด์—ˆ๋‹ค. ๋ฌด์—‡์ด ์™œ ๋ฐ”๋€Œ์—ˆ๋Š”์ง€๋Š” [ยงโ‘ -2026-08-16](#id1-20260816) ์„ ์ฝ์–ด๋ผ. **๊ทธ ํ–‰์ด ๋ช…์‹œ
641
710
  ์ž”์—ฌ ์…‹(์™ธ๋ถ€ ์†Œ์œ  ์„ ์–ธ n=1 ยท qasp ๋ณด๋ฅ˜ ยท (d) ๋ฏธํ•ด๊ฒฐ)์„ ํ•จ๊ป˜ ์ง€๊ณ  ์žˆ๊ณ , ๊ทธ๊ฑธ ๋นผ๊ณ  ์ธ์šฉํ•˜์ง€ ๋งˆ๋ผ.**