@chrono-meta/fh-gate 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/capabilities/adapters/gstack-content-safety.cap +110 -0
- package/.claude/capabilities/adapters/mate-agent-boundary.cap +110 -0
- package/.claude/capabilities/adapters/qasp-new-code-anchor.cap +116 -0
- package/.claude/capabilities/degrade-direction-scan.cap +24 -0
- package/.claude/capabilities/public-surface-scan.cap +24 -0
- package/.claude-plugin/marketplace.json +3 -3
- package/AGENTS.md +9 -3
- package/CHEATSHEET.md +17 -1
- package/CLAUDE.md +2 -2
- package/README.ja.md +55 -20
- package/README.ko.md +86 -20
- package/README.md +57 -20
- package/README.zh.md +49 -19
- package/knowledge/shared/harness-core/fh_three_layer_canon.md +96 -5
- package/knowledge/shared/harness-core/harness_incubator_doctrine.md +1 -1
- package/knowledge/shared/harness-core/harness_terminal_correlation_and_recommendations.md +214 -0
- package/knowledge/shared/harness-core/harness_verification_core_extended.md +1 -1
- package/knowledge/shared/harness-core/ship_readiness_gate.md +29 -10
- package/knowledge/shared/learnings/subagent_invocations_log.yaml +62 -0
- package/package.json +10 -2
- package/plugins/fh-commons/.claude-plugin/plugin.json +1 -1
- package/plugins/fh-meta/.claude-plugin/plugin.json +2 -2
- package/plugins/fh-meta/CHANGELOG.md +17 -0
- package/scripts/adapters/gstack_content_safety.sh +186 -0
- package/scripts/adapters/mate_agent_boundary.sh +120 -0
- package/scripts/adapters/peer_resolve.sh +99 -0
- package/scripts/adapters/qasp_new_code_anchor.sh +159 -0
- package/scripts/branch_claim.sh +14 -0
- package/scripts/capability_effect_probe.sh +340 -20
- package/scripts/capability_registry_check.sh +198 -10
- package/scripts/cluster_capability_scan.sh +629 -0
- package/scripts/fh_session_load.sh +70 -0
- package/scripts/portability_lint.sh +257 -0
- package/scripts/relay_channel.sh +70 -7
- package/scripts/selfcheck.sh +138 -1
- package/scripts/test_adapter_lanes.sh +296 -0
- package/scripts/test_capability_entrypoint_shipping.sh +8 -1
- package/scripts/test_relay_channel_lanes.sh +76 -0
- package/templates/.git-hooks/pre-commit +14 -2
package/README.ja.md
CHANGED
|
@@ -200,7 +200,7 @@ Project B ──→ CLAUDE.md でハブを接続
|
|
|
200
200
|
|
|
201
201
|
| | 正体 | 人が手にするもの |
|
|
202
202
|
|---|---|---|
|
|
203
|
-
| **①** |
|
|
203
|
+
| **①** | **ハーネスクラスター** | 1つの作業が複数のハーネスに乗り、ガバナンスはその*あいだ*で計算されます。その荷重を担う下位機構が **クロスハーネス** — 持っていない能力は**呼んで使い**(作らない)、作るべきものが見えたら**取り込む** |
|
|
204
204
|
| **②** | **プロジェクトインキュベーター** | 新しいハーネスが空のスキャフォールドではなく、**生まれた場所で既に歩ける状態**で出てきます |
|
|
205
205
|
| **③** | **ガバナンスゲート** | 出してはいけないものが、覚えて確認する代わりに**機械的に**止まります |
|
|
206
206
|
| **④** | **フロンティア → 組織への伝播** | 外から届いたものが、組織の*内側*まで届ききります |
|
|
@@ -246,8 +246,13 @@ Project B ──→ CLAUDE.md でハブを接続
|
|
|
246
246
|
4大エンジン それを可能にする能力 (能力 — できること)
|
|
247
247
|
↑ 生み出しているのは
|
|
248
248
|
3段工程 そのエンジンを鍛える「順序」 (工程 — どう作られるか)
|
|
249
|
+
└ ③段階 = 6軸ゲート (下の §6つの検証軸)
|
|
249
250
|
```
|
|
250
251
|
|
|
252
|
+
覚えやすい形にすると **3段工程 · 4大エンジン · 5つの正体 · 6軸ゲート** です。
|
|
253
|
+
⚠️ ただし **6軸は4つめの層ではありません** — 3段工程の**③段階が何でできているか**です。
|
|
254
|
+
4つを横並びの層として読むと、この節がそもそも直そうとしていた「層が入ってこない」問題が戻ってきます。
|
|
255
|
+
|
|
251
256
|
**4大エンジン。** それぞれが上のいずれかの正体を足元で支えています。これらはこのページのために発明された
|
|
252
257
|
ものではありません: 出荷準備ゲートが既に、すべての正体をこの同じ4つの能力に対して専用の列で採点して
|
|
253
258
|
いました([`ship_readiness_gate.md`](knowledge/shared/harness-core/ship_readiness_gate.md))。ですから
|
|
@@ -286,29 +291,59 @@ Project B ──→ CLAUDE.md でハブを接続
|
|
|
286
291
|
2度持つだけです。並列化それ自体には方向がなく、選ぶのは①の判断回路です。
|
|
287
292
|
これは「働き方」であって、③の最終検査ではありません。
|
|
288
293
|
|
|
289
|
-
③ 最後に
|
|
290
|
-
焼き切る
|
|
294
|
+
③ 最後に6つの軸で 下の6軸です。敵対的レビューはそのうちの1つであって、全部ではありません —
|
|
295
|
+
焼き切る 敵対性は**姿勢**であって軸ではありません。どの軸にも乗せられますが、
|
|
296
|
+
乗せたところでその軸に見えないものはやはり見えません
|
|
291
297
|
```
|
|
292
298
|
|
|
293
|
-
**
|
|
294
|
-
|
|
299
|
+
**6つの検証軸** — 「レビューしました」が実際には最初の1つだけを指していた、と判明しがちな場所です。
|
|
300
|
+
|
|
301
|
+
🟥 **軸は「どれだけ敵対的か」では分かれません。「何を受け取ったか」で分かれます。** 受け取るものが
|
|
302
|
+
同じなら、レビュアーを何人足しても**同じ盲点が残ります**。ですから下の表でいちばん重要な列は
|
|
303
|
+
*受け取るもの*です:
|
|
295
304
|
|
|
296
|
-
| 軸 |
|
|
305
|
+
| 軸 | **受け取るもの** | 何を捕まえるか | 典型的な計器 |
|
|
297
306
|
|---|---|---|---|
|
|
298
|
-
| **ⓐ 別ファミリー** |
|
|
299
|
-
| **ⓑ
|
|
300
|
-
| **ⓒ
|
|
301
|
-
| **ⓓ
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
307
|
+
| **ⓐ 別ファミリー** | diff + 著者のフレーミング | **実装**が間違っている | 別のモデルファミリーからのレビュアー (`auto-decorrelation`) |
|
|
308
|
+
| **ⓑ 立ち位置 (standpoint)** | diff + **対象ハーネス自身の正典** | **引用した規約が本当にそう言っているか** | そのハーネス自身のレポ · ルールの側で diff を走らせる ([`§7`](knowledge/shared/harness-core/field_verdict_crossfamily_gate.md)) |
|
|
309
|
+
| **ⓒ 隔離されたグラウンディング** | 著者が書いた文 + いまのツリー | **主張**が間違っている | 書いていない誰かが、書かれている内容を測り直す |
|
|
310
|
+
| **ⓓ 第三者との対面** | 問題 + **他人のコードベース** | **これはもう解かれているのでは** · 自分の変更が他人のレポのどこに触るか | 無関係な第三のレポで同じ問題を見る |
|
|
311
|
+
| **ⓔ 初の実使用** | 実物の対象1件 | **測り方**が間違っている — 計器の計器 | 実際の対象1件に対して一度走らせ、結果を自分の手で確かめる |
|
|
312
|
+
| **ⓕ 戻して観察する** | 配線を消したツリー | **アンカー**が間違っている — その検査は装飾だ | 守っている対象を消して、*その特定の*検査が赤くなることを確かめる |
|
|
313
|
+
|
|
314
|
+
**6つを毎回すべて回すわけではなく、それが設計です** — 掛け算せずに、**選んでください**:
|
|
315
|
+
|
|
316
|
+
```
|
|
317
|
+
1行の修正(typo · gitignore) 何も焼きません。①の回路すら不要 — 答えが1つなら、
|
|
318
|
+
植えること自体がオーバーヘッドです
|
|
319
|
+
通常のコード変更(可逆) ⓔ 初の実使用 + ⓕ 戻し
|
|
320
|
+
verdict · ゲートのコード + ⓐ 別ファミリー — verdict のロジックは、著者と同じ楽観を
|
|
321
|
+
共有するレビュアーが**構造的に**見落とします
|
|
322
|
+
他人のハーネスに触れる変更 + ⓑ 立ち位置 — ファミリーを3つ足しても、全員が自分の
|
|
323
|
+
フレーミングを飲んでしまえば「その正典が本当にそう
|
|
324
|
+
言っているか」は誰も見ません
|
|
325
|
+
超大型 · 不可逆 + ⓒ 隔離 + ⓓ 第三者との対面。全部焼きます
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
⚠️ **ⓓ 第三者との対面はもっとも高くつき、固有の収穫がもっとも小さい軸です。** ところがその少数は
|
|
329
|
+
すべて**境界をまたぐ種類**でした(他人がすでに廃止していたルール · 他人のレポが自分のファイルを
|
|
330
|
+
import している)。小さく戻せる変更ではそうした項目は**そもそも発生せず**、大きく不可逆なときは
|
|
331
|
+
まさにその2つが事故になります。コストが正当化されるのはそこです。
|
|
332
|
+
|
|
333
|
+
**なぜこれが基盤モデルの進化で置き換わらないのか** — 軸は*レビュアーの能力*ではなく**入力**で
|
|
334
|
+
定義されます。モデルが強くなっても、**「受け取っていない情報」は依然として見えません。** スキャフォー
|
|
335
|
+
ルディングはモデルが良くなれば脱げますが、**入力境界の脱相関は脱げません**。そして単独の著者は定義上
|
|
336
|
+
自分の入力の外へは出られません。🟥 正直な際どさ: エージェントが**ツールで自分から入力を取りに行く**と
|
|
337
|
+
境界はぼやけます — 実際「ストア全件が使われていない」と「例外の握り潰し」は ⓐ · ⓒ でも捕まえられる、
|
|
338
|
+
と外部の判定は見ました(自分で grep するからです)。逆に「他人のレポが過去に廃止したルール」は
|
|
339
|
+
**ツールでも取りに行けません** — そのプロジェクトのレビュー履歴にアクセスする理由がそもそも
|
|
340
|
+
ないからです。ⓓ が残るのはそこです。
|
|
341
|
+
|
|
342
|
+
> 🟥 **引用する前に読むべき限界**: この6軸の表は **n=1**(1つの成果物 · 1セッション · 1人の著者)です。
|
|
343
|
+
> 軸の「非重複」が構造的なのか、その日の偶然なのかは**未測定**です。さらに著者の自己採点を取り除く
|
|
344
|
+
> ために、発見16件を**出典を消したまま**別ファミリーの分類器2つにブラインドで判定させたところ、
|
|
345
|
+
> 著者が ⓓ に帰属させた**5件のうち3件が別の軸と判定されました** — その3件は「その軸が必要だったもの」
|
|
346
|
+
> ではなく「別の軸が見落としたもの」でした。表の帰属はその分だけ割り引いて読んでください。
|
|
312
347
|
|
|
313
348
|
> **正直な注記 — これはきれいな積み木ではなく、そこが要点です。** 段階①と段階③はエンジンと同じ素材で
|
|
314
349
|
> できているので、下の層が上の層を使っています。この矛盾は*主語*で解けます: **エンジン**は FH が
|
package/README.ko.md
CHANGED
|
@@ -197,7 +197,7 @@ Project B ──→ CLAUDE.md에서 허브 연결
|
|
|
197
197
|
|
|
198
198
|
| | 정체성 | 사람이 얻는 것 |
|
|
199
199
|
|---|---|---|
|
|
200
|
-
| **①** |
|
|
200
|
+
| **①** | **하네스 클러스터** | 하나의 작업이 여러 하네스를 타고, 거버넌스는 그 *사이에서* 계산됨. 하위 기제 **크로스하네스** = 없는 능력을 **호출해 쓰고**(안 짓는다) 지어야 할 것이 보이면 **흡수한다** |
|
|
201
201
|
| **②** | **프로젝트 인큐베이터** | 새 하네스가 빈 스캐폴드가 아니라 **태어난 자리에서 이미 걷는 상태로** 나옴 |
|
|
202
202
|
| **③** | **거버넌스 게이트** | 나가면 안 되는 것이 점검을 기억해서가 아니라 **기계적으로** 막힘 |
|
|
203
203
|
| **④** | **프런티어 → 조직 전파** | 밖에서 들어온 것이 조직 *안쪽까지* 내려앉음 |
|
|
@@ -242,8 +242,13 @@ Project B ──→ CLAUDE.md에서 허브 연결
|
|
|
242
242
|
네 엔진 그것을 가능하게 하는 능력 (능력 — 무엇을 할 수 있나)
|
|
243
243
|
↑ 만들어내는 것
|
|
244
244
|
3단 공정 그 엔진들을 벼리는 순서 (공정 — 어떻게 만들어지나)
|
|
245
|
+
└ ③단계 = 6축 게이트 (아래 §여섯 검증 축)
|
|
245
246
|
```
|
|
246
247
|
|
|
248
|
+
기억하기 좋은 형태로는 **3단 공정 · 4대 엔진 · 5대 정체성 · 6축 게이트**입니다.
|
|
249
|
+
⚠️ 다만 **6축은 네 번째 층이 아닙니다** — 3단 공정의 **③단계가 무엇으로 이루어지는지**입니다.
|
|
250
|
+
넷을 나란한 층으로 읽으면 이 절이 애초에 고치려던 «층이 안 들린다» 문제가 되돌아옵니다.
|
|
251
|
+
|
|
247
252
|
**네 엔진.** 각각은 위의 어떤 정체성이 딛고 서 있는 바닥입니다. 이 페이지를 위해 만들어낸 것이
|
|
248
253
|
아닙니다: 레디니스 게이트가 이미 모든 정체성을 이 같은 네 능력에 대해 별도 열로 채점하고 있었고
|
|
249
254
|
([`ship_readiness_gate.md`](knowledge/shared/harness-core/ship_readiness_gate.md)), 이름을 붙인 것은
|
|
@@ -284,29 +289,90 @@ Project B ──→ CLAUDE.md에서 허브 연결
|
|
|
284
289
|
병렬화 자체엔 방향이 없고, 고르는 것은 ①의 판단 회로.
|
|
285
290
|
이건 «일하는 방식»이지 ③의 마감 검사가 아님
|
|
286
291
|
|
|
287
|
-
③ 끝에서
|
|
288
|
-
태우기
|
|
292
|
+
③ 끝에서 6축으로 아래 여섯 축. 적대검증은 그중 하나이지 전부가 아님 —
|
|
293
|
+
태우기 적대성은 **자세**지 축이 아닙니다. 아무 축에나 얹을 수 있고,
|
|
294
|
+
얹어도 그 축이 못 보는 것은 여전히 못 봅니다
|
|
289
295
|
```
|
|
290
296
|
|
|
291
|
-
|
|
292
|
-
|
|
297
|
+
**여섯 검증 축** — "리뷰했다"가 실제로는 이 중 첫 번째 하나만 뜻하는 경우가 대부분입니다.
|
|
298
|
+
|
|
299
|
+
🟥 **축은 «얼마나 적대적인가»로 갈리지 않습니다. «무엇을 받았는가»로 갈립니다.** 받는 것이 같으면
|
|
300
|
+
리뷰어를 몇 명 붙여도 **같은 사각이 남습니다**. 그래서 아래 표에서 가장 중요한 열은 *받는 것*입니다:
|
|
293
301
|
|
|
294
|
-
| 축 |
|
|
302
|
+
| 축 | **받는 것** | 무엇이 틀린 경우를 잡나 | 대표 계기 |
|
|
295
303
|
|---|---|---|---|
|
|
296
|
-
| **ⓐ 다른 패밀리** |
|
|
297
|
-
| **ⓑ
|
|
298
|
-
| **ⓒ
|
|
299
|
-
| **ⓓ
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
한
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
304
|
+
| **ⓐ 다른 패밀리** | diff + 저자의 프레이밍 | **구현**이 틀림 | 다른 모델 패밀리의 리뷰어(`auto-decorrelation`) |
|
|
305
|
+
| **ⓑ 입장** | diff + **대상 하네스의 정본** | **인용한 규약이 정말 그렇게 말하나** | 그 하네스 자신의 레포·규칙에서 diff를 돌림 ([`§7`](knowledge/shared/harness-core/field_verdict_crossfamily_gate.md)) |
|
|
306
|
+
| **ⓒ 격리 그라운딩** | 저자가 쓴 문장 + 지금의 트리 | **주장**이 틀림 | 그것을 쓰지 않은 쪽이 적힌 내용을 다시 잼 |
|
|
307
|
+
| **ⓓ 3자 대면** | 문제 + **남의 코드베이스** | **이미 풀린 문제 아닌가** · 내 변경이 남의 레포를 어디서 만지나 | 관련 없는 제3의 레포에서 같은 문제를 봄 |
|
|
308
|
+
| **ⓔ 첫 실사용** | 실물 대상 한 건 | **재는 방식**이 틀림 — 계기의 계기 | 진짜 대상 하나에 돌리고 결과를 손으로 확인 |
|
|
309
|
+
| **ⓕ 되돌려 관찰** | 배선을 지운 트리 | **앵커**가 틀림 — 검사가 장식임 | 지키는 대상을 지우고 *바로 그* 검사가 빨개지는지 확인 |
|
|
310
|
+
|
|
311
|
+
**여섯을 매번 다 돌리지 않으며, 그것이 설계입니다** — 곱하지 말고 **고르세요**:
|
|
312
|
+
|
|
313
|
+
```
|
|
314
|
+
한 줄 수리(오타 · gitignore) 아무것도 안 태움. ①영혼도 불요 — 답이 하나면 심는 것이 오버헤드
|
|
315
|
+
일반 코드 변경(가역) ⓔ 첫 실사용 + ⓕ 되돌림
|
|
316
|
+
판정 · 게이트 코드 + ⓐ 다른 패밀리 — 판정 로직은 저자와 같은 낙관을 공유하는
|
|
317
|
+
리뷰어가 **구조적으로** 놓침
|
|
318
|
+
남의 하네스에 닿는 변경 + ⓑ 입장 — 패밀리를 셋 붙여도 전부 내 프레이밍을 먹으면
|
|
319
|
+
«그 정본이 그렇게 말하나»는 아무도 안 봄
|
|
320
|
+
초대형 · 비가역 + ⓒ 격리 + ⓓ 3자 대면. 전부 태움
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
⚠️ **ⓓ 3자 대면은 가장 비싸고 고유 수확이 가장 작습니다.** 그런데 그 소수가 전부 **경계를 넘는
|
|
324
|
+
종류**였습니다(남이 이미 폐기한 규칙 · 남의 레포가 내 파일을 임포트). 작고 되돌릴 수 있는 변경에선
|
|
325
|
+
그런 항목이 **생기지 않고**, 크고 비가역이면 정확히 그 둘이 사고가 됩니다. 비용이 정당해지는
|
|
326
|
+
지점이 거기입니다.
|
|
327
|
+
|
|
328
|
+
**왜 이것이 기반 모델 발전으로 대체되지 않나** — 축은 *리뷰어의 능력*이 아니라 **입력**으로
|
|
329
|
+
정의됩니다. 모델이 세져도 **«받지 않은 정보»는 여전히 못 봅니다.** 스캐폴딩은 모델이 좋아지면
|
|
330
|
+
벗겨지지만 **입력 경계 탈상관은 벗겨지지 않으며**, 단일 저자는 정의상 자기 입력을 벗어날 수 없습니다.
|
|
331
|
+
🟥 정직한 가장자리: 에이전트가 **도구로 스스로 입력을 더 가져오면** 경계는 흐려집니다 — 실제로
|
|
332
|
+
「저장소 전수 미사용」과 「예외 삼킴」은 ⓐ·ⓒ 도 잡을 수 있다고 외부 판정이 봤습니다(스스로 grep 하니까).
|
|
333
|
+
반대로 「남의 레포가 과거에 폐기한 규칙」은 **도구로도 가져올 수 없습니다** — 그 프로젝트의 리뷰
|
|
334
|
+
이력에 접근할 이유가 애초에 없기 때문입니다. 거기가 ⓓ가 남는 자리입니다.
|
|
335
|
+
|
|
336
|
+
> 🟥 **인용 전에 읽어야 할 한계**: 이 6축 표는 **n=1**(한 산출물 · 한 세션 · 한 저자)입니다.
|
|
337
|
+
> 축의 «비중복»이 구조적인지 그날 우연인지는 **미측정**입니다. 그리고 저자 자평을 걷어내려고
|
|
338
|
+
> 발견 16건을 **출처를 지운 채** 다른 패밀리 분류자 둘에게 블라인드 판정시켰더니, 저자가 ⓓ에
|
|
339
|
+
> 귀속시킨 **5건 중 3건이 다른 축으로 판정됐습니다** — 그 셋은 «축이 필요했던 것»이 아니라
|
|
340
|
+
> «다른 축이 놓친 것»이었습니다. 표의 귀속은 그만큼 줄여 읽으세요.
|
|
341
|
+
|
|
342
|
+
### 🟥 「4」가 두 개입니다 — 그리고 예전 이름까지 세면 셋이었습니다
|
|
343
|
+
|
|
344
|
+
같은 저장소 안에서 「4」가 서로 다른 것을 가리킵니다. 인용하기 전에 어느 쪽인지 확인하세요:
|
|
345
|
+
|
|
346
|
+
| 이름 | 무엇 | 어디에 붙나 |
|
|
347
|
+
|---|---|---|
|
|
348
|
+
| **4축 게이트** | Axis 1 회귀 · 2 적대 · 3 팬텀 · 4 매니페스트 | **커밋 경계** — 층이 아닙니다 |
|
|
349
|
+
| **4대 엔진** | 영혼 · 품질게이트 · 질문하기 · 맥락유지 | **능력 층** |
|
|
350
|
+
| ~~4축 검증~~ | → **6축 검증**으로 확장됨 | 3단 공정 ③단계의 내용물 |
|
|
351
|
+
|
|
352
|
+
셋은 **부분적으로만 겹치고 서로 대체하지 않습니다** — Axis 2·3 이 ⓐ·ⓒ 와 가깝지만
|
|
353
|
+
**Axis 1·4 는 검증 축에 대응이 아예 없습니다.** 그래서 6축은 «6축 게이트»가 아니라
|
|
354
|
+
**«6축 검증»**으로 부릅니다.
|
|
355
|
+
|
|
356
|
+
### 4축 게이트 — 층에 끼지 않고 커밋 경계에 직교로 붙습니다
|
|
357
|
+
|
|
358
|
+
FH 자산이 바뀌면 **그 세션 첫 커밋 전에** 자동으로 도는 체인이고,
|
|
359
|
+
`templates/.git-hooks/pre-commit` 이 하드 차단합니다. 위 세 층 어디에도 들어가지 않습니다:
|
|
360
|
+
|
|
361
|
+
| 축 | 계기 | 무엇을 잡나 |
|
|
362
|
+
|---|---|---|
|
|
363
|
+
| **Axis 1 · 후방** | `templates/regression_guard.sh` | 절 소실 · 깨진 참조 · 문법 오류 · 줄 감소 |
|
|
364
|
+
| **Axis 2 · 적대** | `steel-quench` | 트리거 충돌 · 설계 공격면 · 과설계 단계 |
|
|
365
|
+
| **Axis 3 · 전방** | `phantom-quench` | 팬텀 참조 · 없는 경로 · 죽은 외부 링크 |
|
|
366
|
+
| **Axis 4 · 기록** | `edit-manifest` | 예측 영향 기록 — 예측·검증 루프를 닫습니다 |
|
|
367
|
+
|
|
368
|
+
> **더 알아보려면** — 층·축·계기가 한 장에 배치된 구조 참조와, 각 자리에 어떤 스킬·에이전트·
|
|
369
|
+
> 스크립트가 붙는지의 매핑:
|
|
370
|
+
> [`fh_three_layer_canon.md`](knowledge/shared/harness-core/fh_three_layer_canon.md)
|
|
371
|
+
> (§1-a 최초 4축 · §1-a-2 6축 확장 · §2 엔진 · §3 정체성) ·
|
|
372
|
+
> [`fh_4axis_gate.md`](.claude/rules/fh_4axis_gate.md)(커밋 게이트) ·
|
|
373
|
+
> [`ship_readiness_gate.md`](knowledge/shared/harness-core/ship_readiness_gate.md)(정체성 등급).
|
|
374
|
+
> ⚠️ 정본 표에서 온 배치와 라우팅 판단을 갈라 읽으세요 — 엔진↔정체성 매핑과 위 4축 표는
|
|
375
|
+
> **정본 그대로**이고, 「어느 스킬이 어느 정체성에 붙나」는 **판단**입니다.
|
|
310
376
|
|
|
311
377
|
> **정직한 주석 — 이것은 깔끔한 스택이 아니고, 그게 핵심입니다.** 1단계와 3단계는 엔진과 **같은
|
|
312
378
|
> 재료**로 되어 있어서, 아래층이 위층을 씁니다. 모순은 *주어*에서 풀립니다: **엔진**은 FH가 당신의
|
package/README.md
CHANGED
|
@@ -198,7 +198,7 @@ this page: that table is *symptoms you might arrive with*, this is *what the hub
|
|
|
198
198
|
|
|
199
199
|
| | Identity | What a person gets |
|
|
200
200
|
|---|---|---|
|
|
201
|
-
| **①** | **
|
|
201
|
+
| **①** | **Harness cluster** | One task rides several harnesses, and governance is computed *between* them. Its load-bearing sub-mechanism, **cross-harness**: **call** a capability you do not have (rather than build it), and **absorb** the one you should have built |
|
|
202
202
|
| **②** | **Project incubator** | A new harness comes out **walking where it was born**, not as an empty scaffold |
|
|
203
203
|
| **③** | **Governance gate** | What must not ship is blocked **mechanically**, not by remembering to check |
|
|
204
204
|
| **④** | **Frontier → org propagation** | What arrives from outside lands all the way *inside* the organization |
|
|
@@ -244,8 +244,14 @@ four engines the capability that makes it possible (capability — what i
|
|
|
244
244
|
↑ produced by
|
|
245
245
|
three-stage the ORDER those engines are forged in (process — how it gets made)
|
|
246
246
|
process
|
|
247
|
+
└ stage ③ = the six-axis gate (§The six verification axes, below)
|
|
247
248
|
```
|
|
248
249
|
|
|
250
|
+
As a mnemonic: **three-stage process · four engines · five identities · six-axis gate**.
|
|
251
|
+
⚠️ But **the six axes are not a fourth layer** — they are *what stage ③ of the three-stage process
|
|
252
|
+
consists of*. Read the four as parallel layers and you get back the very "the layers do not land"
|
|
253
|
+
problem this section was written to fix.
|
|
254
|
+
|
|
249
255
|
**The four engines.** Each one is what some identity above is standing on. They were not invented for this
|
|
250
256
|
page: the readiness gate had already been scoring every identity against these same four capabilities in a
|
|
251
257
|
column of its own ([`ship_readiness_gate.md`](knowledge/shared/harness-core/ship_readiness_gate.md)), so
|
|
@@ -285,29 +291,60 @@ harness is actually used.
|
|
|
285
291
|
direction of its own; the judgment circuit from ① is what picks.
|
|
286
292
|
This is a way of WORKING, not the end-of-line check in ③.
|
|
287
293
|
|
|
288
|
-
③ Burn it down at the the
|
|
289
|
-
end, on
|
|
294
|
+
③ Burn it down at the the six axes below. Adversarial review is ONE of them, not all of them —
|
|
295
|
+
end, on six axes adversariality is a **posture**, not an axis. It can ride on any axis, and
|
|
296
|
+
riding it does not make that axis see what it cannot see
|
|
290
297
|
```
|
|
291
298
|
|
|
292
|
-
**The
|
|
293
|
-
|
|
299
|
+
**The six verification axes** — where "we reviewed it" usually turns out to mean only the first of them.
|
|
300
|
+
|
|
301
|
+
🟥 **Axes are not divided by *how adversarial* they are. They are divided by *what they were given*.**
|
|
302
|
+
Hand two reviewers the same input and **the same blind spot survives**, however many of them you add.
|
|
303
|
+
That is why the column that matters most below is *what it gets*:
|
|
294
304
|
|
|
295
|
-
| Axis |
|
|
305
|
+
| Axis | **What it gets** | What it catches | Typical instrument |
|
|
296
306
|
|---|---|---|---|
|
|
297
|
-
| **ⓐ Different family** | the
|
|
298
|
-
| **ⓑ
|
|
299
|
-
| **ⓒ
|
|
300
|
-
| **ⓓ
|
|
301
|
-
|
|
302
|
-
**
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
307
|
+
| **ⓐ Different family** | the diff + the author's framing | the **implementation** is wrong | a reviewer from another model family (`auto-decorrelation`) |
|
|
308
|
+
| **ⓑ Standpoint** | the diff + **the target harness's own canon** | **whether the rule you cited actually says that** | run the diff from that harness's own repo and rules ([`§7`](knowledge/shared/harness-core/field_verdict_crossfamily_gate.md)) |
|
|
309
|
+
| **ⓒ Isolated grounding** | the sentences the author wrote + the tree as it stands now | the **claim** is wrong | someone who did not write it re-measures what it says |
|
|
310
|
+
| **ⓓ Third-party encounter** | the problem + **someone else's codebase** | **is this already solved** · where your change touches someone else's repo | look at the same problem in an unrelated third repo |
|
|
311
|
+
| **ⓔ First real use** | one real target | the **way you are measuring** is wrong — the instrument's instrument | run it once against one real target and check the result by hand |
|
|
312
|
+
| **ⓕ Revert and observe** | the tree with the wiring deleted | the **anchor** is wrong — the check is decorative | delete the thing it guards and confirm *that specific* check goes red |
|
|
313
|
+
|
|
314
|
+
**You do not run all six every time, and that is the design** — do not multiply them, **choose**:
|
|
315
|
+
|
|
316
|
+
```
|
|
317
|
+
one-line fix (typo · gitignore) nothing burns. Not even ①'s circuit — when there is one answer,
|
|
318
|
+
planting one is overhead
|
|
319
|
+
ordinary code change (reversible) ⓔ first real use + ⓕ revert
|
|
320
|
+
verdict · gate code + ⓐ different family — verdict logic is what a reviewer who
|
|
321
|
+
shares the author's optimism misses **structurally**
|
|
322
|
+
change that touches another + ⓑ standpoint — bolt on three families and if all three eat
|
|
323
|
+
harness your framing, nobody asks "does that canon actually say so"
|
|
324
|
+
very large · irreversible + ⓒ isolation + ⓓ third-party encounter. Burn all of it
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
⚠️ **ⓓ third-party encounter is the most expensive and has the smallest unique yield.** And yet that
|
|
328
|
+
handful were all of the **boundary-crossing** kind (a rule someone else had already retired · someone
|
|
329
|
+
else's repo importing your file). On small, reversible changes such items simply **do not arise**; on
|
|
330
|
+
large irreversible ones those two are exactly what becomes an incident. That is where the cost earns
|
|
331
|
+
itself.
|
|
332
|
+
|
|
333
|
+
**Why this is not superseded by base-model advances** — an axis is defined by its **input**, not by the
|
|
334
|
+
*reviewer's ability*. A stronger model still **cannot see information it was not given.** Scaffolding
|
|
335
|
+
sheds as models improve, but **input-boundary decorrelation does not**, and a single author cannot, by
|
|
336
|
+
definition, step outside their own input. 🟥 Honest edge: if the agent **fetches more input by itself
|
|
337
|
+
with tools**, the boundary blurs — an outside judgment held that "the store is never used in full" and
|
|
338
|
+
"the swallowed exception" are catchable by ⓐ and ⓒ as well, since those reviewers grep for themselves.
|
|
339
|
+
Conversely, "a rule another repo retired long ago" **cannot be fetched by any tool** — there is no reason
|
|
340
|
+
to have access to that project's review history in the first place. That is where ⓓ remains.
|
|
341
|
+
|
|
342
|
+
> 🟥 **Limits to read before citing this**: the six-axis table is **n=1** (one artifact · one session ·
|
|
343
|
+
> one author). Whether the axes' non-overlap is structural or an accident of that day is **unmeasured**.
|
|
344
|
+
> And when the author's self-scoring was stripped out — 16 findings handed, **with their provenance
|
|
345
|
+
> removed**, to two classifiers from other families for blind judgment — **3 of the 5** the author had
|
|
346
|
+
> attributed to ⓓ were judged to belong to a different axis; those three were not "what the axis was
|
|
347
|
+
> needed for" but "what another axis missed". Discount the table's attributions accordingly.
|
|
311
348
|
|
|
312
349
|
> **Honest note — this is not a clean stack, and that is the point.** Stage ① and stage ③ are made of the
|
|
313
350
|
> same material as the engines, so the lower layer uses the upper one. The contradiction resolves on
|
package/README.zh.md
CHANGED
|
@@ -188,7 +188,7 @@ Project B ──→ 在 CLAUDE.md 中连接中枢
|
|
|
188
188
|
|
|
189
189
|
| | 身份 | 一个人得到什么 |
|
|
190
190
|
|---|---|---|
|
|
191
|
-
| **①** |
|
|
191
|
+
| **①** | **框架集群 (Harness cluster)** | 一个任务同时驾驭多个框架,而治理是在它们 *之间* 算出来的。承重的下位机制是 **跨框架 (cross-harness)** — 没有的能力就**调用**(而不是自己造),看到该造的就**吸收** |
|
|
192
192
|
| **②** | **项目孵化器 (Project incubator)** | 新框架出炉时 **就已经会走路**,而不是一副空的脚手架 |
|
|
193
193
|
| **③** | **治理门禁 (Governance gate)** | 不该出货的东西被 **机械地** 拦下,而不是靠记得去检查 |
|
|
194
194
|
| **④** | **前沿 → 组织传导 (Frontier → org propagation)** | 从外部到来的东西,一路落进组织 *内部* |
|
|
@@ -230,8 +230,13 @@ Project B ──→ 在 CLAUDE.md 中连接中枢
|
|
|
230
230
|
四大引擎 让它成为可能的那份能力 (能力 —— 它能做什么)
|
|
231
231
|
↑ 由此产出
|
|
232
232
|
三段工序 那些引擎被锻造出来的「顺序」 (工序 —— 它是怎么被造出来的)
|
|
233
|
+
└ ③ 段 = 六轴门禁 (见下面的 §六条验证轴)
|
|
233
234
|
```
|
|
234
235
|
|
|
236
|
+
便于记忆的形式是:**三段工序 · 四大引擎 · 五重身份 · 六轴门禁**。
|
|
237
|
+
⚠️ 但 **六条轴不是第四层** —— 它们是三段工序里 **③ 段究竟由什么构成**。把这四者读成并排的层,
|
|
238
|
+
就会把本节原本要修的那个「层立不起来」的问题重新招回来。
|
|
239
|
+
|
|
235
240
|
**四大引擎。** 每一个都是上面某个身份所站立的地基。它们不是为这一页发明出来的:出货就绪门禁
|
|
236
241
|
([`ship_readiness_gate.md`](knowledge/shared/harness-core/ship_readiness_gate.md))早就用一个独立
|
|
237
242
|
的列,按这同样四项能力给每一重身份打分,所以给它们命名是识别,而不是搭一套分类法。
|
|
@@ -268,28 +273,53 @@ Project B ──→ 在 CLAUDE.md 中连接中枢
|
|
|
268
273
|
看两遍。并行本身没有方向,挑方向的是 ① 里那套判断坐标系。
|
|
269
274
|
这是一种「工作方式」,不是 ③ 里那道收尾检查。
|
|
270
275
|
|
|
271
|
-
③
|
|
276
|
+
③ 最后在六条轴上烧一遍 也就是下面那六条轴。对抗审阅只是其中一条,不是全部 —— 对抗性是一种
|
|
277
|
+
**姿态**,不是一条轴。它可以搭在任何一条轴上,但搭上去之后,那条轴
|
|
278
|
+
看不见的东西照样看不见
|
|
272
279
|
```
|
|
273
280
|
|
|
274
|
-
|
|
275
|
-
|
|
281
|
+
**六条验证轴** —— 所谓"我们审过了",往往到头来只做了其中第一条。
|
|
282
|
+
|
|
283
|
+
🟥 **轴不是按「有多对抗」来分的,是按「它拿到了什么」来分的。** 拿到的东西一样,你堆多少位审阅者,
|
|
284
|
+
**同一个盲点都会留下来**。所以下面这张表里最重要的一列是 *它拿到什么*:
|
|
276
285
|
|
|
277
|
-
| 轴 |
|
|
286
|
+
| 轴 | **它拿到什么** | 它抓到什么 | 典型手段 |
|
|
278
287
|
|---|---|---|---|
|
|
279
|
-
| **ⓐ 不同家族** |
|
|
280
|
-
| **ⓑ
|
|
281
|
-
| **ⓒ
|
|
282
|
-
| **ⓓ
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
288
|
+
| **ⓐ 不同家族** | diff + 作者的框架叙述 | **实现** 错了 | 换一个模型家族的审阅者(`auto-decorrelation`) |
|
|
289
|
+
| **ⓑ 立场 (standpoint)** | diff + **目标框架自己的正典** | **你引用的那条规约是不是真这么说** | 在那个框架自己的仓库与规则里去跑这份 diff ([`§7`](knowledge/shared/harness-core/field_verdict_crossfamily_gate.md)) |
|
|
290
|
+
| **ⓒ 隔离接地** | 作者写下的那些句子 + 此刻的这棵树 | **主张** 错了 | 找一个没写过它的人,把它说的重新测一遍 |
|
|
291
|
+
| **ⓓ 第三方对面** | 问题 + **别人的代码库** | **这是不是早就被解过了** · 你的变更会碰到别人仓库的哪里 | 在一个无关的第三方仓库里看同一个问题 |
|
|
292
|
+
| **ⓔ 首次真实使用** | 一个实打实的目标 | **你测量的方式** 错了 —— 量具的量具 | 拿一个真实目标真跑一次,然后动手核对那份结果 |
|
|
293
|
+
| **ⓕ 撤回并观察** | 把接线删掉之后的那棵树 | **锚** 错了 —— 那道检查是装饰 | 把它所守护的东西删掉,确认 *正是那一条* 检查变红 |
|
|
294
|
+
|
|
295
|
+
**你不必每次都把六条跑满,这正是设计** —— 别做乘法,要 **挑**:
|
|
296
|
+
|
|
297
|
+
```
|
|
298
|
+
一行小修(typo · gitignore) 一条都不烧。连 ① 的坐标系都不必 —— 答案只有一个时,
|
|
299
|
+
栽一套坐标系本身就是开销
|
|
300
|
+
普通代码变更(可逆) ⓔ 首次真实使用 + ⓕ 撤回
|
|
301
|
+
判定 · 门禁代码 + ⓐ 不同家族 —— 判定逻辑正是那种「与作者共享同一份乐观」的
|
|
302
|
+
审阅者会 **结构性地** 漏掉的东西
|
|
303
|
+
会碰到别人框架的变更 + ⓑ 立场 —— 就算堆三个家族,若三个都吃下了你的框架叙述,
|
|
304
|
+
「那份正典是不是真这么说」就没有人去看
|
|
305
|
+
超大型 · 不可逆 + ⓒ 隔离 + ⓓ 第三方对面。全部烧一遍
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
⚠️ **ⓓ 第三方对面最贵,而且独有的收成最小。** 可偏偏那少数几条全都是 **跨边界** 的那一类(别人
|
|
309
|
+
早就废弃掉的规则 · 别人的仓库 import 了你的文件)。在又小又可逆的变更上,这类条目 **根本不会出现**;
|
|
310
|
+
而在又大又不可逆的时候,恰恰就是这两样会变成事故。成本正当化的位置就在那里。
|
|
311
|
+
|
|
312
|
+
**为什么这一套不会被基础模型的进步取代** —— 一条轴是由 **输入** 定义的,不是由 *审阅者的能力*
|
|
313
|
+
定义的。模型再强,**「没拿到的信息」它依然看不见。** 脚手架会随着模型变好而脱落,但 **输入边界上的
|
|
314
|
+
去相关不会脱落**,而单个作者按定义就走不出自己的输入。🟥 诚实的边缘地带:如果 agent **自己用工具
|
|
315
|
+
去取更多输入**,这条边界就会变模糊 —— 外部判定确实认为「整个存储从未被完整使用」和「异常被吞掉」
|
|
316
|
+
这两条 ⓐ · ⓒ 也能抓到(因为它们会自己 grep)。反过来,「别人的仓库当年废弃掉的某条规则」
|
|
317
|
+
**用工具也取不到** —— 你压根没有理由去访问那个项目的评审历史。ⓓ 留下来的位置就在那里。
|
|
318
|
+
|
|
319
|
+
> 🟥 **引用之前必须读的限制**:这张六轴表是 **n=1**(一份产物 · 一次会话 · 一位作者)。这些轴之间
|
|
320
|
+
> 的「不重叠」究竟是结构性的、还是那一天的偶然,**尚未测量**。而且为了把作者的自评剥掉,把 16 条
|
|
321
|
+
> 发现 **抹去出处** 交给另外两个家族的分类器做盲判之后,作者归给 ⓓ 的 **5 条里有 3 条被判成了别的
|
|
322
|
+
> 轴** —— 那三条不是「非它不可」,而是「别的轴漏掉了」。表里的归属请照此打折读。
|
|
293
323
|
|
|
294
324
|
> **诚实说明 —— 这不是一个干净的分层,而这正是重点。** 工序 ① 和 ③ 与引擎是同一种材料做的,
|
|
295
325
|
> 所以下面那层用到了上面那层。这个矛盾在 *主语* 上化解:**引擎** 是 FH 施加于你的工作的东西,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: fh-three-layer-canon
|
|
3
|
-
description: FH 를 설명하는 3층 정본 — 3단 공정(엔진을 벼리는 순서) · 4대 엔진(그 능력) · 5대 정체성(사람이 실제로 쓰는 기능). 층별 명명 규칙과
|
|
3
|
+
description: FH 를 설명하는 3층 정본 — 3단 공정(엔진을 벼리는 순서) · 4대 엔진(그 능력) · 5대 정체성(사람이 실제로 쓰는 기능). 층별 명명 규칙과 6축 검증의 정의를 포함한다(§1-a 최초 4축 · §1-a-2 2026-08-16 확장).
|
|
4
4
|
date: 2026-08-09
|
|
5
5
|
tags: [canon, three-layer, engines, identity, verification-axes]
|
|
6
6
|
---
|
|
@@ -52,9 +52,36 @@ tags: [canon, three-layer, engines, identity, verification-axes]
|
|
|
52
52
|
범위 밖 · 절대 안 함
|
|
53
53
|
② 중간 탈상관 가속화 축을 골라 동시에 친다. **곱하지 말고 골라라** — 병렬화 자체엔
|
|
54
54
|
방향이 없다(축은 판단 회로가 고른다)
|
|
55
|
-
③ 마무리
|
|
55
|
+
③ 마무리 6축 태우기 §1-a-2 의 여섯 축으로 태운다. **적대검증 하나가 아니다**
|
|
56
56
|
```
|
|
57
57
|
|
|
58
|
+
> 🟥 **이 줄은 2026-08-16 까지 「4축」이었다 — 갱신을 놓쳤던 것이지 별개 개념이 아니다.**
|
|
59
|
+
> 같은 날 `§1-a-2` 가 4축을 6축으로 확장했는데 이 요약줄이 안 따라와서, **`CLAUDE.md` 는 「6축」
|
|
60
|
+
> 이고 여기는 「4축」인 상태가 존재했다.** 그 사이 외부 계열이 작성한 문서 한 건이 실제로 이 줄을
|
|
61
|
+
> 읽고 ③단계를 「4축」으로 서술했다(weekly_audit_2026-08-16 🟥-4).
|
|
62
|
+
>
|
|
63
|
+
> 🟥 **더 위험한 절반은 숫자가 아니라 문자다 — 같은 글자가 두 배열에서 다른 축을 가리킨다.**
|
|
64
|
+
>
|
|
65
|
+
> | 문자 | §1-a (옛 4축) | §1-a-2 (현 6축) |
|
|
66
|
+
> |---|---|---|
|
|
67
|
+
> | ⓐ | 다른 계열 | 계열 *(동일)* |
|
|
68
|
+
> | **ⓑ** | **첫 실사용** | **입장** ← 옛 ⓑ 는 현 **ⓔ** 로 밀렸다 |
|
|
69
|
+
> | ⓒ | 기록 그라운딩 | 격리 그라운딩 *(대응)* |
|
|
70
|
+
> | **ⓓ** | **되돌림 실측** | **3자 대면** ← 옛 ⓓ 는 현 **ⓕ** 로 밀렸다 |
|
|
71
|
+
> | ⓔ | — | 첫 실사용 |
|
|
72
|
+
> | ⓕ | — | 되돌림 실측 |
|
|
73
|
+
>
|
|
74
|
+
> ⚠️ **마커 `axes-run` 은 여전히 옛 배열을 요구한다**(a=계열 · b=첫실사용 · c=격리그라운딩 ·
|
|
75
|
+
> d=되돌림). 즉 **산문 정본은 6축인데 기계는 4축이고, 문자가 어긋난다.** 새 배열로 마커를 쓰면
|
|
76
|
+
> 기계가 **조용히 다른 축으로 읽으며 오류를 내지 않는다.** 확장은 기존 마커 전부를 무효화하므로
|
|
77
|
+
> **운영자 결정 사항으로 열려 있다** — 그때까지 마커를 쓸 때는 **옛 배열**을 쓰고, 산문으로
|
|
78
|
+
> 논할 때는 §1-a-2 의 6축을 쓴다. 이 어긋남을 **알고** 쓰는 것이 현 규율이다.
|
|
79
|
+
>
|
|
80
|
+
> 🟥 그리고 ③단계는 **「결정론적 기계 스크립트」가 아니다.** 여섯 축 중 다섯이 모델/에이전트
|
|
81
|
+
> 판단이고, 기계 앵커가 붙은 축은 현재 **되돌림 하나뿐**이다(§ 아래 «자평이다» 절). ③을
|
|
82
|
+
> pre-commit·exit code 로 서술하면 그건 **커밋 경계의 4축 게이트**(회귀·적대·팬텀·매니페스트)를
|
|
83
|
+
> 말하는 것이며, 둘은 부분적으로만 겹치고 **서로 대체하지 않는다**(`CLAUDE.md` §명칭 충돌).
|
|
84
|
+
|
|
58
85
|
**이건 도구 목록이 아니라 투입 순서다.** 축 없이 병렬부터 던지면 노이즈가 늘고,
|
|
59
86
|
태우기부터 하면 태울 게 없다. 근본 명제(운영자, 2026-08-09):
|
|
60
87
|
|
|
@@ -102,7 +129,7 @@ branch-claim 게이트 ① 영혼 필수 «무엇을 성공으로 볼 것
|
|
|
102
129
|
|
|
103
130
|
**이 층(바깥 하네스를 빌린다)은 이미 정본화돼 있다** — `harness_verification_core_extended.md`
|
|
104
131
|
(2026-08-01, PR #225, ARC CLOSED): "Extended = 멀티하네스 클러스터에서 디스패치된 검증 도구,
|
|
105
|
-
대상 하네스 자신의 검증 독트린 로드 금지(그게 탈상관의 요점)." 실증 N=2(qasp↔FH 슬라이스,
|
|
132
|
+
대상 하네스 자신의 검증 독트린 로드 금지(그게 탈상관의 요점)." ⚠️ 인용은 원문 그대로다 — 그 정체성의 이름은 2026-08-16 에 **「멀티하네스 클러스터」 → 「하네스 클러스터」** 로 줄었다(「멀티」와 「클러스터」가 둘 다 복수를 뜻해 중복이었다). 내용 불변, 상세는 `ship_readiness_gate.md` §①-naming. 실증 N=2(qasp↔FH 슬라이스,
|
|
106
133
|
7건 신규 접지 발견) + `feedback_decorrelation_axis_matches_failure_mode`(2026-08-07, mate PR
|
|
107
134
|
#8, reps=3): 코어 결함은 하네스 무관 일치(6/6), **주변부 발견의 클래스가 하네스별로 갈린다**
|
|
108
135
|
(같은 형태를 이 절이 지금 다시 보고 있다). ⚠️ 이 절의 초판은 이 선례를 못 찾고 "자리가 없다,
|
|
@@ -161,7 +188,17 @@ measurement_needs_control]])에 있다. 표본이 지지하는 건 "바깥 하
|
|
|
161
188
|
**사례 2개**(gitignore vs 게이트)뿐이다. ⓓ 의 «자기 스코프가 가장 나쁘다» 가 구조적인지
|
|
162
189
|
그날 우연인지는 **미측정** — 다음 세션들에서 같은 표를 채워 봐야 안다.
|
|
163
190
|
|
|
164
|
-
### §1-a — 마무리 «4축» (2026-08-09 실측으로 정의)
|
|
191
|
+
### §1-a — 마무리 «4축» (2026-08-09 실측으로 정의) — 🟥 **§1-a-2 로 확장됨. 이 절만 읽고 인용하지 마라**
|
|
192
|
+
|
|
193
|
+
> **이 배열은 현행이 아니다.** 산문 정본은 `§1-a-2` 의 **6축**이다. 이 절은 그 6축이 어떻게
|
|
194
|
+
> 도출됐는지의 **이력**으로 남긴다(§1-a-2 가 이 절을 덮지 않는다고 명시하므로 삭제하지 않는다).
|
|
195
|
+
>
|
|
196
|
+
> 🟥 **인용 전에 반드시**: 아래 문자 ⓑ·ⓓ 는 §1-a-2 에서 **다른 축을 가리킨다** — 옛 ⓑ(첫 실사용)
|
|
197
|
+
> → 현 **ⓔ**, 옛 ⓓ(되돌림) → 현 **ⓕ**. 표는 §1 요약줄 아래에 있다. 이 절의 문자를 그대로
|
|
198
|
+
> 6축 문맥에 옮기면 **조용히 다른 축을 지목하게 된다.**
|
|
199
|
+
>
|
|
200
|
+
> ⚠️ 단 **마커 `axes-run` 은 여전히 이 절의 배열을 요구한다** — 마커를 쓸 때는 여기가 맞고,
|
|
201
|
+
> 산문으로 논할 때는 §1-a-2 가 맞다. 이 어긋남은 미해결이며 운영자 결정 대기다.
|
|
165
202
|
|
|
166
203
|
3단계를 오래 «적대검증» 이라고 불렀으나, 그건 **넷 중 하나**다. 각 축은 **다른 것이 틀린
|
|
167
204
|
경우**를 잡고 **서로를 대체하지 못한다**:
|
|
@@ -183,6 +220,60 @@ measurement_needs_control]])에 있다. 표본이 지지하는 건 "바깥 하
|
|
|
183
220
|
(`[[feedback_decorrelation_not_fanout_cost_boundary]]`).
|
|
184
221
|
|
|
185
222
|
|
|
223
|
+
### §1-a-2 — 4축 → **6축** 확장 (2026-08-15 실측 · 2026-08-16 정본화)
|
|
224
|
+
|
|
225
|
+
위 네 축은 **2026-08-09 실측의 것이고 그대로 유효하다.** 그 뒤 한 산출물(qasp 1막 조건 배치 수리)
|
|
226
|
+
에서 **두 축이 더 섰다.** 이 절은 앞 절을 대체하지 않고 **덧붙인다** — 날짜 박힌 측정을 덮지 않는다.
|
|
227
|
+
|
|
228
|
+
🟥 **확장의 근거가 되는 명제 — 이게 표보다 중요하다**:
|
|
229
|
+
> **축은 «얼마나 적대적인가»로 갈리지 않는다. «무엇을 받았는가»로 갈린다.**
|
|
230
|
+
> 받는 것이 같으면 리뷰어를 몇 명 붙여도 **같은 사각이 남는다.**
|
|
231
|
+
> ⇒ 「근원은 적대검증」은 **정본과 어긋난다.** 적대성은 **자세**지 축이 아니다 — 아무 축에나
|
|
232
|
+
> 얹을 수 있고, 얹어도 그 축이 못 보는 것은 여전히 못 본다.
|
|
233
|
+
|
|
234
|
+
| 축 | **받는 것** | 무엇이 틀린 경우 |
|
|
235
|
+
|---|---|---|
|
|
236
|
+
| ⓐ 다른 계열 | diff + 저자의 프레이밍 | 구현 |
|
|
237
|
+
| **ⓑ 입장** (신규) | diff + **대상 하네스의 정본** | **인용한 규약이 정말 그런가** |
|
|
238
|
+
| ⓒ 격리 그라운딩 | 저자가 쓴 문장 + 지금의 트리 | 주장 |
|
|
239
|
+
| **ⓓ 3자 대면** (신규) | 문제 + **남의 코드베이스** | **이미 풀린 문제 아닌가** · 내 변경이 남의 레포를 어디서 만지나 |
|
|
240
|
+
| ⓔ 첫 실사용 | 실물 대상 한 건 | 재는 방식(계기의 계기) |
|
|
241
|
+
| ⓕ 되돌림 실측 | 배선을 지운 트리 | 앵커 |
|
|
242
|
+
|
|
243
|
+
**저자 자평을 걷어낸 자리**: 발견 16건을 **출처를 지운 채** 봉인된 정답키와 함께 **레포 밖 cwd·
|
|
244
|
+
헤드리스**로 다른 계열 분류자 **둘**에게 독립 판정시켰다. 채점 11/15 · 12/15, 상호 일치 13/15(87%),
|
|
245
|
+
사전 등록한 반증 조건(일치율 50% 미만) 미발동.
|
|
246
|
+
🟥 **그리고 그 판정이 저자를 반증했다** — 저자가 ⓓ에 귀속시킨 **5건 중 3건**을 둘 다 **다른 축**
|
|
247
|
+
으로 판정했다("저장소 전수 미사용"=격리 · "예외 삼킴"=계열). **그 셋은 축이 필요했던 게 아니라
|
|
248
|
+
다른 축이 놓친 것**이다. 살아남은 것은 2건이고, 그 2건에 대해서만 두 계열이 독립으로 나머지 다섯
|
|
249
|
+
축을 «구조적 불가»로 판정했다.
|
|
250
|
+
|
|
251
|
+
**왜 기반 모델 발전으로 대체되지 않나**: 축은 *리뷰어의 능력*이 아니라 **입력**으로 정의된다.
|
|
252
|
+
모델이 세져도 **「받지 않은 정보」는 여전히 못 본다.** 스캐폴딩은 벗겨지지만 **입력 경계 탈상관은
|
|
253
|
+
벗겨지지 않고**, 단일 저자는 정의상 자기 입력을 벗어날 수 없다.
|
|
254
|
+
⚠️ 정직한 가장자리: 에이전트가 **도구로 스스로 입력을 가져오면** 경계는 흐려진다(그래서 위 3건이
|
|
255
|
+
다른 축으로 넘어갔다). 반대로 「남의 레포가 과거에 폐기한 규칙」은 **도구로도 못 가져온다** —
|
|
256
|
+
그 프로젝트의 리뷰 이력에 접근할 이유가 없기 때문이다. 거기가 ⓓ가 남는 자리다.
|
|
257
|
+
|
|
258
|
+
🟥 **기계층은 아직 6축이 아니다 — 그 사실을 여기 적어 둔다(숨기지 않는다).**
|
|
259
|
+
```
|
|
260
|
+
axes-run: a/b/c/d pre-commit 이 **네 글자를 요구**한다 — 2026-08-09 의 네 축 그대로
|
|
261
|
+
standpoint: ⓑ 는 **자기 필드**로 따로 기계화돼 있다(2026-08-14 신설, 닫힌 enum)
|
|
262
|
+
⚠️ 다만 훅/픽스처 검증은 아직 없다(산문 규율)
|
|
263
|
+
ⓓ 3자 대면 **필드가 없다.** 기록할 자리 자체가 없다
|
|
264
|
+
```
|
|
265
|
+
`axes-run` 을 여섯 글자로 넓히는 것은 **기존 마커 전부를 무효화하는 변경**이라 운영자 결정 사항이고,
|
|
266
|
+
**이 절은 그 결정을 대신하지 않는다.** 지금은 산문 정본이 6축이고 기계가 4+1축이라는 상태이며,
|
|
267
|
+
그 어긋남을 **명시된 잔여로 남긴다**.
|
|
268
|
+
|
|
269
|
+
> **한계 — 인용 전에 읽어라**: **n=1**(한 산출물 · 한 세션 · 한 저자). 축의 «비중복»이 구조적인지
|
|
270
|
+
> 그날 우연인지는 **미측정**이다. 축은 **사전 등록되지 않았다**(ⓓ는 세션 도중에 생겼고 그 뒤에
|
|
271
|
+
> 무엇을 잡았나를 셌다 — 사후 분류 편향). 분류자는 **실물을 안 봤고** 저자가 쓴 요약 16문장만
|
|
272
|
+
> 받았다 — 걷어낸 것은 «출처 지식»이지 «저자의 서술»이 아니다. 비용은 부분 실측(서브에이전트
|
|
273
|
+
> 합계 ≈ 1.23M 토큰, 사람 시간 미측정).
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
186
277
|
### §1-c — 자기 대조를 **상시 의무**로 만든 근거 (그리고 그 표본의 한계)
|
|
187
278
|
|
|
188
279
|
`CLAUDE.md` 가 «3층 자기 대조는 상시 의무 · 트리거는 발화가 아니라 자산 접촉» 을 상주로 싣는다.
|
|
@@ -282,7 +373,7 @@ measurement_needs_control]])에 있다. 표본이 지지하는 건 "바깥 하
|
|
|
282
373
|
|
|
283
374
|
| # | 정체성 | 사람이 얻는 것 |
|
|
284
375
|
|---|---|---|
|
|
285
|
-
| ① |
|
|
376
|
+
| ① | 하네스 클러스터 | 한 태스크를 여러 하네스에 태우고 그 사이에서 거버넌스가 계산된다. 하위 기제 **크로스하네스** = 없는 능력을 호출해 쓰고, 지어야 할 것이 보이면 흡수한다 |
|
|
286
377
|
| ② | 프로젝트 인큐베이터 | 새 하네스가 **태어난 자리에서 걷는** 상태로 나온다 |
|
|
287
378
|
| ③ | 거버넌스 게이트 | 못 나갈 것이 기계적으로 막힌다 |
|
|
288
379
|
| ④ | 프런티어→조직 전파 | 바깥에서 온 것이 조직 안까지 착지한다 |
|