@chrono-meta/fh-gate 3.1.1 → 3.1.3

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.
@@ -11,19 +11,19 @@
11
11
  "plugins": [
12
12
  {
13
13
  "name": "fh-meta",
14
- "version": "3.1.1",
14
+ "version": "3.1.3",
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.1.1",
20
+ "version": "3.1.3",
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.1.1",
26
+ "version": "3.1.3",
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/README.ja.md CHANGED
@@ -7,6 +7,7 @@
7
7
  <a href="https://github.com/VoltAgent/awesome-agent-skills#community-skills"><img src="https://img.shields.io/badge/listed_in-awesome--agent--skills-0ea5e9.svg" alt="Listed in awesome-agent-skills"></a>
8
8
  <a href="https://github.com/anthropics/claude-code"><img src="https://img.shields.io/badge/Claude_Code-compatible-a855f7.svg" alt="Claude Code compatible — official Claude Code repository"></a>
9
9
  <a href="https://chrono-meta.github.io/forge-harness/"><img src="https://img.shields.io/badge/whole_map-interactive-6366f1.svg" alt="FH whole map — interactive diagrams on GitHub Pages"></a>
10
+ <a href="https://github.com/marketplace/actions/fh-gate-typed-ai-code-review-verdict"><img src="https://img.shields.io/badge/GitHub_Action-marketplace-2088FF.svg" alt="GitHub Actions Marketplace — fh-gate"></a>
10
11
  <a href="https://www.npmjs.com/package/@chrono-meta/fh-gate"><img src="https://img.shields.io/npm/v/@chrono-meta/fh-gate.svg?color=cb3837" alt="npm"></a>
11
12
  <a href="https://github.com/chrono-meta/homebrew-forge-harness"><img src="https://img.shields.io/badge/homebrew-tap-FBB040.svg" alt="Homebrew tap"></a>
12
13
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-22c55e.svg" alt="MIT License"></a>
@@ -58,13 +59,15 @@ brew tap chrono-meta/forge-harness && brew install forge-harness # あるい
58
59
  **GitHub Actions では** — 同じゲートを1つのステップとして、判定は型のあるまま:
59
60
 
60
61
  ```yaml
61
- - uses: chrono-meta/forge-harness@v3.1.1
62
+ - uses: chrono-meta/forge-harness@v3.1.2
62
63
  with:
63
64
  files: ${{ steps.changed.outputs.files }}
64
65
  env:
65
66
  ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
66
67
  ```
67
68
 
69
+ [GitHub Actions マーケットプレイス](https://github.com/marketplace/actions/fh-gate-typed-ai-code-review-verdict) に掲載されている。
70
+
68
71
  このステップは `verdict`(PASS · PENDING · BLOCKED · ESCALATE · HARNESS_ERROR · ARG_ERROR ·
69
72
  DRY_RUN · UNKNOWN)と `reviewed` を出します。**`reviewed: false` は合格ではありません** —
70
73
  バックエンドが最後まで答えなかった場合、dry run、このラッパーが知らない終了コード、そのすべてが
@@ -433,8 +436,8 @@ Claude Code は作業の複雑さでモデルを自動選択しません — こ
433
436
  | [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md) | スキルとパターンの貢献方法 |
434
437
  | [`tracks/_contrib/`](tracks/_contrib/README.md) | **同意レーン** — 非識別化した作業セッションを共有; レポが運用者たちにまたがって複利で積み上がる |
435
438
 
436
- > **FH 論文**: v1.0 方法論 · [Zenodo](https://zenodo.org/records/20397566) (DOI
437
- > 10.5281/zenodo.20397566) · cs.SE companion、掲載済み ·
438
- > [Zenodo](https://zenodo.org/records/20680081) (DOI 10.5281/zenodo.20680081) · cs.AI companion は
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/22558450) (DOI 10.5281/zenodo.22558450) · cs.AI companion は
439
442
  > 準備中。これら、独立した収束的研究、そしてそれぞれの但し書き:
440
443
  > [`docs/OUTPUT_EVIDENCE.md`](docs/OUTPUT_EVIDENCE.md)。
package/README.ko.md CHANGED
@@ -7,6 +7,7 @@
7
7
  <a href="https://github.com/VoltAgent/awesome-agent-skills#community-skills"><img src="https://img.shields.io/badge/listed_in-awesome--agent--skills-0ea5e9.svg" alt="Listed in awesome-agent-skills"></a>
8
8
  <a href="https://github.com/anthropics/claude-code"><img src="https://img.shields.io/badge/Claude_Code-compatible-a855f7.svg" alt="Claude Code compatible — official Claude Code repository"></a>
9
9
  <a href="https://chrono-meta.github.io/forge-harness/"><img src="https://img.shields.io/badge/whole_map-interactive-6366f1.svg" alt="FH whole map — interactive diagrams on GitHub Pages"></a>
10
+ <a href="https://github.com/marketplace/actions/fh-gate-typed-ai-code-review-verdict"><img src="https://img.shields.io/badge/GitHub_Action-marketplace-2088FF.svg" alt="GitHub Actions Marketplace — fh-gate"></a>
10
11
  <a href="https://www.npmjs.com/package/@chrono-meta/fh-gate"><img src="https://img.shields.io/npm/v/@chrono-meta/fh-gate.svg?color=cb3837" alt="npm"></a>
11
12
  <a href="https://github.com/chrono-meta/homebrew-forge-harness"><img src="https://img.shields.io/badge/homebrew-tap-FBB040.svg" alt="Homebrew tap"></a>
12
13
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-22c55e.svg" alt="MIT License"></a>
@@ -45,13 +46,15 @@ brew tap chrono-meta/forge-harness && brew install forge-harness # 또는 이
45
46
  **GitHub Actions 에서** — 같은 게이트를 스텝 하나로, 판정은 타입을 유지한 채:
46
47
 
47
48
  ```yaml
48
- - uses: chrono-meta/forge-harness@v3.1.1
49
+ - uses: chrono-meta/forge-harness@v3.1.2
49
50
  with:
50
51
  files: ${{ steps.changed.outputs.files }}
51
52
  env:
52
53
  ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
53
54
  ```
54
55
 
56
+ [GitHub Actions 마켓플레이스](https://github.com/marketplace/actions/fh-gate-typed-ai-code-review-verdict)에 등재돼 있다.
57
+
55
58
  이 스텝은 `verdict`(PASS · PENDING · BLOCKED · ESCALATE · HARNESS_ERROR · ARG_ERROR · DRY_RUN ·
56
59
  UNKNOWN)와 `reviewed` 를 내놓습니다. **`reviewed: false` 는 통과가 아닙니다** — 백엔드가 끝내 답을
57
60
  주지 않은 경우, dry run, 이 래퍼가 모르는 종료 코드가 전부 여기로 떨어지고, 기본값에서는 전부 스텝을
@@ -421,8 +424,8 @@ Claude Code 는 작업 복잡도로 모델을 자동 선택하지 않습니다.
421
424
  | [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md) | 스킬과 패턴 기여 방법 |
422
425
  | [`tracks/_contrib/`](tracks/_contrib/README.md) | **동의 레인** — 비식별화된 작업 세션 공유. 레포가 운영자들에 걸쳐 복리로 쌓임 |
423
426
 
424
- > **FH 논문**: v1.0 방법론 · [Zenodo](https://zenodo.org/records/20397566) (DOI
425
- > 10.5281/zenodo.20397566) · cs.SE companion, 게재됨 ·
426
- > [Zenodo](https://zenodo.org/records/20680081) (DOI 10.5281/zenodo.20680081) · cs.AI companion
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/22558450) (DOI 10.5281/zenodo.22558450) · cs.AI companion
427
430
  > 준비 중. 이것들과 독립적인 수렴 연구, 그리고 각각의 주의사항:
428
431
  > [`docs/OUTPUT_EVIDENCE.md`](docs/OUTPUT_EVIDENCE.md).
package/README.md CHANGED
@@ -7,6 +7,7 @@
7
7
  <a href="https://github.com/VoltAgent/awesome-agent-skills#community-skills"><img src="https://img.shields.io/badge/listed_in-awesome--agent--skills-0ea5e9.svg" alt="Listed in awesome-agent-skills"></a>
8
8
  <a href="https://github.com/anthropics/claude-code"><img src="https://img.shields.io/badge/Claude_Code-compatible-a855f7.svg" alt="Claude Code compatible — official Claude Code repository"></a>
9
9
  <a href="https://chrono-meta.github.io/forge-harness/"><img src="https://img.shields.io/badge/whole_map-interactive-6366f1.svg" alt="FH whole map — interactive diagrams on GitHub Pages"></a>
10
+ <a href="https://github.com/marketplace/actions/fh-gate-typed-ai-code-review-verdict"><img src="https://img.shields.io/badge/GitHub_Action-marketplace-2088FF.svg" alt="GitHub Actions Marketplace — fh-gate"></a>
10
11
  <a href="https://www.npmjs.com/package/@chrono-meta/fh-gate"><img src="https://img.shields.io/npm/v/@chrono-meta/fh-gate.svg?color=cb3837" alt="npm"></a>
11
12
  <a href="https://github.com/chrono-meta/homebrew-forge-harness"><img src="https://img.shields.io/badge/homebrew-tap-FBB040.svg" alt="Homebrew tap"></a>
12
13
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-22c55e.svg" alt="MIT License"></a>
@@ -47,13 +48,15 @@ brew tap chrono-meta/forge-harness && brew install forge-harness # or this
47
48
  **In GitHub Actions** — the same gate as a step, with the verdict kept typed:
48
49
 
49
50
  ```yaml
50
- - uses: chrono-meta/forge-harness@v3.1.1
51
+ - uses: chrono-meta/forge-harness@v3.1.2
51
52
  with:
52
53
  files: ${{ steps.changed.outputs.files }}
53
54
  env:
54
55
  ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
55
56
  ```
56
57
 
58
+ Listed on the [GitHub Actions Marketplace](https://github.com/marketplace/actions/fh-gate-typed-ai-code-review-verdict).
59
+
57
60
  The step exposes `verdict` (PASS · PENDING · BLOCKED · ESCALATE · HARNESS_ERROR · ARG_ERROR · DRY_RUN · UNKNOWN)
58
61
  and `reviewed`. **`reviewed: false` is not a pass** — a backend that never answered, a dry run, or an exit
59
62
  code this wrapper does not know all land there, and all of them fail the step by default. That default is
@@ -412,8 +415,8 @@ and the phrase that triggers it:
412
415
  | [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md) | How to contribute skills and patterns |
413
416
  | [`tracks/_contrib/`](tracks/_contrib/README.md) | **Consent lane** — share a de-identified work session; the repo compounds across operators |
414
417
 
415
- > **FH papers**: v1.0 methodology · [Zenodo](https://zenodo.org/records/20397566) (DOI
416
- > 10.5281/zenodo.20397566) · cs.SE companion, published ·
417
- > [Zenodo](https://zenodo.org/records/20680081) (DOI 10.5281/zenodo.20680081) · cs.AI companion in
418
+ > **FH papers**: v1.0.1 methodology · [Zenodo](https://zenodo.org/records/22542168) (DOI
419
+ > 10.5281/zenodo.22542168) · cs.SE companion v1.2, published ·
420
+ > [Zenodo](https://zenodo.org/records/22558450) (DOI 10.5281/zenodo.22558450) · cs.AI companion in
418
421
  > preparation. Those, the independent convergent work, and the caveats on each:
419
422
  > [`docs/OUTPUT_EVIDENCE.md`](docs/OUTPUT_EVIDENCE.md).
package/README.zh.md CHANGED
@@ -7,6 +7,7 @@
7
7
  <a href="https://github.com/VoltAgent/awesome-agent-skills#community-skills"><img src="https://img.shields.io/badge/listed_in-awesome--agent--skills-0ea5e9.svg" alt="Listed in awesome-agent-skills"></a>
8
8
  <a href="https://github.com/anthropics/claude-code"><img src="https://img.shields.io/badge/Claude_Code-compatible-a855f7.svg" alt="Claude Code compatible — official Claude Code repository"></a>
9
9
  <a href="https://chrono-meta.github.io/forge-harness/"><img src="https://img.shields.io/badge/whole_map-interactive-6366f1.svg" alt="FH whole map — interactive diagrams on GitHub Pages"></a>
10
+ <a href="https://github.com/marketplace/actions/fh-gate-typed-ai-code-review-verdict"><img src="https://img.shields.io/badge/GitHub_Action-marketplace-2088FF.svg" alt="GitHub Actions Marketplace — fh-gate"></a>
10
11
  <a href="https://www.npmjs.com/package/@chrono-meta/fh-gate"><img src="https://img.shields.io/npm/v/@chrono-meta/fh-gate.svg?color=cb3837" alt="npm"></a>
11
12
  <a href="https://github.com/chrono-meta/homebrew-forge-harness"><img src="https://img.shields.io/badge/homebrew-tap-FBB040.svg" alt="Homebrew tap"></a>
12
13
  <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-22c55e.svg" alt="MIT License"></a>
@@ -57,13 +58,15 @@ brew tap chrono-meta/forge-harness && brew install forge-harness # 或者用
57
58
  **在 GitHub Actions 里** —— 同一道门禁作为一个 step,判定依然是带类型的:
58
59
 
59
60
  ```yaml
60
- - uses: chrono-meta/forge-harness@v3.1.1
61
+ - uses: chrono-meta/forge-harness@v3.1.2
61
62
  with:
62
63
  files: ${{ steps.changed.outputs.files }}
63
64
  env:
64
65
  ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
65
66
  ```
66
67
 
68
+ 已在 [GitHub Actions 应用市场](https://github.com/marketplace/actions/fh-gate-typed-ai-code-review-verdict) 上架。
69
+
67
70
  这个 step 会输出 `verdict`(PASS · PENDING · BLOCKED · ESCALATE · HARNESS_ERROR · ARG_ERROR ·
68
71
  DRY_RUN · UNKNOWN)和 `reviewed`。**`reviewed: false` 不是通过** —— 后端始终没有回答、一次 dry
69
72
  run、这层封装不认识的退出码,全都落在这里,而且默认全部让这个 step 失败。这个默认值正是重点:
@@ -400,8 +403,8 @@ Claude Code 不会按任务复杂度自动选择模型 —— 这个要你设置
400
403
  | [`docs/CONTRIBUTING.md`](docs/CONTRIBUTING.md) | 如何贡献技能与模式 |
401
404
  | [`tracks/_contrib/`](tracks/_contrib/README.md) | **同意通道** —— 分享一个去标识化的工作会话;仓库在众多操作者之间复利累积 |
402
405
 
403
- > **FH 论文**:v1.0 方法论 · [Zenodo](https://zenodo.org/records/20397566)(DOI
404
- > 10.5281/zenodo.20397566)· cs.SE companion,已发表 ·
405
- > [Zenodo](https://zenodo.org/records/20680081)(DOI 10.5281/zenodo.20680081)· cs.AI companion
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/22558450)(DOI 10.5281/zenodo.22558450)· cs.AI companion
406
409
  > 筹备中。这些、独立的收敛性工作,以及每一项的注意事项:
407
410
  > [`docs/OUTPUT_EVIDENCE.md`](docs/OUTPUT_EVIDENCE.md)。
@@ -35,8 +35,8 @@
35
35
 
36
36
  | Artifact | Reference |
37
37
  |---|---|
38
- | Paper v1.0 — methodology | Zenodo DOI [`10.5281/zenodo.20397566`](https://zenodo.org/records/20397566) — 2-layer design, 6-axis framework, 4-agent orchestration, compounding loop, with empirical evidence. arXiv in review |
39
- | cs.SE companion — governance-gate methodology | **published** · Zenodo DOI [`10.5281/zenodo.20680081`](https://zenodo.org/records/20680081) (latest v1.1 `10.5281/zenodo.20740038` · CC-BY-4.0) · arXiv **submitted** (cs.SE). The moderation outcome is not tracked in this repo, so treat "submitted" as the last state this page can vouch for, not as current |
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 | **published** · Zenodo DOI [`10.5281/zenodo.22558450`](https://zenodo.org/records/22558450) (v1.2 — adds the replication section and withdraws two previously reported results; all versions `10.5281/zenodo.20680080` · CC-BY-4.0) · arXiv **submitted** (cs.SE). The moderation outcome is not tracked in this repo, so treat "submitted" as the last state this page can vouch for, not as current |
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 |
@@ -146,4 +146,4 @@ This is the N-fold synergy claim stated precisely. The controlled experiment des
146
146
  - `multi_model_sidecar_strategy.md` — orchestrator-swap experiment that generated this audit
147
147
  - `README.md §Architecture` — 2-layer design (methodology vs automation)
148
148
  - `AGENTS.md` — 6-agent registry (fact-checker added after this audit)
149
- - FH paper (Zenodo: 10.5281/zenodo.20397566) — harness-as-durable-layer thesis this positioning extends
149
+ - FH paper (Zenodo: 10.5281/zenodo.20397565) — harness-as-durable-layer thesis this positioning extends
@@ -344,4 +344,4 @@ The bridge layer (v1.0) will implement these. This contract is the specification
344
344
  - `fh_ecosystem_positioning.md` — ecosystem context + synergy map + v2 paper connection
345
345
  - `tracks/_meta/` — governance logs written here on each gate run
346
346
  - `multi_model_sidecar_strategy.md` — multi-model orchestration (related pattern)
347
- - FH paper (Zenodo: 10.5281/zenodo.20397566) — harness-as-durable-layer thesis this contract operationalizes
347
+ - FH paper (Zenodo: 10.5281/zenodo.20397565) — harness-as-durable-layer thesis this contract operationalizes
@@ -160,4 +160,4 @@ On session end, check `/tmp/fh-pending-governance.txt` and run the governance pa
160
160
  - `fh_ecosystem_positioning.md` — ecosystem context, synergy map, v2 paper connection
161
161
  - `multi_model_sidecar_strategy.md` — multi-model orchestration (sidecar pattern for adding Gemini/Codex review)
162
162
  - `tracks/_meta/fh_opencode_governance_experiment_2026_05_31.md` — full empirical record (local)
163
- - FH paper (Zenodo: 10.5281/zenodo.20397566) — harness-as-durable-layer thesis
163
+ - FH paper (Zenodo: 10.5281/zenodo.20397565) — harness-as-durable-layer thesis
@@ -84,7 +84,7 @@ Limitations of the userspace approach (why native support is needed):
84
84
  - Stop hook cannot invoke Claude recursively (verification triggers on next session, not immediately)
85
85
  - Checkpoint requires manual commit — no structured sub-goal output from Haiku
86
86
 
87
- **Paper reference**: forge-harness: A Meta-Harness Engineering Platform for Terminal-Native Claude Code Workflows. Zenodo DOI: 10.5281/zenodo.20397566. arXiv: [pending number].
87
+ **Paper reference**: forge-harness: A Meta-Harness Engineering Platform for Terminal-Native Claude Code Workflows. Zenodo DOI: 10.5281/zenodo.20397565. arXiv: [pending number].
88
88
 
89
89
  ---
90
90
 
@@ -778,7 +778,7 @@ Missing any layer = compression risk. (Path conventions adapt per project — se
778
778
 
779
779
  - `README.md §Architecture — 2-layer design` — sidecar note in Automation layer section
780
780
  - `knowledge/shared/harness-core/agents_md_runtime_details.md §Sidecar-routing-and-waiting` — sidecar note distinguishing adapter invocation from agent dispatch
781
- - FH paper (Zenodo DOI: 10.5281/zenodo.20397566, arXiv: submit/7657304) — harness-as-durable-layer thesis
781
+ - FH paper (Zenodo DOI: 10.5281/zenodo.20397565 all versions) — harness-as-durable-layer thesis. The arXiv submission `submit/7657304` was rejected at moderation 2026-09-06; cite the Zenodo record, not that ID
782
782
  - A sister-harness `sidecar-orchestrator` SKILL.md (2026-06-01) — gh copilot + corporate endpoint + 3-tier fallback + 3-layer persistence
783
783
  - arXiv:2605.26302 AgingBench — compression aging defense rationale
784
784
  - `hybrid_orchestration_architecture_roadmap.md` — proposed (not-yet-implemented) architecture direction that would generalize this sidecar strategy into a hybrid orchestration engine
@@ -3527,3 +3527,24 @@
3527
3527
  evidence: "릴리스 v3.1.0 npm 라이브(latest=3.1.0) + GitHub 릴리스 + PR #664 머지 · PR #665(verify 재시도) · gh-pages 랜딩 개편 발행(지도 91%→5.6%) · tt-a1i/archify#328 upstream 제출(스위트 1058/1030/0, zip 결정적 재빌드) · qasp PR #269 머지 · 논문 v1.0.1 수정본(인용 21/21 재검증, 원본 해시 불변). cross-family(codex) A급 1건 적발 — CHANGELOG L12 과대주장, 소스 재확인 후 수리, **자력 적발 0**"
3528
3528
  tokens_subagent: 2100000
3529
3529
  notes: "🟥 이 날의 최대 발견은 코드가 아니라 **논문**이다 — 반려된 v1.0 의 참고문헌 17건 중 11건이 어긋나 있었다(ID 는 실재, 제목·저자가 다른 논문 것, 한 건은 공간생물학). 그 논문 자신이 «존재 검사 → 출처 검사» 2단계를 방법론으로 제시하고 「허위율 0%」라 보고했다. **방법은 있었고 자기에게 안 돌렸다.** 대조군이 이례적으로 좋다: 같은 심사 창에서 제품명 0회인 자매 논문은 보류 해제. 🟥 부수 교훈 3건이 전부 계기 결함이다 — ① 내 인용 추출기가 References 대신 Changelog 를 긁었다 ② 레인 rc=1 인데 MV 줄만 필터해 보고 실패 3건을 놓쳤다 ③ archify 테스트를 잘못된 cwd 에서 돌려 rc=254 를 «실패»로 읽을 뻔했다. 셋 다 «출력을 좁혀 본 것»이 원인이다"
3530
+
3531
+ - date: 2026-09-07
3532
+ agent: general-purpose ×2 (논문 B 라운드 2 — 같은 에이전트 resume · qasp M①M③ 수리 완료분) + 자정 이전 세션에서 이어진 디스패치의 자정 이후 회신 처리
3533
+ invoked_by: FH governor session (Opus 5, 09-06 저녁부터 이어진 한 세션 — 운영자 «자율주행 이어가줘 · 승인 필요한 것만 아침에»)
3534
+ task: "논문 B 거버너 심사 M1~M3 반영(증거 출처 공개화 · 사후 택소노미 도출절 · 「few」 정량화) · qasp 엣지 TC 2막 도달 수리 PR"
3535
+ context_card: yes (심사 지적 셋 + 유지할 것 명시 + 산출 경로 고정)
3536
+ outcome: accepted
3537
+ evidence: "논문 B DRAFT2 — 사례표 `memory/` 인용 13행 → **0**(🟥 내가 센 11 이 아니라 13 이었다: `tracks/**` 도 gitignored 라는 걸 에이전트가 `git ls-files --error-unmatch` + known-pair 로 잡았다) · 「few」 → **4/24** · 내부 모순 2건 자체 적발·수리. qasp PR #270 머지(fe95282), CI 6/6 — 🟥 그중 2건은 그 PR 이 만든 결함이고 거버너가 잡아 고쳤다(사유 문구가 CI 가드의 grep 대상 · 자동 탐색이 음성 컨트롤 무력화)"
3538
+ tokens_subagent: 700000
3539
+ notes: "🟥 사고 하나 — 에이전트가 DRAFT 1 을 제자리 편집으로 덮었고 회수 불가(파일·스냅샷·git 전부 0). **원인은 내 쪽**이다: 「이전 판 남겨라」를 임무문에 산문으로만 적고 발주 전에 커밋하지 않았다. 메모리 `feedback_commit_the_artifact_before_the_next_round` 신설 + DRAFT2 즉시 커밋으로 적용. 🟥 그리고 사이드카 주장 하나(row 29)를 거버너가 재현 못 해 라운드 3 으로 되돌렸다 — 이 논문이 다루는 주제가 바로 그것이라 «그럴듯한데 원 출처에 없는 것」을 실으면 논문이 자기를 반증한다"
3540
+
3541
+ - date: 2026-09-07
3542
+ agent: general-purpose ×2 (opus)
3543
+ purpose: "논문 v1.2 개정(분석 → HTML 수술, 같은 에이전트 재개) · qasp #251 판정 경로 조사"
3544
+ tier: opus
3545
+ outcome: accepted
3546
+ evidence: "논문: 복제 3건을 정확히 캐고 🟥 **v1.1 이 안 실은 가장 무거운 사실을 잡았다** — GT recall 이 세 복제 어디에서도 재계산되지 않았고, 논문의 중심 비교 주장이 거기 걸려 있다. 거버너가 독립 grep + 컨트롤(`recall`·`GT` 각 0회 vs `S-grade` 12 · `Cond` 8)로 재확인. 수술 후 검증 11항 전부 통과, 거버너 재검 7항 + 추가 6항 통과. qasp: 정본 먼저 읽고 «#251 은 버그가 아니라 스펙 개정»을 짚었고, lockstep 계약 사본 ~20곳 · 배치 전량 사망 3곳 · 33.6% 의 출처 부재를 전부 파일:줄로 냈다"
3547
+ tokens_subagent: 520000
3548
+ dispatch_count_measured: 131 # session_close_check ④-e 집계. 위 2 엔트리는 «클래스 통합»이고
3549
+ # 총 스폰 수는 131 이다 — 「2건」만 보면 과소 계상으로 읽힌다
3550
+ notes: "🟥 거버너가 잡은 오류 1건 — qasp 조사가 `web_regress.py:423` 의 `return \"PASS\"` 를 «레포 유일 fail-open» 으로 지목했는데 **틀렸다**. `_STATUS_MAP` 이 세 값만 만들고 그 밖은 두 진입점에서 raise 하며 SKIPPED 는 앞 분기가 먹으므로 소진적 else 다. 정적 패턴만 보고 **도달 가능성을 안 본** 부류. 그리고 내 계기도 한 번 틀렸다(`endswith(\"pass\")` 가 `not-pass` 를 삼켜 8.3% 오출력) — 같은 얼굴이라 PR 본문에 적었다. 두 에이전트 다 «확인 못 한 것»을 이름으로 나열했고 그게 검수를 값싸게 만들었다"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chrono-meta/fh-gate",
3
- "version": "3.1.1",
3
+ "version": "3.1.3",
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": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fh-commons",
3
- "version": "3.1.1",
3
+ "version": "3.1.3",
4
4
  "engines": {
5
5
  "claudeCode": ">=1.0.0"
6
6
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fh-meta",
3
- "version": "3.1.1",
3
+ "version": "3.1.3",
4
4
  "engines": {
5
5
  "claudeCode": ">=1.0.0"
6
6
  },
@@ -1,5 +1,52 @@
1
1
  # forge-harness (fh-meta) Changelog
2
2
 
3
+ ### [3.1.3] — 2026-09-07 — 출하 문서가 「arXiv in review」라고 말하는데 반려됐다
4
+
5
+ 링크 정정이 아니라 **거짓 진술** 때문에 올린다. 3.1.2 를 받은 소비자의
6
+ `docs/OUTPUT_EVIDENCE.md` 가 methodology 논문을 이렇게 말하고 있었다:
7
+
8
+ Paper v1.0 — methodology | Zenodo … arXiv in review
9
+
10
+ **2026-09-06 에 모더레이션에서 반려됐다.** 사유는 방법론이 아니라 인용이었다 —
11
+ 17개 참고문헌 중 11개가 실제로 인용한 저작과 맞지 않았다. 그 정정본이 v1.0.1 이다.
12
+
13
+ 바뀐 것:
14
+
15
+ docs/OUTPUT_EVIDENCE.md 반려 사실 + v1.0.1 정정본 명시.
16
+ 「방법론에 대한 평가로 읽지 마라」와
17
+ 「v1.0.1 을 재심사된 것으로도 읽지 마라」를 함께 적었다
18
+ README ×4 v1.0.1 (22542168) · 거버넌스 v1.2 (22558450) 로
19
+ knowledge/ 인용 5곳 concept DOI (20397565) — 판이 아니라 «그 논문»을
20
+ 가리키는 자리라 항상 최신으로 해석된다
21
+ multi_model_sidecar… 죽은 arXiv ID `submit/7657304` 를 죽었다고 명시
22
+ README ×4 마켓플레이스 진입 경로(배지 + 본문 링크). 슬러그는
23
+ 추측 3개가 404 인 것을 먼저 확인하고 실측으로 골랐다
24
+
25
+ 동작 무변경 — `action.yml`·게이트·레인 무접촉이라 **patch** 다.
26
+
27
+ ⚠️ 이 릴리스가 검증하지 못한 것: 배지 «이미지» URL. shields.io 는 존재하지 않는
28
+ 경로에도 200 을 주므로 그 확인에는 판별력이 없다. 검증된 것은 링크뿐이다.
29
+
30
+ ### [3.1.2] — 2026-09-07 — Action 설명이 마켓플레이스 한도를 넘어 게시가 막혔다
31
+
32
+ 운영자가 마켓플레이스 개발자 약관에 동의해 게시 체크박스가 열리자, GitHub 의 리스팅 폼이
33
+ `action.yml` 을 검증하고 **거절**했다:
34
+
35
+ ✅ 이름 fh-gate — typed AI code-review verdict
36
+ ❌ 설명 Description must be less than 125 characters ← 155자였다
37
+ ✅ 아이콘 shield · ✅ 색상 purple · ✅ README 존재
38
+
39
+ **이 레포의 어떤 검사도 그 한도를 안 보고 있었다.** 그래서 태그와 릴리스가 이미 만들어진 뒤,
40
+ 게시 단계에서야 드러났다 — 배우기에 가장 비싼 자리다.
41
+
42
+ - 설명을 **121자**로(«안 돌았다 ≠ 통과」라는 이 액션의 구별점은 유지)
43
+ - **레인 D6** — `action.yml` 의 `description` 길이를 판정한다. 한도는 GitHub 것이라 여기서는
44
+ 상수일 수밖에 없고, 그 사실을 숨기지 않고 주석에 적었다. `D6` 은 읽기 실패도 잡는다(빈 값이면
45
+ 길이 검사가 공허 통과한다). fail-before: 옛 155자 설명으로 되돌리면 **정확히 D6 만** 적색
46
+ (34 passed · 1 failed), 복원하면 35/0.
47
+
48
+ ⚠️ `v3.1.0`·`v3.1.1` 태그는 안 움직인다. 마켓플레이스에 게시되는 것은 **3.1.2** 다.
49
+
3
50
  ### [3.1.1] — 2026-09-07 — fh-gate Action 의 기본 `level` 이 게이트가 안 받는 값이었다
4
51
 
5
52
  ### 🟥 무엇이 깨져 있었나
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fh-qp",
3
- "version": "3.1.1",
3
+ "version": "3.1.3",
4
4
  "engines": {
5
5
  "claudeCode": ">=1.0.0"
6
6
  },
@@ -90,6 +90,26 @@ else
90
90
  fi
91
91
  fi
92
92
 
93
+ # D6 — the Marketplace listing form caps `description` at under 125 characters and REFUSES to
94
+ # publish above it. Measured 2026-09-07 on the v3.1.1 release form: "Description must be less than
95
+ # 125 characters" at 155 chars. Nothing here checked it, so the limit surfaced only at the publish
96
+ # step — after the tag and the release already existed, which is the expensive place to learn it.
97
+ # The cap is GitHub's, not ours, so it is a constant here by necessity; that is named, not hidden.
98
+ _DESC="$(python3 - "$A" <<'PY' 2>/dev/null
99
+ import sys, yaml, io
100
+ print(yaml.safe_load(io.open(sys.argv[1], encoding="utf-8")).get("description", ""))
101
+ PY
102
+ )"
103
+ _DESC_LEN=${#_DESC}
104
+ if [ "$_DESC_LEN" -eq 0 ]; then
105
+ no "D6 could not read action.yml description (instrument dead — the length check below is vacuous)"
106
+ else
107
+ [ "$_DESC_LEN" -lt 125 ] \
108
+ && ok "D6 description is $_DESC_LEN chars (< 125, the Marketplace listing cap)" \
109
+ || no "D6 description is $_DESC_LEN chars — the Marketplace form refuses to publish at 125 or more"
110
+ fi
111
+
112
+
93
113
 
94
114
  [ -n "$MAP" ] || { echo "❌ HARNESS: could not extract the case block from action.yml"; exit 10; }
95
115
  printf '%s' "$MAP" | grep -q 'esac' || { echo "❌ HARNESS: extracted block has no esac (truncated)"; exit 10; }