@chrono-meta/fh-gate 3.1.3 → 3.2.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.
- package/.claude/rules/fh_4axis_gate.md +1 -1
- package/.claude-plugin/marketplace.json +3 -3
- package/AGENTS.md +6 -0
- package/CLAUDE.md +50 -6
- package/README.ja.md +3 -2
- package/README.ko.md +3 -2
- package/README.md +3 -2
- package/README.zh.md +3 -2
- package/docs/OUTPUT_EVIDENCE.md +1 -1
- package/knowledge/shared/harness-core/claude_md_gate_details.md +26 -0
- package/knowledge/shared/harness-core/fh_three_layer_canon.md +1 -1
- package/knowledge/shared/harness-core/field_verdict_crossfamily_gate.md +46 -0
- package/knowledge/shared/harness-core/governance_engineering_definition.md +89 -0
- package/knowledge/shared/learnings/subagent_invocations_log.yaml +68 -0
- package/knowledge/shared/rules/auto_project_mapping.md +1 -1
- package/package.json +11 -1
- package/plugins/fh-commons/.claude-plugin/plugin.json +1 -1
- package/plugins/fh-commons/skills/preprep/SKILL.md +23 -0
- package/plugins/fh-commons/skills/preprep/fixtures/font_revert_probe.py +92 -0
- package/plugins/fh-commons/skills/preprep/lane_font.py +462 -0
- package/plugins/fh-commons/skills/preprep/preprep.py +16 -1
- package/plugins/fh-commons/skills/preprep/surfaces.example.yaml +17 -0
- package/plugins/fh-commons/skills/preprep/test_lane_font.py +452 -0
- package/plugins/fh-meta/.claude-plugin/plugin.json +1 -1
- package/plugins/fh-meta/CHANGELOG.md +91 -0
- package/plugins/fh-qp/.claude-plugin/plugin.json +1 -1
- package/scripts/doc_claim_triad_scan.py +303 -0
- package/scripts/finding_fleet.sh +180 -0
- package/scripts/finding_pipeline.sh +213 -0
- package/scripts/finding_verifier.sh +144 -0
- package/scripts/finding_verify.py +283 -0
- package/scripts/gate_pathspec_check.sh +1 -0
- package/scripts/gate_shape_scan.sh +106 -0
- package/scripts/selfcheck.sh +50 -0
- package/scripts/test_doc_claim_triad_lanes.sh +124 -0
- package/scripts/test_finding_pipeline_lanes.sh +459 -0
- package/scripts/test_gate_shape_scan_lanes.sh +36 -0
- package/scripts/test_heavy_classifier_lanes.sh +13 -3
- package/scripts/test_preprep_font_lanes.sh +87 -0
- package/templates/.git-hooks/pre-commit +6 -5
- package/templates/PRE-PUBLISH-CHECKLIST.md +29 -0
|
@@ -45,7 +45,7 @@ paths:
|
|
|
45
45
|
|
|
46
46
|
## FH Improvement 4-Axis Auto-Gate (Self-Verification Orchestrator)
|
|
47
47
|
|
|
48
|
-
**Whenever the AI modifies FH assets** (SKILL.md · **`SKILL_detail.md`** · `.claude/rules/*.md` · `knowledge/shared/rules/*.md` (relocated protocol rules — always full-gate, NOT under the knowledge carve-out) · `templates/` · `CLAUDE.md` · substantive `knowledge/` docs · substantive `docs/*.md` · `AGENTS.md` · `scripts/**/*.sh` · agent definitions (`plugins/*/agents/**/*.md` · `.claude/agents/**/*.md`) — see Substantive carve-out below),
|
|
48
|
+
**Whenever the AI modifies FH assets** (SKILL.md · **`SKILL_detail.md`** · `.claude/rules/*.md` · `knowledge/shared/rules/*.md` (relocated protocol rules — always full-gate, NOT under the knowledge carve-out) · `templates/` · `CLAUDE.md` · substantive `knowledge/` docs · substantive `docs/*.md` · `AGENTS.md` · `scripts/**/*.sh` · `scripts/**/*.py` (🟥 `.py` since 2026-09-07 — shipped python under scripts/ was unclassified; 7 shipped files sat outside the gate, `fh_signal_2026-09-07_gate-python-blindspot.md`) · agent definitions (`plugins/*/agents/**/*.md` · `.claude/agents/**/*.md`) — see Substantive carve-out below),
|
|
49
49
|
the 4-axis verification chain runs **automatically before the first commit** of that session.
|
|
50
50
|
No user request is needed — this is a mandatory autonomous step, not a proposal.
|
|
51
51
|
|
|
@@ -11,19 +11,19 @@
|
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "fh-meta",
|
|
14
|
-
"version": "3.
|
|
14
|
+
"version": "3.2.0",
|
|
15
15
|
"description": "New in 2.2.0: BREAKING (gate): chamber step 6 now reads ACTUAL.md, not BUDGET.md — an in-flight chamber run whose actual cost sits in BUDGET.md blocks until the ACTUAL: line moves to tracks/_chamber/<slug>/ACTUAL.md (the runner prints the path). Why: BUDGET.md's pre-verdict hash IS the ordering witness, and step 6 hard-blocked until that same file changed, so every run that reached COMPLETE necessarily mutated a witnessed artifact and verify returned TAMPERED — the chamber's promotion condition was unsatisfiable by construction, not by strictness. Two roles (immutable witness / post-verdict calibration sink) had collided in one file; each was correct alone, so neither side's code showed the conflict. Also: ko-tech-writer Step 2/4-b scans are now calibration-backed (known-pair fixtures + reproducible command, shipped) — discrimination is proven, 'zero residue' is explicitly NOT; chamber lane suite 12 -> 33 including the runner x witness seam no test covered; chamber_run.sh now teaches the two-commit discipline (gate hashes and verdict hash must land in separate commits/PRs — it previously advised the opposite). New in 2.1.0: BREAKING (gate): `crossfamily: declined` in an Axes 2-3 marker now requires grounds naming a record path that RESOLVES on disk — bare `declined`, and `declined` justified by author judgment, are blocked at commit. Remedy: cite where the operator decision lives (e.g. `.. — operator declined sidecars, per knowledge/shared/rules/operational_adaptation.md`), or use `DEGRADED_PANEL_UNUSED` if a panel was reachable and you chose not to recruit it — which is what author judgment actually is. `declined` was the only enum value with no grounds requirement; a cross-family review then broke the first (vocabulary-grep) fix three ways — self-validating on the value's own token, vacuous keyword passes, and over-blocking real declinations in natural prose — so the check asserts a resolvable record instead of words. Also: standpoint axis gains `tier1b` (a STATIC read of a target repo, executed nothing) plus a decide-in-order procedure, after blind floor-tier sims graded pure cold-reads as `tier2` three rounds running; steel-quench Wave 1's sixth angle (gate-locality) gains the output-template row it never had, so a mandatory angle stops being structurally unreportable; verify-bidirectional gains category 5 (prescriptive doctrine statement); Sister Asset Protocol gains an active-adoption trigger; new resident doctrine — Mechanization Boundary, Local Execution First, Skeleton-not-Muscle, Expedition track, and this package's versioning policy. Hub meta-operations toolkit — 35 skills + 7 agents. New in 2.0.1: harness-doctor cadence hook, portability lint wired into pre-commit, branch_claim.sh claim-count-vs-tree-count warning, louder confidentiality-scan fail-open notice, fh-gate.sh missing-package.json survival, identity ① reclassified 🟢 (cross-harness adapters + relay argument channel). New in 1.4.53: `fh-codex-doctor` (npm bin) — Codex adapter drift scanner; reads the documented M1/M2/M3 skill tier map + skill/agent source and reports codex-native/adapter-required/claude-native/unclassified per unit, wired into `npm test`/`prepublishOnly` (fail-closed on unclassified Claude-native primitives). New in 1.4.49: steel-quench gains Step 0.6 Verdict-Invariance Probe (groundedness axis — a load-bearing judged gate's verdict must track behavior, not rubric phrasing; measured flip-count over cross-family paraphrases; arXiv:2605.06161 Policy Invariance anchor); multi_model_sidecar_strategy §Vendor-native harness (a model is strongest in its own vendor CLI — Claude/CC, GPT/codex, Gemini/Antigravity; a universal router degrades all of them, so it stays an autocomplete/QA sidecar, never orchestration); predelete_check.sh fail-closed rewrite; memory-hygiene A-TMA anchor. New in 1.4.48: phantom-quench + steel-quench gain external frontier anchors (arXiv:2607.02052 package-hallucination; arXiv:2607.02057 prompt-coverage-adequacy); README model-flat claim reframed from a per-release point-curve to structural invariants (operation flattens across tiers; depth tier-order fixed within a generation). New in 1.4.47: onboarding step ① surfaces the Mode D companion-store session-start load in the auto-read salience anchor (previously only in the local binding + rules, so a greeting could skip the load). New in 1.4.46: context-doctor command-output axis (route to rtk/proxy for verbose CLI stdout, complementing .claudeignore; risk-gated to token-scarce envs). New in 1.4.41: context-doctor 2026 trigger vocab (context engineering/rot/collapse) + phantom-citation hardening; hub measurement-integrity-checklist (cross-model measurement pre-flight: display-name pin/reps≥3/discriminating probe). New in 1.4.40: install-wizard queryable-wiki scaffold (INDEX + session-start read + R/W/C ingest). New in 1.4.39: auto-decorrelation (cross-family verifier sidecar recruitment) + video-ingest (capability-routed video ingestion). New in 1.4.x: verify-axis check-class taxonomy (mandatory-pass/measured/judged), no-reinvention Tier-0 inventory, 7-class failure taxonomy, Destructive-Op Gate, Wave-T (Temper), tier-floor governance, Mode D Model Notice, FC consent lane, default-Sonnet guidance. New in 1.3.0: public-surface-audit, field-harvest Mode B auto-trigger, 4-axis gate scope ext. Validated cross-CLI: Claude Code, Codex, Gemini.",
|
|
16
16
|
"source": "./plugins/fh-meta"
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
"name": "fh-commons",
|
|
20
|
-
"version": "3.
|
|
20
|
+
"version": "3.2.0",
|
|
21
21
|
"description": "Project-agnostic utility skills — 5 skills (convergence-loop · deliberation · mcp-circuit-breaker · token-budget-gate · ko-tech-writer) + 1 agent (quench-challenger). Domain-independent utilities transplantable into any project.",
|
|
22
22
|
"source": "./plugins/fh-commons"
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"name": "fh-qp",
|
|
26
|
-
"version": "3.
|
|
26
|
+
"version": "3.2.0",
|
|
27
27
|
"description": "QP (Quality Platform) — the generic edition of a field QA harness's Prepare→Automation→Regression loop as an FH plugin: 4 skills (qp router · qp-plan · qp-run · qp-regress) + qp_tools.sh (target-class · adapter-probe · mask · surface-reach · mtm-check · run-verbs, typed exit codes) + a zero-domain-constant profile slot + 29 known-pair lanes. Drives web targets through the session's Playwright MCP and desktop targets through computer-use MCP (mobile deferred); calls a registered qasp typed capability when one exists (strictest-wins) — none is registered today, so the MCP fallback is the first edition. Verdict contract: a MACHINE closure requires a recorded assertion; a failed first step is attributed BLOCKED, not FAIL; surface_reach counts every TC in the denominator. Born as chamber run #18 (EMIT, 2026-09-05).",
|
|
28
28
|
"source": "./plugins/fh-qp"
|
|
29
29
|
}
|
package/AGENTS.md
CHANGED
|
@@ -120,6 +120,12 @@ Because non-Claude runtimes do not auto-load Claude path rules, apply these rule
|
|
|
120
120
|
require instrument suspicion.
|
|
121
121
|
6. **Irreversible intent:** before publish, delete, or history rewrite, read and apply the
|
|
122
122
|
Pre-Publish or Destructive-Op gate in `CLAUDE.md`. `pre-push` is only the git-side backstop.
|
|
123
|
+
**An automated verdict never clears an irreversible gate on its own, whatever its measured error
|
|
124
|
+
rate.** Surface class decides, not the number: a wrong finding on a review surface costs a reader
|
|
125
|
+
a minute, while on publish/delete/rewrite the wrong call is the whole loss. So improving a verdict
|
|
126
|
+
engine's score is not a route to promoting it onto an irreversible surface — the terminal step
|
|
127
|
+
stays a human or an explicit logged override. This matters here because a non-Claude runtime
|
|
128
|
+
reading this file is itself often the verdict engine in question.
|
|
123
129
|
7. **Self-contrast on asset touch:** the trigger for the three-layer self-contrast (process ·
|
|
124
130
|
engines · identities) is *touching an FH/PMH asset*, not being asked. Pick verification axes by
|
|
125
131
|
failure mode — running all six every time is not the rule. Record, in the existing Axes 2–3
|
package/CLAUDE.md
CHANGED
|
@@ -41,7 +41,7 @@ core invariants never melt). The nursery also **verifies what it births**: harne
|
|
|
41
41
|
| **① Control Tower** | Coordinates all connected projects and **drives harness-ification across them** — decides *which* projects to harness and *when*, propagates harness assets to each, and feeds their synced learnings into the hub's compounding loop. The *how* (rules · gates · 6-axis) is executed via the Core Axis. Command HQ, not a passive registry. | `knowledge/shared/rules/auto_project_mapping.md` (mapping + **Full-Harness Mode**) · `harvest-loop` (compounding loop) · `templates/` (project-harness bundle) · `CATALOG.md` |
|
|
42
42
|
| **② 프런티어 답습 · Frontier absorption** | 확신이 안 서는 자리에서 **책장(우리가 이미 가진 것) → 도서관(세상이 이미 만든 것)** 순으로 먼저 뒤진다. 목적은 **재발명 차단**이지 외부 인용으로 똑똑해 보이는 것이 아니다. | `knowledge/shared/harness-core/harness_frontier_diagnosis_*.md` · `knowledge/{your-org}/` |
|
|
43
43
|
| **③ AI Collaboration Guide** | Accumulates and distributes best practices for token efficiency and dialogue methodology — "how to ask, delegate, and record". | `CHEATSHEET.md` · `knowledge/shared/dialogue/ai_dialogue_playbook.md` · `MEMORY.md` intent-based + associative recall (`knowledge/shared/dialogue/memory_intent_recall.md`) |
|
|
44
|
-
| **Core Axis** | **Harness Engineering (How)** — the methodology and practice axis that realizes the three layers above. The 6-axis framework is the operating unit. **A harness is a means, not an end** — Field harness: "simpler over time" (complexity = warning signal). Meta-harness: *optimize*, not necessarily simplify — complexity earns its scope; red flags are orphaned, redundant, and decorative units, not complexity itself. | `harness_6axis_framework.md` · `hub_compounding_loop.md` · `claude_code_runtime_flow.md` · `plugins/*/agents/` (sub-agents) |
|
|
44
|
+
| **Core Axis** | **Harness Engineering (How)** — the methodology and practice axis that realizes the three layers above. The 6-axis framework is the operating unit. **A harness is a means, not an end** — Field harness: "simpler over time" (complexity = warning signal). Meta-harness: *optimize*, not necessarily simplify — complexity earns its scope; red flags are orphaned, redundant, and decorative units, not complexity itself.<br>**And what it is a means *to* is Governance Engineering (What for)** — 🐿️ *«수치를 목표로 움직이되, 그 수치가 게이트를 열지는 않는다»*: drive the error rate toward 0.x% **and** hold the surfaces where no number buys passage. Two verbs, and the second one carries the load — drop it and the discipline decays into "lower the number and the gate opens", which §Irreversibility Gates forbids by name. Measured content, not a slogan: five review arms ran **2.7 %–13.6 %** claim-error on the same eight cases — every one usable on a review surface, **not one** usable on publish/delete/rewrite. That distance is why this axis exists. Canon: `governance_engineering_definition.md` (operator formulation 2026-09-09; the term exists in IT/data governance — what is ours is the referent, and an outbound claim of novelty owes a stated delta, never mere absence of prior use). | `harness_6axis_framework.md` · `hub_compounding_loop.md` · `claude_code_runtime_flow.md` · `plugins/*/agents/` (sub-agents) |
|
|
45
45
|
|
|
46
46
|
> **번호가 둘이다 — 이 표의 ①②③ 은 «3층 미션»이고, 정체성 등급표의 ①~④·Ⓑ 는 «5대 정체성»이다.**
|
|
47
47
|
> 같은 것을 다르게 세는 게 아니라 **다른 분류**이므로 번호가 어긋나도 모순이 아니다. 여기 **②**(프런티어 답습)는
|
|
@@ -570,7 +570,7 @@ Every new `SKILL.md` must clear a **6-item bar** (role-duplication via `/asset-p
|
|
|
570
570
|
|
|
571
571
|
## FH Improvement 4-Axis Auto-Gate (Self-Verification Orchestrator)
|
|
572
572
|
|
|
573
|
-
**FH 자산을 수정하면**(SKILL.md · **SKILL_detail.md** · `.claude/rules/*.md` · `knowledge/shared/rules/*.md` · `templates/` · `CLAUDE.md` · substantive `knowledge/`·`docs/*.md` · `AGENTS.md` · **`scripts/**/*.sh`** · **에이전트 정의**(`plugins/*/agents/**/*.md` · `.claude/agents/**/*.md`)) **4축 검증 체인이 그 세션 첫 커밋 전에 자동 실행된다.** 사용자 요청 불요 — 제안이 아니라 의무 단계다.
|
|
573
|
+
**FH 자산을 수정하면**(SKILL.md · **SKILL_detail.md** · `.claude/rules/*.md` · `knowledge/shared/rules/*.md` · `templates/` · `CLAUDE.md` · substantive `knowledge/`·`docs/*.md` · `AGENTS.md` · **`scripts/**/*.sh`** · **`scripts/**/*.py`**(`.py` 는 2026-09-07 부터 — 그 전엔 출하 파이썬 7개가 게이트 밖이었다) · **에이전트 정의**(`plugins/*/agents/**/*.md` · `.claude/agents/**/*.md`)) **4축 검증 체인이 그 세션 첫 커밋 전에 자동 실행된다.** 사용자 요청 불요 — 제안이 아니라 의무 단계다.
|
|
574
574
|
|
|
575
575
|
**기계층 — 무엇이 실제로 막는지 나눠서 말한다(2026-08-04 실측).** `git commit` 은 `templates/.git-hooks/pre-commit` 이 **하드 차단**한다: 축이 전부 PASS 할 때까지 커밋이 안 되고, 아래 상세가 로드되지 않아도 훅이 막는다 — 이 산문은 훅 위의 살리언스 층이지 유일 floor 가 아니다. 다만 **훅은 클라이언트측이고 `--no-verify` 로 우회된다**(§Integration branch 가 이미 그렇게 말한다 — 두 곳이 어긋나 보이던 것을 여기서 맞춘다). **그리고 서버측 검증엔 남은 잔여가 있다(2026-08-12 재확인 — `contexts=[]` 서술은 stale, 정정됨)**: `main` 은 `enforce_admins: true` 로 **푸시 경로**(PR 경유)를 강제하고, legacy `required_status_checks.contexts` 는 **`["validate"]`** — `validate` 잡(`.github/workflows/validate.yml`, 메타데이터·`selfcheck.sh` 배선 레인)이 실제 **필수 체크**다. ⚠️ **`validate` 는 Axis 1 이 아니다** — Axis 1(`regression-guard.yml` → `templates/regression_guard.sh`)은 여전히 필수 체크가 **아니고**, 그 워크플로의 `paths:` 필터가 `SKILL.md`·`.claude/rules/*.md`·`CLAUDE.md`·`templates/*.md` 만 보므로 이 절이 4축 대상으로 나열한 `knowledge/shared/rules/*.md`·`docs/*.md`·`AGENTS.md`·`scripts/**/*.sh`·에이전트 정의·`SKILL_detail.md` 만 바뀐 PR 에는 **Axis 1 자체가 돌지도 않는다**. `validate` 쪽 남은 갭은 `strict: false`: 그 체크는 PR 브랜치에 푸시할 때마다 재실행되지만(오픈 시점 한정이 아니다), 그 뒤 main 이 움직여도 재검증을 강제하지 않으므로 **초록으로 남아 있는 체크가 실제로 병합되는 최신 트리를 본 적이 없을 수 있다.** 즉 서버가 강제하는 건 *체크가 초록인가*지 *그 체크가 지금의 main 을 봤는가*가 아니다. Axes 2–3(마커)·Axis 4(매니페스트)는 그 파일들이 `tracks/**` 로 gitignored 라 CI 가 **구조적으로 볼 수조차 없다**. 정직한 표현은 "하드 차단"이 아니라 "**가용한 가장 강한 층**"이다. **미해결 잔여**: `strict` 를 켜는 것도, Axis 1 을 필수 체크로 걸거나 그 `paths:` 를 넓히는 것도 운영자 결정이다(막 flaky 레인을 하나 기록한 참이라, 과차단이 override 를 습관화시키는 쪽으로 기울 수 있다).
|
|
576
576
|
|
|
@@ -591,7 +591,32 @@ optimistic reading and miss it.**
|
|
|
591
591
|
**Trigger (per changed file — grep-assisted, salience-dependent, no field hook)**: an AI-authored
|
|
592
592
|
change to a **verdict/gate enum or exit code** (PASS/FAIL/BLOCK/allow/deny), an **irreversible-op**
|
|
593
593
|
path (publish/delete/history-rewrite), or a **safety invariant** (floor, verdict-binding, a
|
|
594
|
-
pre-push/pre-commit hook).
|
|
594
|
+
pre-push/pre-commit hook). 🟥 **Registration is not a precondition** (operator decision
|
|
595
|
+
2026-09-08). When the session is asked for a **merge / landing verdict** on a file that is gate code,
|
|
596
|
+
this gate applies **whether or not** the file's project is mapped, tracked, or in a repo this hub
|
|
597
|
+
knows. Two narrowings keep that from becoming «every review is a gate»: ⓐ the ask must be a
|
|
598
|
+
**verdict on landing** (merge / ship / approve — a read-only explanation or a refactor question is
|
|
599
|
+
not one) · ⓑ «gate code» is decided by **`bash scripts/gate_shape_scan.sh <file>`** — word-bounded
|
|
600
|
+
verdict identifiers (a **closed** list — allow/deny/permit/approve·approval/verdict/permission/
|
|
601
|
+
auth·authn·authz·authorize·authorization·authenticat*·auth_x; `author` and `allowance` do not match;
|
|
602
|
+
uppercase `PASS|FAIL|BLOCK`), a bind/listen exposure, or an irreversible-op call; comment-led lines
|
|
603
|
+
skipped; binary → `UNSCANNABLE`, and **exit 3 dominates a hit** — never a silent miss (known-pair
|
|
604
|
+
lane `scripts/test_gate_shape_scan_lanes.sh`, 9 lanes incl. a revert probe).
|
|
605
|
+
The task *naming* the file as gate/auth/exposure code is a **manual escalation on top**, not part
|
|
606
|
+
of the classifier — a prompt is not a property of the file. ⓒ **FH-owned assets are excluded** —
|
|
607
|
+
they already carry the 4-axis gate; this gate is for *field* code, mapped or not. Record surface for
|
|
608
|
+
an unmapped file: `tracks/_meta/field_gate_review_<YYYY-MM-DD>_<slug>.md` (file · verdict ·
|
|
609
|
+
`crossfamily:` verbatim from the enum · degrade-scan result · regression test landed-or-owed), and
|
|
610
|
+
the reply links it. An **owed** regression test keeps the verdict `NOT-CONVERGED`; it does not
|
|
611
|
+
converge on a promise. 🟥 **Pilot evidence, below bar, and CUE-DEPENDENT** (floor tier, blind, one
|
|
612
|
+
variable — this paragraph injected): **before 0/1** — *"FH 자산도 매핑된 필드 하네스도 아니라서 …
|
|
613
|
+
적용 대상이 아닙니다"*, reviewed bare; **after 2/3** ran the gate. Both arms' prompt ended with *"네가
|
|
614
|
+
설치된 리뷰 절차가 있으면 그것을 따라라"*. 🟥 **Without that cue the gate fired 0/51** (same day, 17
|
|
615
|
+
unmapped gate-shaped files × 3, same doctrine in the clone, task sentence only). So this paragraph is
|
|
616
|
+
muscle, not skeleton: a session must be *reminded* to run its own procedure, and no hook supplies the
|
|
617
|
+
reminder yet (`fh_signal_2026-09-08_gate-needs-cue.md`). Do not cite 2/3 without the cue condition.
|
|
618
|
+
Registration was never the reason this gate exists; the degrade-direction blind spot is, and it
|
|
619
|
+
does not check who owns the file. Grep the diff for verdict-enum returns / gate exits / safety-marked
|
|
595
620
|
functions — strong-advisory trigger, so under-trigger is a named residual, not an airtight claim.
|
|
596
621
|
|
|
597
622
|
**Gate (before merge, not after)**: ① **degrade-direction lint**
|
|
@@ -772,6 +797,19 @@ when the surface genuinely lacks its target (e.g. the code-security pass is N/A
|
|
|
772
797
|
list ships no source/executable file — **grep the file list, don't assert "docs-only"**).
|
|
773
798
|
*Applicable-but-tooling-down* is never not-applicable.
|
|
774
799
|
|
|
800
|
+
**Surface class sets the error budget, not only the degrade direction** (operator decision 2026-09-08).
|
|
801
|
+
The same automated verdict engine is usable on one surface and not on another, and the discriminator is
|
|
802
|
+
what a wrong verdict costs. Measured that day across five review arms on the same eight cases: claim
|
|
803
|
+
error rates ran **2.7 % – 13.6 %**, and every one of them is usable *on a review surface*, because a
|
|
804
|
+
wrong finding costs a reader a minute. On publish · delete · history-rewrite there is no "costs a
|
|
805
|
+
minute": the wrong call is the whole loss. 🟥 **So an automated verdict never clears an irreversible
|
|
806
|
+
gate on its own, however good its measured rate** — it feeds a fail-closed gate whose terminal step
|
|
807
|
+
stays a human or an explicit logged override. The corollary is the one that actually bites: **do not
|
|
808
|
+
promote a verdict engine to an irreversible surface by improving its number.** The number is not the
|
|
809
|
+
property that changes between the two surfaces. A precision figure also improves for free whenever the
|
|
810
|
+
pipeline can *delete* claims, so on any surface it is meaningless beside the error rate of the
|
|
811
|
+
deletions (`scripts/finding_verify.py` refuses to complete a run whose drops were never audited).
|
|
812
|
+
|
|
775
813
|
A gate guarding an irreversible boundary that silently proceeds when its tooling is down is **fail-open**
|
|
776
814
|
— by this floor's definition, not a gate. (The same reflex already ships piecewise — `mcp_tool_gating
|
|
777
815
|
§unlisted → ask (fail-closed)`, corpus-grounding's fail-closed-no-generator — this section names the
|
|
@@ -801,7 +839,13 @@ before any scrub. So the audit must fire **pre-publish**, not after.
|
|
|
801
839
|
**When this gate fires** — *before* any action that makes a repo/package **publicly visible for the
|
|
802
840
|
first time**, especially one **derived from internal/company assets** (operator-IP that originated in a
|
|
803
841
|
private harness): `gh repo create --public`, `gh repo edit --visibility public`, a first push to a new
|
|
804
|
-
public remote, `npm publish`, `twine upload`, a private→public visibility flip
|
|
842
|
+
public remote, `npm publish`, `twine upload`, a private→public visibility flip, **and a scholarly
|
|
843
|
+
deposit** — Zenodo / figshare / OSF publish, a DOI mint or new version, an arXiv `submit` / `replace`:
|
|
844
|
+
**any action that mints or alters a persistent public identifier**, first-time or not. 🟥 **What the
|
|
845
|
+
form shows is not what the server received** — check the deposit's draft **API**, the file **md5**, and
|
|
846
|
+
the **machine-readable fields** (references · related identifiers · dates) separately from the body:
|
|
847
|
+
`templates/PRE-PUBLISH-CHECKLIST.md` **Step 1b** (four items, un-hookable surface — prose is the floor;
|
|
848
|
+
measured case: `claude_md_gate_details.md §Pre-Publish-Hook-Coverage`).
|
|
805
849
|
|
|
806
850
|
**Required before the public action** (all must be non-LEAK/non-FAIL) — this gate is the **umbrella that
|
|
807
851
|
invokes them**, not a competitor; when publish intent is detected, fire *this* gate (it then runs the chain),
|
|
@@ -938,7 +982,7 @@ Proposal format: `"I see [X]. Want me to run /[skill] to [one-line description]?
|
|
|
938
982
|
| "connect a project", "map this project", "link to hub" | `auto_project_mapping.md` (mapping) |
|
|
939
983
|
| "harness-ify this project", "full harness setup", "프로젝트 하네스화", "promote to full harness" | `auto_project_mapping.md §6` (Full-Harness Mode) |
|
|
940
984
|
| "check install", "verify setup", "confirm install", "install-doctor" | `/install-doctor` |
|
|
941
|
-
| "publish", "make public", "make this repo public", "go public", "gh repo create --public", "flip to public", "first public push", "publish the package", "npm publish", "twine upload", **opening/updating a PR or pushing content to the public hub** (esp. company-origin) (publish intent — **proactive**, fire *before* the action; adding content to an already-public repo IS publishing that content) | **Pre-Publish Surface Gate** (see above → `/public-surface-audit` + `/marketplace-gate` Check 5 must PASS first). The commit-time half is now **hook-enforced** (mechanical confidentiality scan — see Pre-Publish Gate §Hook coverage (b)), so this proactive trigger is the salience layer over a mechanical floor. |
|
|
985
|
+
| "publish", "make public", "make this repo public", "go public", "gh repo create --public", "flip to public", "first public push", "publish the package", "npm publish", "twine upload", **"zenodo", "figshare", "OSF", "DOI", "DOI mint / 발급", "new version" under a concept DOI, "arXiv submit / replace / 제출", "예치", "deposit"** (scholarly deposit — the deposit's *metadata* is the surface, not only its PDF), **opening/updating a PR or pushing content to the public hub** (esp. company-origin) (publish intent — **proactive**, fire *before* the action; adding content to an already-public repo IS publishing that content) | **Pre-Publish Surface Gate** (see above → `/public-surface-audit` + `/marketplace-gate` Check 5 must PASS first). The commit-time half is now **hook-enforced** (mechanical confidentiality scan — see Pre-Publish Gate §Hook coverage (b)), so this proactive trigger is the salience layer over a mechanical floor. |
|
|
942
986
|
| "delete the branch", "브랜치 삭제", "브랜치 정리", "clean up branches", "force-push", "rewrite history", "지워도 돼?" (destructive intent — **proactive**, fire *before* the action) | **Destructive-Op Gate** (see above → enumerate → recover → destroy; `templates/predelete_check.sh`) |
|
|
943
987
|
| **"새 기능 검증해줘", "test this feature", "이 TC 확인해줘" — verifying the user's PRODUCT/feature (not FH itself)** | **Route to the mapped field harness first** (Cross-Project Skill Bus / registry) — the field harness owns product verification. The harness-verification rows in this table (`verify-bidirectional` · `prompt-regression` · `sim-conductor` · `pipeline-conductor`) verify the *harness*, and must not shadow a product-verification ask (a field project's *harness assets* — its skills/rules — still use those FH verification rows) |
|
|
944
988
|
| "지난주에 뭐 했지", "what did we do last week", "예전에 이거 한 적 있나" (recall intent) | **CATALOG-first recall** — read `CATALOG.md`, identify candidates by tag/date, then open only those files. Never scan session files one by one |
|
|
@@ -955,7 +999,7 @@ Proposal format: `"I see [X]. Want me to run /[skill] to [one-line description]?
|
|
|
955
999
|
| "memory feels bloated", "clean up memory", "memory too large", "memory hygiene" | `/memory-hygiene` |
|
|
956
1000
|
| **사람이 읽을 산출물이 나가기 직전** — README·가이드·리포트·장표·PR 본문 등 «독자가 여는» 것 (proactive; 코드가 옳아도 걸린다 — 이 행이 잡는 건 정확성이 아니라 **가독성**이다) | **독자로서 한 번 읽어라** — 첫 8줄에 결론이 있나 · 본문이 고정 템플릿에 덮이지 않나 · 마지막 인상이 무엇인가. 렌즈는 이미 있다: `/sim-conductor` A-1(`beginner` cold-read) 또는 직접 렌더해서 읽기. 🟥 **정적 검사는 「없는 것」을 잡고 「안 읽히는 것」은 못 잡는다** — 실측 2건이 독립 수렴했다(qasp 축: 지적 12건 중 스캐너 적발 0 · gstack 3자대면: 배포된 리포트 본문 3줄 vs 고정 템플릿 21줄). pre-commit 이 같은 상기를 advisory 로 낸다(차단 아님) |
|
|
957
1001
|
| "ready to PR", "about to push", "merge this", "PR 올려줘", FH asset changed in session | 4-axis auto-gate (see above — runs automatically, no proposal needed) |
|
|
958
|
-
| **field verdict/gate/safety/irreversible code changed** in a mapped project (function returning a verdict enum / gate exit code / safety-invariant · publish/delete/history path) — **proactive, before merge** | **Field-Harness Load-Bearing Change Gate** (see above → degrade-lint → cross-family review → converge; same rigor as FH assets, applied to field code) |
|
|
1002
|
+
| **field verdict/gate/safety/irreversible code changed** in a mapped project **— or a merge/landing verdict asked on any gate-shaped file, mapped or not** (function returning a verdict enum / gate exit code / safety-invariant · access-control / approval / auth / exposure boundary · publish/delete/history path; «gate-shaped» = the mechanical identifier test in §Field-Harness Load-Bearing Change Gate, not a feel) — **proactive, before merge** | **Field-Harness Load-Bearing Change Gate** (see above → degrade-lint → cross-family review → converge; same rigor as FH assets, applied to field code) |
|
|
959
1003
|
| **a diff (yours or an unattended pipeline's) alters another harness's actual behavior, gate outcome, or interaction contract** — building automation that opens PRs autonomously, touching a synced/shared-body surface, or any change whose effect crosses a harness boundary (not merely a file-class match — most self-improvement is `not-applicable` here, which is the expected common case) — **proactive, before push, never as a post-PR comment** | **Standpoint axis** (`knowledge/shared/harness-core/field_verdict_crossfamily_gate.md §7` — orthogonal to `crossfamily:`; run the diff from the TARGET harness's own repo/standpoint via `tier2`/`tier2b`/`tier3`, or record `not-applicable`/`DEGRADED_*` on the closed enum. Missed once in-session while building `scripts/frontier_digest_autopilot.sh` 2026-08-15 — mis-routed to `fh-meta:hub-cc-pr-reviewer` (same-repo self-consistency, a different lens) before the operator caught it; this row exists so the next session connects the trigger without two rounds of correction.) |
|
|
960
1004
|
| **"진단해줘", "개선해줘", "diagnose this", "improve this harness", "check this project", "audit this project"** — said while working **in a mapped project** (not a single-file ask) | **Field-Harness Diagnostic** (see §Field-Harness Diagnostic above → compose existing checks into one ranked M/S/R list → HITL approval per item, nothing auto-fixed) |
|
|
961
1005
|
| **"새 프로젝트", "하네스 작성해줘", "이 프로젝트 가속화", "harness-ify this", "accelerate this project"** — an onboarding/acceleration door (returning-menu ①②③) | **Onboarding / Acceleration Autopilot** (see §Onboarding / Acceleration Autopilot above → Phase 0 auto-discover + branch → innovator-centered recommend → ranked install plan → HITL per item, non-overwriting; "끝까지 자율로" → full-autonomy under /goal-quench gate) |
|
package/README.ja.md
CHANGED
|
@@ -437,7 +437,8 @@ Claude Code は作業の複雑さでモデルを自動選択しません — こ
|
|
|
437
437
|
| [`tracks/_contrib/`](tracks/_contrib/README.md) | **同意レーン** — 非識別化した作業セッションを共有; レポが運用者たちにまたがって複利で積み上がる |
|
|
438
438
|
|
|
439
439
|
> **FH 論文**: v1.0.1 方法論 · [Zenodo](https://zenodo.org/records/22542168) (DOI
|
|
440
|
-
> 10.5281/zenodo.22542168) · cs.SE companion v1.2
|
|
441
|
-
> [Zenodo](https://zenodo.org/records/
|
|
440
|
+
> 10.5281/zenodo.22542168) · cs.SE companion v1.2.2、プレプリント公開 ·
|
|
441
|
+
> [Zenodo](https://zenodo.org/records/22674575) (DOI 10.5281/zenodo.22674575) ·
|
|
442
|
+
> [arXiv:2609.04218](https://arxiv.org/abs/2609.04218) (v2 は 2026-09-09 公開 — §6.7 を追加し、タイトルの主張を格下げ。Zenodo v1.2.2 も同日に同一内容で公開され、両者は一致する) · cs.AI companion は
|
|
442
443
|
> 準備中。これら、独立した収束的研究、そしてそれぞれの但し書き:
|
|
443
444
|
> [`docs/OUTPUT_EVIDENCE.md`](docs/OUTPUT_EVIDENCE.md)。
|
package/README.ko.md
CHANGED
|
@@ -425,7 +425,8 @@ Claude Code 는 작업 복잡도로 모델을 자동 선택하지 않습니다.
|
|
|
425
425
|
| [`tracks/_contrib/`](tracks/_contrib/README.md) | **동의 레인** — 비식별화된 작업 세션 공유. 레포가 운영자들에 걸쳐 복리로 쌓임 |
|
|
426
426
|
|
|
427
427
|
> **FH 논문**: v1.0.1 방법론 · [Zenodo](https://zenodo.org/records/22542168) (DOI
|
|
428
|
-
> 10.5281/zenodo.22542168) · cs.SE companion v1.2,
|
|
429
|
-
> [Zenodo](https://zenodo.org/records/
|
|
428
|
+
> 10.5281/zenodo.22542168) · cs.SE companion v1.2.2, 프리프린트 공개 ·
|
|
429
|
+
> [Zenodo](https://zenodo.org/records/22674575) (DOI 10.5281/zenodo.22674575) ·
|
|
430
|
+
> [arXiv:2609.04218](https://arxiv.org/abs/2609.04218) (v2 는 2026-09-09 등재 — §6.7 신설 · 제목의 주장 등급강등. Zenodo v1.2.2 도 같은 날 같은 내용으로 발행돼 두 예치가 일치한다) · cs.AI companion
|
|
430
431
|
> 준비 중. 이것들과 독립적인 수렴 연구, 그리고 각각의 주의사항:
|
|
431
432
|
> [`docs/OUTPUT_EVIDENCE.md`](docs/OUTPUT_EVIDENCE.md).
|
package/README.md
CHANGED
|
@@ -416,7 +416,8 @@ and the phrase that triggers it:
|
|
|
416
416
|
| [`tracks/_contrib/`](tracks/_contrib/README.md) | **Consent lane** — share a de-identified work session; the repo compounds across operators |
|
|
417
417
|
|
|
418
418
|
> **FH papers**: v1.0.1 methodology · [Zenodo](https://zenodo.org/records/22542168) (DOI
|
|
419
|
-
> 10.5281/zenodo.22542168) · cs.SE companion v1.2,
|
|
420
|
-
> [Zenodo](https://zenodo.org/records/
|
|
419
|
+
> 10.5281/zenodo.22542168) · cs.SE companion v1.2.2, preprint ·
|
|
420
|
+
> [Zenodo](https://zenodo.org/records/22674575) (DOI 10.5281/zenodo.22674575) ·
|
|
421
|
+
> [arXiv:2609.04218](https://arxiv.org/abs/2609.04218) (v2 announced 2026-09-09 — adds Sec. 6.7 and downgrades the title's claim; Zenodo v1.2.2 was published the same day with the same content, so the two deposits agree) · cs.AI companion in
|
|
421
422
|
> preparation. Those, the independent convergent work, and the caveats on each:
|
|
422
423
|
> [`docs/OUTPUT_EVIDENCE.md`](docs/OUTPUT_EVIDENCE.md).
|
package/README.zh.md
CHANGED
|
@@ -404,7 +404,8 @@ Claude Code 不会按任务复杂度自动选择模型 —— 这个要你设置
|
|
|
404
404
|
| [`tracks/_contrib/`](tracks/_contrib/README.md) | **同意通道** —— 分享一个去标识化的工作会话;仓库在众多操作者之间复利累积 |
|
|
405
405
|
|
|
406
406
|
> **FH 论文**:v1.0.1 方法论 · [Zenodo](https://zenodo.org/records/22542168)(DOI
|
|
407
|
-
> 10.5281/zenodo.22542168)· cs.SE companion v1.2
|
|
408
|
-
> [Zenodo](https://zenodo.org/records/
|
|
407
|
+
> 10.5281/zenodo.22542168)· cs.SE companion v1.2.2,预印本公开 ·
|
|
408
|
+
> [Zenodo](https://zenodo.org/records/22674575)(DOI 10.5281/zenodo.22674575)·
|
|
409
|
+
> [arXiv:2609.04218](https://arxiv.org/abs/2609.04218)(v2 于 2026-09-09 公布 — 新增 §6.7 并下调标题主张;Zenodo v1.2.2 于同日以相同内容发布,两处存档一致)· cs.AI companion
|
|
409
410
|
> 筹备中。这些、独立的收敛性工作,以及每一项的注意事项:
|
|
410
411
|
> [`docs/OUTPUT_EVIDENCE.md`](docs/OUTPUT_EVIDENCE.md)。
|
package/docs/OUTPUT_EVIDENCE.md
CHANGED
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
| Artifact | Reference |
|
|
37
37
|
|---|---|
|
|
38
38
|
| Paper v1.0.1 — methodology | Zenodo DOI [`10.5281/zenodo.22542168`](https://zenodo.org/records/22542168) (all versions: `10.5281/zenodo.20397565`) — 2-layer design, 6-axis framework, 4-agent orchestration, compounding loop, with empirical evidence. **arXiv: rejected at moderation (2026-09-06)**; v1.0.1 is the corrected version (11 of 17 reference entries in v1.0 did not match the works cited — see the erratum in the record). Do not read the rejection as an assessment of the methodology, and do not read v1.0.1 as re-reviewed: it has not been resubmitted |
|
|
39
|
-
| cs.SE companion — governance-gate methodology | **
|
|
39
|
+
| cs.SE companion — governance-gate methodology | **preprint, publicly posted** · Zenodo DOI [`10.5281/zenodo.22674575`](https://zenodo.org/records/22674575) (v1.2.2; the record's description carries the per-version change notes — v1.2 added the replication section and withdrew two previously reported results; v1.2.1 propagates that withdrawal into the abstract and the conclusion, which v1.2 had left unrevised; v1.2.2 adds Sec. 6.7 and downgrades the title and abstract accordingly; all versions `10.5281/zenodo.20680080` · CC-BY-4.0) · [`arXiv:2609.04218`](https://arxiv.org/abs/2609.04218) (cs.SE; submitted 2026-07-01, announced 2026-09). **v2 announced 2026-09-09** and is on the public record: it carries the v1.2.2 content, adds §6.7 (an independent-session re-test of ground-truth recall under condition-blind scoring, which **does not replicate** §6.2's strict-recall contrast — the two conditions come out one strict hit apart in 24), downgrades the title's last clause from *Evidence* to *a Test of*, and turns the abstract's closing claim into a **hypothesis**. ✅ **The two deposits agree as of 2026-09-09.** Zenodo v1.2.2 (DOI `10.5281/zenodo.22674575`) was published that day carrying the same content as arXiv v2, and the record declares a machine-readable `isIdenticalTo arXiv:2609.04218` relation. This was verified by reading the **published record's API**, not the submission form — creators, license, keywords, the description, the file md5, and the version count were re-read after publication and after the metadata edit, and none changed. The earlier divergence (arXiv v1.2.2 against Zenodo v1.2.1) is therefore closed; the superseded v1.2.1 remains separately citable at `10.5281/zenodo.22635721`. 🟥 arXiv is a moderated preprint server; moderation is not peer review, and neither the Zenodo deposit nor the arXiv posting establishes peer review, editorial acceptance, or venue acceptance |
|
|
40
40
|
| cs.AI companion — "Governance Dividend" | in preparation |
|
|
41
41
|
| Package | npm [`@chrono-meta/fh-gate`](https://www.npmjs.com/package/@chrono-meta/fh-gate) — multi-backend governance gate (claude · codex · auto) |
|
|
42
42
|
| Codex-compatible | `docs/codex-compat.md` — methodology layer runs model-agnostic. Marked **beta** there in the *validation-maturity* sense (external validation is still thin), **not** the *scope* sense: partial automation-layer support is the design, not an unfinished state |
|
|
@@ -173,6 +173,32 @@ destroys live state without anyone noticing. This is why the loss class is calle
|
|
|
173
173
|
|
|
174
174
|
---
|
|
175
175
|
|
|
176
|
+
### Scholarly deposit (Zenodo / DOI / arXiv) — measured 2026-09-07, why Step 1b exists
|
|
177
|
+
|
|
178
|
+
Two things happened on the same day, on the same record (`10.5281/zenodo.22542168`, v1.0.1):
|
|
179
|
+
|
|
180
|
+
1. **Form ≠ server.** The rich-text description and the companion-DOI related identifier were visible
|
|
181
|
+
in the deposit form and **absent** from `/api/records/<id>/draft`. The editor had not flushed its
|
|
182
|
+
state to the server. Nothing in the Pre-Publish gate covered this surface; a hand API read caught it
|
|
183
|
+
minutes before Publish.
|
|
184
|
+
2. **The machine fields outlive the PDF.** v1.0.1 is a *corrective* release: its body fixes eleven
|
|
185
|
+
misattributed references. Its Zenodo `references` field still carried **all eleven** pre-correction
|
|
186
|
+
attributions — the exact strings the release existed to retract — because the PDF was replaced and
|
|
187
|
+
the metadata was not. `references` / `related identifiers` are what DataCite and citation graphs
|
|
188
|
+
consume; the PDF is what a human opens. Fixed by editing the record (22 → 24 entries, verified
|
|
189
|
+
server-side, DOI unchanged).
|
|
190
|
+
|
|
191
|
+
Consequences that became the four Step 1b items: read the draft through the **service's** API (Zenodo
|
|
192
|
+
InvenioRDM `/api/records/<id>/draft`, legacy `/api/deposit/depositions/<id>`, figshare
|
|
193
|
+
`/v2/account/articles/<id>`), compare against the text you pasted (string vs JSON), md5 the file, and
|
|
194
|
+
on a corrective release diff the machine fields too. The post-publish read is a **detector**, not a
|
|
195
|
+
gate — a wrong field there is fixed by a new corrective version, never silently.
|
|
196
|
+
|
|
197
|
+
Salience check (same day, floor tier, blind, reps 3, one variable — the edited text injected into a
|
|
198
|
+
clean clone via `--setup`): before 0–1/3 → after 3/3 on all four items. ⚠️ The first sim run was void:
|
|
199
|
+
`sim_isolated_run.sh` clones **HEAD**, so uncommitted edits were absent from every arm — it measured
|
|
200
|
+
the pre-change tree. Recorded so the next author injects the working tree instead of trusting the clone.
|
|
201
|
+
|
|
176
202
|
## §Pre-Publish-Hook-Coverage
|
|
177
203
|
|
|
178
204
|
**Hook coverage — three distinct actions** (refined 2026-06-17 for (a)/(b); (c) added 2026-06-27):
|
|
@@ -566,7 +566,7 @@ standpoint: ⓑ 는 **자기 필드**가 정본이고, `axes-run` 은
|
|
|
566
566
|
| **질문하기** | `external-grounding` | ④ 프런티어→조직 전파 |
|
|
567
567
|
|
|
568
568
|
- **영혼 = 정체성 선언이 아니라 판단의 좌표계**다(무엇이 성공 · 어디로 기움 · 범위 밖 ·
|
|
569
|
-
절대 안 함). 페르소나 선언은
|
|
569
|
+
절대 안 함). 페르소나 선언은 **v2a 팔(12런)** 실측에서 **약모델 순손실**이므로 넣지 않는다(🟥 이 발견은 2×2 팩토리얼 81런이 아니라 `CORE IDENTITY` 절만 제거한 **12런 단일변수 팔**의 것이다 — 「105런 실측」으로 부르면 근거를 9배 부풀린다).
|
|
570
570
|
형식 검사기: `scripts/judgment_circuit_lint.sh`.
|
|
571
571
|
- **영혼은 한 번에 안 만들어진다** — FH 는 **씨앗 초안**만 주고, 실제로 채워지는 것은
|
|
572
572
|
현장 하네스가 사용자에 의해 무수히 사용되면서다. 등급 대응:
|
|
@@ -59,6 +59,24 @@ discipline still applies: sidecar findings are **candidates**, not terminal; the
|
|
|
59
59
|
source-grounds each (does the real pipeline reach it? does an existing mechanical anchor mitigate
|
|
60
60
|
it?) before acting — mechanical anchor over agreement.
|
|
61
61
|
|
|
62
|
+
### External anchor (added 2026-09-07)
|
|
63
|
+
|
|
64
|
+
- **[arXiv 2607.04528 — "Measuring Harness-Induced Belief Divergence in Multi-Step LLM Agents"](https://arxiv.org/abs/2607.04528)**
|
|
65
|
+
(Yi · Song, Jul 2026 — abstract content confirmed via WebSearch synthesis this session; direct
|
|
66
|
+
`arxiv.org` fetch was egress-blocked, consistent with every Frontier Digest run this week, so this
|
|
67
|
+
is WebSearch-corroborated, not PDF-span-verified). Holding task, environment, and base model fixed,
|
|
68
|
+
the paper shows that **harness-interface configuration alone** — which actions are visible, how
|
|
69
|
+
repairs are compressed, which branches are verification-masked, which evidence is logged — shifts
|
|
70
|
+
an agent's multi-step beliefs about progress/risk/recoverability, and the divergence **grows with
|
|
71
|
+
step count** rather than staying constant.
|
|
72
|
+
**Relevance**: an external, mechanism-level account for *why* the "shared optimistic prior" above
|
|
73
|
+
is a real causal effect and not merely an assumed one — a reviewer that shares the author's
|
|
74
|
+
harness/context construction (same family, same session shape) inherits a correlated belief
|
|
75
|
+
trajectory through the mechanism this paper measures; a differently-constructed (cross-family)
|
|
76
|
+
reviewer does not share that construction and so does not inherit the same trajectory. The paper's
|
|
77
|
+
own claim is about harness-interface variation, not model-family variation per se — cited here as
|
|
78
|
+
mechanism support for the decorrelation argument above, not as a direct restatement of it.
|
|
79
|
+
|
|
62
80
|
## 4. The gate (before merge, not after)
|
|
63
81
|
|
|
64
82
|
1. **Degrade-direction lint** — `scripts/degrade_direction_scan.sh` (portable copy:
|
|
@@ -109,6 +127,34 @@ the grep — an agent under merge pressure can under-trigger by treating a chang
|
|
|
109
127
|
That residual is the reason the gate is reinforced by the always-on Autonomous-Initiative trigger
|
|
110
128
|
row + the operator's proactive framing, not by the grep alone.
|
|
111
129
|
|
|
130
|
+
**Registration is not a precondition (operator decision 2026-09-08).** «Field surface» above was
|
|
131
|
+
read as «a mapped project's surface», and a session handed an unmapped gate file answered *"적용
|
|
132
|
+
대상이 아닙니다"* and reviewed it bare — 0 degrade scan, 0 cross-family — missing a GHSA-grade
|
|
133
|
+
network-exposure defect. The blind spot this gate guards is a property of the *reviewer's family*,
|
|
134
|
+
not of the file's owner, so ownership cannot switch it off. Scope, narrowed so it does not become
|
|
135
|
+
«every review is a gate»: ⓐ the ask is a **merge / landing verdict** (not an explanation or a style
|
|
136
|
+
question) · ⓑ the file is **gate-shaped by `scripts/gate_shape_scan.sh`** — a closed, word-bounded
|
|
137
|
+
verdict-identifier list (allow/deny/permit/approve·approval/verdict/permission/auth family incl.
|
|
138
|
+
authorize·authorization·authenticat*; `author`/`allowance` excluded), a bind/listen exposure, or an
|
|
139
|
+
irreversible-op call; comment-led lines skipped (`* ` and `-- ` only when followed by space, so
|
|
140
|
+
`*allow = 1` and a continued `--force` line are code); binary → `UNSCANNABLE`, and exit 3 dominates
|
|
141
|
+
any hit (never a silent miss). The classifier is the scope test; it is **not** the FH-owned
|
|
142
|
+
exclusion — that is caller-side (the 4-axis gate already covers FH paths). The task's own naming of the file as gate / auth / exposure
|
|
143
|
+
code is a manual escalation on top of the classifier, not a substitute for it. Known-negative: a
|
|
144
|
+
utility with none of those is out of scope; `reject(` is deliberately not a verdict token (Promise
|
|
145
|
+
API collision, measured — named residual). ⓒ **FH-owned assets are excluded** — they carry the
|
|
146
|
+
4-axis gate; this gate is for field code, and «field» means *not FH*, not *mapped*. **Record surface
|
|
147
|
+
for an unmapped file**: no marker directory exists for it, so the session writes
|
|
148
|
+
`tracks/_meta/field_gate_review_<YYYY-MM-DD>_<slug>.md` — file · verdict · `crossfamily:` verbatim
|
|
149
|
+
from the enum · degrade-scan result · regression test *landed* or *owed* — and the review reply
|
|
150
|
+
links it. An **owed** regression test keeps the verdict `NOT-CONVERGED` until it lands and runs;
|
|
151
|
+
the gate's convergence sub-condition is unchanged. **Pilot evidence (below bar, cue-dependent)**: floor tier,
|
|
152
|
+
blind, one variable — before 0/1 fired · after 2/3 on the first draft, **both with a prompt cue
|
|
153
|
+
«follow your installed review procedure»**; without the cue, **0/51** the same day (17 unmapped
|
|
154
|
+
gate-shaped files × 3). The gate is salience-only and the salience needs a cue — a mechanical
|
|
155
|
+
reminder channel is the open item (`tracks/_meta/fh_signal_2026-09-08_gate-needs-cue.md`). Resident summary: `CLAUDE.md
|
|
156
|
+
§Field-Harness Load-Bearing Change Gate`.
|
|
157
|
+
|
|
112
158
|
**Residency** — sanitize company code (redact vendor/domain literals) before any external-family
|
|
113
159
|
dispatch; domain data never leaves. **Autonomy** — autonomous once the operator has consented in
|
|
114
160
|
the UAP (`tracks/_meta/user_adaptation_profile.md`, defined in `knowledge/shared/rules/operational_adaptation.md`),
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: governance-engineering-definition
|
|
3
|
+
description: "Names the discipline this hub practices — governance engineering: moving an error rate toward 0.x% AND blocking at the surfaces where that number is not allowed to buy passage. Operator formulation 2026-09-09. Distinct from harness engineering (the artifact) — this is the objective."
|
|
4
|
+
type: reference
|
|
5
|
+
date: 2026-09-09
|
|
6
|
+
tags: [governance-engineering, naming, identity, error-budget, irreversible-surface]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 거버넌스 엔지니어링 (Governance Engineering) — 정의
|
|
10
|
+
|
|
11
|
+
## 운영자 정식화 (2026-09-09, 축자)
|
|
12
|
+
|
|
13
|
+
> *"우리가 독창적으로 부를 엔지니어링은 '거버넌스 엔지니어링' 이라고 불러야할것같아.
|
|
14
|
+
> 0.x%의 오차율을 내기위한 목표로 움직이고 막고서는 엔지니어링"*
|
|
15
|
+
|
|
16
|
+
## 🟥 동사가 둘이다 — 그리고 둘째가 하중을 진다
|
|
17
|
+
|
|
18
|
+
정식화 안에 동사가 **둘** 있고, 이 이름의 값어치는 전부 그 둘이 같이 있다는 데 있다.
|
|
19
|
+
|
|
20
|
+
| | 무엇 | 없으면 |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| **움직인다** | 오차율을 0.x% 로 끌어내리는 것을 **목표로** 공정을 짠다 | 게이트만 남고 개선이 없다 — 「막기만 하는 관료」 |
|
|
23
|
+
| **막고 선다** | 그 수치가 **통과권을 사지는 못하는** 자리를 지킨다 | 「숫자를 충분히 낮추면 자동으로 통과」가 된다 |
|
|
24
|
+
|
|
25
|
+
🟥 **둘째 동사를 빼면 이 이름은 하루 만에 자기 교리와 모순된다.** 2026-09-08 에 상주화한
|
|
26
|
+
§Irreversibility Gates 의 문단(PR #687)이 정확히 그것을 금지한다 — *"do not promote a verdict engine
|
|
27
|
+
to an irreversible surface by improving its number."* 그 문단의 defeater 도 축자로 이렇게 적혀 있다:
|
|
28
|
+
「누군가 이 문단을 근거로 오류율 문턱을 만들면 이 문단이 실패한 것」.
|
|
29
|
+
|
|
30
|
+
⇒ **정의 문장은 한 줄로 이렇게 고정한다**:
|
|
31
|
+
> **수치를 목표로 움직이되, 그 수치가 게이트를 열지는 않는다.**
|
|
32
|
+
> 무엇이 허용되는가는 **표면 등급**이 정하지 숫자가 정하지 않는다.
|
|
33
|
+
|
|
34
|
+
## 첫 실증 내용 (이 이름이 비어 있지 않다는 근거)
|
|
35
|
+
|
|
36
|
+
2026-09-08 dominance B-1 본 실행, 5팔 × GHSA 8케이스 × 3rep, 축② 주장 오류율:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
O octo 4자 2.7% ← 최저
|
|
40
|
+
F_xf cross-family 5.3%
|
|
41
|
+
F FH 기본 9.6%
|
|
42
|
+
N 맨몸 9.7%
|
|
43
|
+
F_slim 리뷰프로파일 13.6% ← 최고
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**다섯 개 전부 리뷰 표면에서는 쓸 만하다** — 틀린 지적 하나가 독자의 1분을 쓴다.
|
|
47
|
+
**다섯 개 전부 비가역 표면에서는 못 쓴다** — 발행·삭제·이력재작성에서 틀린 판정은 손실 전체다.
|
|
48
|
+
이 두 문장 사이의 거리가 거버넌스 엔지니어링이 존재하는 이유다. 0.x% 는 **아직 아무도 낸 적 없는
|
|
49
|
+
수치**이고(최저가 2.7%), 그래서 «목표»이지 «달성»이 아니다.
|
|
50
|
+
|
|
51
|
+
## 인접 이름과의 경계 — 대체가 아니라 다른 축이다
|
|
52
|
+
|
|
53
|
+
| 이름 | 무엇에 대한 것인가 | 정본 |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| **하네스 엔지니어링** | **수단** — 하네스라는 «물건»을 어떻게 짓는가(6축) | `harness_6axis_framework.md` · CLAUDE.md §Core Axis |
|
|
56
|
+
| **메타 하네스 엔지니어링** | **누가 무엇을 짓는가** — 하네스를 짓는 시스템을 짓는다 | [[meta_harness_engineering_definition]] |
|
|
57
|
+
| **거버넌스 엔지니어링** | **목적** — 어느 표면에서 어느 오차율이 허용되는가, 그리고 어디서 멈추는가 | 이 파일 |
|
|
58
|
+
|
|
59
|
+
셋은 층이 달라서 서로를 대체하지 않는다. 하네스는 거버넌스 엔지니어링의 **도구**이고,
|
|
60
|
+
거버넌스 엔지니어링은 하네스가 **무엇을 위해** 있는지를 말한다.
|
|
61
|
+
|
|
62
|
+
## 왜 이 이름이 지금 필요했나 — 측정된 공백
|
|
63
|
+
|
|
64
|
+
낱말 실측(2026-09-09, 컨트롤 동반): 「거버넌스 엔지니어링 / governance engineering」은 이 레포
|
|
65
|
+
**어디에도 0회**다. 같은 실행의 known-positive 컨트롤 「Harness Engineering」은 5개 파일(CLAUDE.md 포함)에서
|
|
66
|
+
히트한다 — 계기는 살아 있고, 부재는 진짜다.
|
|
67
|
+
|
|
68
|
+
그런데 **발행된 산출물 쪽에서는 이미 그 낱말로 불린다**: arXiv `2609.04218` 은 «governance» 논문이고,
|
|
69
|
+
Zenodo `10.5281/zenodo.22635721` 예치도 «거버넌스»다. 즉 **논문은 우리가 무엇을 하는지 말하고 있는데
|
|
70
|
+
정체성 문서는 그 말을 한 번도 한 적이 없었다.** 이 이름은 새 활동을 만드는 게 아니라 이미 하고 있던
|
|
71
|
+
것에 이름을 다는 것이다.
|
|
72
|
+
|
|
73
|
+
## 명명된 잔여 — 아직 안 한 것
|
|
74
|
+
|
|
75
|
+
- **외부 용례와의 관계 — 요구는 «미사용»이 아니라 «델타 진술»이다** (운영자 정정 2026-09-09):
|
|
76
|
+
*"루프 엔지니어링 그래프 엔지니어링도 이미 예전부터 쓰이던 표현일 텐데 LLM에 대한 거버넌스
|
|
77
|
+
엔지니어링은 또 다른 것일 듯해."* — 이 레포에 그 선례가 실재한다: `loop_engineering.md`(11,713 B)가
|
|
78
|
+
「루프 엔지니어링」을 남의 분야에서 이미 쓰이는 낱말인 채로 우리 뜻으로 쓴다.
|
|
79
|
+
⇒ **낱말이 남의 분야에 있다는 사실은 사용을 막지 않는다.** 판별자는 **가리키는 대상**이고, 여기서
|
|
80
|
+
대상은 «LLM 이 판정을 생산하는 공정의 오차율을 표면 등급별로 통치하는 것」이다 — IT 거버넌스(조직·
|
|
81
|
+
프로세스 통제)나 데이터 거버넌스(자산·계보)와 대상이 다르다.
|
|
82
|
+
🟥 **그래도 남는 것 하나**: 논문이 이 이름을 내세우는 순간 심사자는 기존 용례를 묻는다. 그때 필요한
|
|
83
|
+
것은 «아무도 안 썼다»가 아니라 **«기존 용례는 X, 우리 대상은 Y» 한 단락**이다. 그 단락 없이
|
|
84
|
+
«we introduce governance engineering» 을 쓰지 않는다 — 이 레포는 참고문헌 불일치 11/17 로 arXiv
|
|
85
|
+
반려를 이미 한 번 겪었고, 그 실패의 축이 정확히 «출처를 안 열고 주장한 것」이다.
|
|
86
|
+
- **상주층 반영 미완**: CLAUDE.md §Core Axis 행이 아직 「Harness Engineering (How)」만 적는다.
|
|
87
|
+
거기에 목적 축을 어떻게 넣을지는 별건(4축 게이트 대상)이고, 이 파일이 그 결정의 입력이다.
|
|
88
|
+
- 이 파일은 **정의**지 실행 절차가 아니다. 실행부는 이미 있다 — §Irreversibility Gates(표면 등급) ·
|
|
89
|
+
`finding_verify.py`(드롭 감사 없는 정밀도 거부) · `field_verdict_crossfamily_gate.md`.
|
|
@@ -3548,3 +3548,71 @@
|
|
|
3548
3548
|
dispatch_count_measured: 131 # session_close_check ④-e 집계. 위 2 엔트리는 «클래스 통합»이고
|
|
3549
3549
|
# 총 스폰 수는 131 이다 — 「2건」만 보면 과소 계상으로 읽힌다
|
|
3550
3550
|
notes: "🟥 거버너가 잡은 오류 1건 — qasp 조사가 `web_regress.py:423` 의 `return \"PASS\"` 를 «레포 유일 fail-open» 으로 지목했는데 **틀렸다**. `_STATUS_MAP` 이 세 값만 만들고 그 밖은 두 진입점에서 raise 하며 SKIPPED 는 앞 분기가 먹으므로 소진적 else 다. 정적 패턴만 보고 **도달 가능성을 안 본** 부류. 그리고 내 계기도 한 번 틀렸다(`endswith(\"pass\")` 가 `not-pass` 를 삼켜 8.3% 오출력) — 같은 얼굴이라 PR 본문에 적었다. 두 에이전트 다 «확인 못 한 것»을 이름으로 나열했고 그게 검수를 값싸게 만들었다"
|
|
3551
|
+
|
|
3552
|
+
- date: 2026-09-08
|
|
3553
|
+
agent: codex(gpt-5.6 → gpt-6-astra) · 사이드카 adversarial/verifier
|
|
3554
|
+
purpose: "① 게이트 트리거 넓힘 교리 5R 수렴 ② 논문 v1.2.2 §6.7 6R 수렴(SHIP 판정) ③ recall 재검증 45런 조건 블라인드 채점 ④ B-1 5팔 채점(축①③ keyed · 축② unkeyed) ⑤ typed-finding 파이프라인의 검증기·감사기"
|
|
3555
|
+
outcome: accepted
|
|
3556
|
+
evidence: "①에서 «기계 테스트라 적었는데 기계가 없다» 를 잡아 gate_shape_scan.sh 가 그 커밋에 들어왔다(자력 0). ②에서 S findings 를 4라운드 연속 냈고 마지막까지 남긴 것이 제목의 «Evidence» 한 줄 — 운영자가 그 처방을 «정체성 소실»로 정정해 «a Test of» 로 착지. ③은 known-pair 보정 통과(양성 HIT/HIT · 음성 MISS/MISS) 후 45런 채점. ⑤에서 자기 산출(codex)을 검증할 때 채널 규칙이 실사용에서 발동"
|
|
3557
|
+
tokens_subagent: UNMEASURED
|
|
3558
|
+
dispatch_count_measured: 39 # session_close_check ④-e 집계. 아래 gemini 포함 총계이고
|
|
3559
|
+
# 이 엔트리는 «클래스 통합» 이다 — 2건만 보면 과소 계상으로 읽힌다
|
|
3560
|
+
notes: "🟥 codex 가 한 번 틀렸다 — §6.7 분모를 5×3×8=120 으로 읽어 S 로 올렸는데 실제는 항목이 아티팩트에 묶여 있어 24 가 맞다. 표현이 모호했던 것은 사실이라 문구를 고쳤고 «산술은 늘 맞았다» 를 R6 프롬프트에 명시했다. 거버너가 잡은 자기 오류 2건: 「0% 는 채점자 산물」(기록이 반증) · 「참 주장이 지워졌다」(소스 확인 후 철회)"
|
|
3561
|
+
|
|
3562
|
+
- date: 2026-09-08
|
|
3563
|
+
agent: agy(gemini-3.8-flash-high) · fleet member + verifier
|
|
3564
|
+
purpose: "typed-finding fleet 의 security 역할 · 반대 방향 검증 패스 · octo 파이프라인의 Gemini 라운드 복구용 shim"
|
|
3565
|
+
outcome: accepted
|
|
3566
|
+
evidence: "Art4 에서 4건 산출, 그중 셋이 2026-06-02 GT 와 일치하는 실물(allow_session→allow_always L49 · deny_always L26 · UI 주입 L83). 검증 패스에서 codex 산출 1건을 false-positive 로 드롭했고, 그 드롭은 감사(codex)에서 correct-drop 으로 확인됐다"
|
|
3567
|
+
tokens_subagent: UNMEASURED
|
|
3568
|
+
dispatch_count_measured: 위 엔트리에 통합
|
|
3569
|
+
notes: "🟥 배선 함정 둘: `-p` 가 variadic 이라 `--model` 을 프롬프트로 먹었고(오류 메시지가 친절해 즉시 잡힘), 기본 print-timeout 이 6KB 프롬프트에 부족해 rc=1. 둘 다 «조용한 0» 이 될 수 있었는데 fleet 이 멤버 rc 를 기록해서 보였다. gemini CLI 자체는 개인 계정에서 deprecated(IneligibleTierError) — agy 가 유일 경로"
|
|
3570
|
+
- date: 2026-09-09
|
|
3571
|
+
agent: fh-meta:persona-innovator
|
|
3572
|
+
mode: F
|
|
3573
|
+
context: "Mode D — 야간 자율주행. 거버넌스 엔지니어링 프레임(다음 arXiv) + ≤1% 오류율을 향한 갭 스캔. 운영자가 「이노베이터 활용」을 명시 요청"
|
|
3574
|
+
dispatched_by: governor
|
|
3575
|
+
outcome: accepted
|
|
3576
|
+
evidence: "① 델타 진술 + 제목 3 + thesis 2, 각각 defeater 동반 ② 외부 선행 11건(URL 열어 확인) + 미확인 4건 라벨 분리 ③ FH 결손 6건(G-1~G-6, 전부 기계화 가능). 🟥 G-4(finding_verify.py 의 자기검증 가드가 옵셔널 필드에 걸린 fail-open)는 내가 소스 확인 + 알려진 쌍 재현 후 **이 릴리스에서 닫았다**(PR #694). 사이드카 원 주장은 배선 경로도 뚫린다는 함의였는데 파이프라인이 라우팅을 거부하므로 좁혀서 채택 — 사이드카 발견은 «증거 후보» 이지 판정이 아니라는 규율대로"
|
|
3577
|
+
residual: "🟥 자기보고 잔여를 스스로 6항 적어 왔다(EU AI Act 미열람 · preprint 자기보고 수치 · 우리 표의 커버리지 불일치). 그 정직성 자체가 채택 근거의 일부. 외부 인용은 **아직 재검증 안 함** — 논문에 싣기 전에 URL 을 내가 직접 연다"
|
|
3578
|
+
- date: 2026-09-11
|
|
3579
|
+
agent: agy(gemini-3.1-pro-high · gemini-3.8-flash-high) · cross-family adversarial reviewer
|
|
3580
|
+
mode: sidecar
|
|
3581
|
+
context: "preprep L15 서체 일관성 레인 신설(PR #697, MERGED bffa1a0) 의 적대 검토. 4라운드 연속."
|
|
3582
|
+
dispatched_by: governor
|
|
3583
|
+
outcome: accepted
|
|
3584
|
+
evidence: |
|
|
3585
|
+
R1 3.1-Pro-High 8건 · R2 3.8-Flash-High 6건 · R3 3.8-Flash-High 5건 · R4 3.1-Pro-High 4건
|
|
3586
|
+
= **지적 23건 중 22건 수용·전건 실적발**, 1건 기각(하네스 전역 계약 → fh_signal 로 기록).
|
|
3587
|
+
🟥 **자력 적발 0** — 23건 다 못 봤다.
|
|
3588
|
+
🟥 라운드를 쌓은 것이 하중이었다: **R2 가 R1 의 수리를, R4 가 R3 의 수리를 뒤집었다.**
|
|
3589
|
+
· R1 의 「템플릿 자신이 쓰는 서체는 노트로 강등」 → R2 가 fail-open 으로 지목(배포 템플릿은
|
|
3590
|
+
쓰이지도 않는 자리에 Office 기본값을 들고 있어서, 강등하면 본문에 써도 종료코드가 안 움직인다)
|
|
3591
|
+
· R3 의 「속성 순서 가정 제거」가 쓴 `(\w+)=` 가 네임스페이스 콜론을 못 먹어 `r:id` 유실 →
|
|
3592
|
+
R4 가 지목. 실물 덱이 그 형태라 장 순서가 내내 파일명 순 폴백으로 돌고 있었다
|
|
3593
|
+
🟥 그리고 **R3 에서 그걸 막으라고 넣은 레인이 초록이었다** — 픽스처가 1장짜리라 폴백과 정상
|
|
3594
|
+
경로가 같은 답을 냈다(「초록인 이유를 확인하라」의 교과서적 재현). 2장 픽스처 + 면제-장번호
|
|
3595
|
+
컨트롤로 교체.
|
|
3596
|
+
실물 탐지 표면 173 → 647 → 804회. self-test 30항 · 출하본 rc=0 PASS=6.
|
|
3597
|
+
tokens_subagent: UNMEASURED
|
|
3598
|
+
dispatch_count_measured: 6 # R1~R4 본검토 4 + 실패 재시도 2(헤드리스 권한 1 · print-timeout 1)
|
|
3599
|
+
residual: |
|
|
3600
|
+
🟥 **NOT-CONVERGED.** 4라운드에 4건을 고쳤으므로 5라운드가 남았다. 네 라운드 연속으로 새
|
|
3601
|
+
결함이 나왔고 자력 적발이 0 이라, 이 레인은 아직 굳지 않았다.
|
|
3602
|
+
⚠️ 배선 함정 둘(둘 다 «조용한 0» 이 될 수 있었다): ⓐ 백그라운드 실행에서 agy 가
|
|
3603
|
+
「command 권한이 헤드리스에서 auto-deny」로 **출력 0** — 포그라운드 재실행으로 해소
|
|
3604
|
+
ⓑ 기본 print-timeout 5분이 27KB 프롬프트에 부족 → `--print-timeout 600s` 필요(메모리에
|
|
3605
|
+
이미 있던 함정을 재현했다).
|
|
3606
|
+
notes: "판정은 전부 거버너가 소스로 재현한 뒤 수용했다 — 지적을 믿고 고친 것이 아니라, 예컨대 자식 있는 defRPr 정규식 조기종료는 재현부터 돌려 서체가 버려지는 것을 보고 나서 고쳤다. 사이드카 발견은 «증거 후보» 이지 판정이 아니라는 규율대로."
|
|
3607
|
+
|
|
3608
|
+
- date: 2026-09-12
|
|
3609
|
+
agent: agy(gemini-3.1-pro-high) · cross-family adversarial reviewer
|
|
3610
|
+
mode: sidecar
|
|
3611
|
+
context: "preprep L15 4라운드 — 자정을 넘겨 실행된 분. 본체 기록은 2026-09-11 엔트리에 통합돼 있다"
|
|
3612
|
+
dispatched_by: governor
|
|
3613
|
+
outcome: accepted
|
|
3614
|
+
evidence: "4건 지적 전건 실적발·수리. 그중 하나가 **R3 수리가 심은 결함**(`(\\w+)=` 가 네임스페이스 콜론을 못 먹어 `r:id` 유실 → 장 순서가 파일명 순 폴백). 나머지 셋도 fail-open: `<a:t xml:space=\"preserve\"> 미독 · `<a:sym>` 슬롯 미포함(실물 157개) · 템플릿 endParaRPr 이 허용 집합으로 승격"
|
|
3615
|
+
tokens_subagent: UNMEASURED
|
|
3616
|
+
dispatch_count_measured: 위 2026-09-11 엔트리에 통합 (클래스 통합)
|
|
3617
|
+
residual: "NOT-CONVERGED — 5라운드가 남았다"
|
|
3618
|
+
notes: "🟥 이 엔트리가 따로 있는 이유는 세션이 자정을 넘겼기 때문이다. ④-e 는 «오늘» 기준으로 세므로, 날짜 경계를 넘긴 세션은 양쪽 날짜에 기록이 필요하다 — 원장을 하루 단위로 읽는 계기의 성질이고, 통합 서술만 두면 오늘 자가 0 으로 보인다"
|
|
@@ -66,7 +66,7 @@ Mapping complete: N projects
|
|
|
66
66
|
|
|
67
67
|
Basic mapping (steps 1–5) registers a project *lightly* (tracks/ + a starter CLAUDE.md + hub link). **Full-Harness Mode adds the project-local harness assets** — identity ① (Control Tower) propagating harness structure to a connected project; the *how* is executed via the Core Axis.
|
|
68
68
|
|
|
69
|
-
**Scope**: target *mapped* projects only. For FH-self setup / acceleration baseline (zshrc, sentinels, the FH self-gate) use `/install-wizard` — do **not** run §6 on the FH hub itself. **Prerequisite**: the project is already mapped (steps 1–5); §6 is strictly additive. This mode is also the **emit terminus of a chamber run** — a simulate-first incubation that holds routes here on emit (`harness_incubator_doctrine.md §3` Minimal execution skeleton ⑤).
|
|
69
|
+
**Scope**: target *mapped* projects only. (Mapping scopes *installation* of harness assets — it is **not** the precondition for FH's review gates: the Field-Harness Load-Bearing Change Gate fires on a merge verdict for any gate-shaped file, mapped or not — `field_verdict_crossfamily_gate.md §Registration is not a precondition`, 2026-09-08.) For FH-self setup / acceleration baseline (zshrc, sentinels, the FH self-gate) use `/install-wizard` — do **not** run §6 on the FH hub itself. **Prerequisite**: the project is already mapped (steps 1–5); §6 is strictly additive. This mode is also the **emit terminus of a chamber run** — a simulate-first incubation that holds routes here on emit (`harness_incubator_doctrine.md §3` Minimal execution skeleton ⑤).
|
|
70
70
|
|
|
71
71
|
**Triggers**: "harness-ify this project", "full harness setup", "프로젝트 하네스화", "promote to full harness", or an opt-in prompt offered right after a basic mapping (*"Promote {project} to a full harness now?"*).
|
|
72
72
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chrono-meta/fh-gate",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "FH runtime adapters — run FH governance, skills, and agents via Claude or Codex with machine-parseable gates.",
|
|
5
5
|
"homepage": "https://github.com/chrono-meta/forge-harness#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -134,6 +134,15 @@
|
|
|
134
134
|
"scripts/test_marker_crossfamily_lanes.sh",
|
|
135
135
|
"scripts/residency_closure_scan.py",
|
|
136
136
|
"scripts/test_residency_closure_lanes.sh",
|
|
137
|
+
"scripts/doc_claim_triad_scan.py",
|
|
138
|
+
"scripts/test_doc_claim_triad_lanes.sh",
|
|
139
|
+
"scripts/gate_shape_scan.sh",
|
|
140
|
+
"scripts/test_gate_shape_scan_lanes.sh",
|
|
141
|
+
"scripts/finding_fleet.sh",
|
|
142
|
+
"scripts/finding_verify.py",
|
|
143
|
+
"scripts/finding_verifier.sh",
|
|
144
|
+
"scripts/finding_pipeline.sh",
|
|
145
|
+
"scripts/test_finding_pipeline_lanes.sh",
|
|
137
146
|
"scripts/test_marker_standpoint_lanes.sh",
|
|
138
147
|
"scripts/test_marker_thirdparty_lanes.sh",
|
|
139
148
|
"scripts/test_marker_axes_run_lanes.sh",
|
|
@@ -322,6 +331,7 @@
|
|
|
322
331
|
"scripts/test_fh_qp_lanes.sh",
|
|
323
332
|
"scripts/test_preprep_diagram_lanes.sh",
|
|
324
333
|
"scripts/test_preprep_slide_refs_lanes.sh",
|
|
334
|
+
"scripts/test_preprep_font_lanes.sh",
|
|
325
335
|
"scripts/test_action_yml_lanes.sh"
|
|
326
336
|
]
|
|
327
337
|
}
|