@chrono-meta/fh-gate 1.4.52 → 1.4.54
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/registry/README.md +26 -0
- package/.claude/registry/agent_cards.json +73 -0
- package/.claude-plugin/marketplace.json +25 -0
- package/AGENTS.md +2 -2
- package/CHEATSHEET.md +1 -0
- package/CLAUDE.md +31 -1
- package/README.ja.md +443 -0
- package/README.ko.md +442 -0
- package/README.md +70 -5
- package/README.zh.md +425 -0
- package/bin/fh-codex-doctor.js +419 -0
- package/docs/codex-compat.md +18 -4
- package/knowledge/shared/harness-core/harness_incubator_doctrine.md +139 -0
- package/knowledge/shared/harness-core/sonnet_floor_doctrine.md +7 -0
- package/package.json +15 -4
- package/plugins/fh-commons/.claude-plugin/plugin.json +23 -0
- package/plugins/fh-meta/.claude-plugin/plugin.json +36 -0
- package/scripts/count_check.sh +95 -0
- package/scripts/selfcheck.sh +27 -20
- package/templates/CLAUDE.md +87 -0
- package/templates/local_fh_context.md +18 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# .claude/registry
|
|
2
|
+
|
|
3
|
+
Machine-readable registries for the forge-harness automation layer.
|
|
4
|
+
|
|
5
|
+
## agent_cards.json
|
|
6
|
+
|
|
7
|
+
The **canonical machine-readable mirror** of the agent registry. `AGENTS.md` stays the
|
|
8
|
+
human-facing source of truth (roles, rationale, prose); `agent_cards.json` is its structured
|
|
9
|
+
counterpart for tooling — capability discovery, dispatch routing, and count-drift detection.
|
|
10
|
+
|
|
11
|
+
Inspired by the **A2A "Agent Card"** pattern (the 2026 standard for agent capability discovery):
|
|
12
|
+
each card declares an agent's `id`, `file`, `role`, `allowed_tools`, `invoked_by`, and a `writes`
|
|
13
|
+
flag. `agent_count` is asserted at the top level and **should equal the number of tracked `.md`
|
|
14
|
+
files in `.claude/agents/`, `plugins/fh-meta/agents/`, and `plugins/fh-commons/agents/`** —
|
|
15
|
+
re-checked on every agent add/remove by `harness-doctor` Step 11-2-B, which compares
|
|
16
|
+
`agent_count` against the live file count; a mismatch is a State-Degradation signal.
|
|
17
|
+
|
|
18
|
+
### Regeneration
|
|
19
|
+
|
|
20
|
+
Hand- or script-derived from `AGENTS.md` (Agent Registry + Tool-restrictions tables) plus each
|
|
21
|
+
tracked agent `.md` frontmatter. Regenerate whenever an agent is added, removed, or its tools
|
|
22
|
+
change — and re-check `agent_count`. On any disagreement between `AGENTS.md` and an agent's own
|
|
23
|
+
`.md`, **prefer the agent `.md`** (e.g. `challenger.md` has no `tools:` field, so its tools come
|
|
24
|
+
from `AGENTS.md`).
|
|
25
|
+
|
|
26
|
+
> Frontier basis: `knowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md` (identity ① Control Tower — closes the "no canonical machine-readable registry / count drift" gap noted in `fh_ecosystem_positioning.md`).
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "1.0",
|
|
3
|
+
"generated": "2026-06-07",
|
|
4
|
+
"source": "derived from AGENTS.md (Agent Registry + Tool restrictions tables) and tracked agent files",
|
|
5
|
+
"convention": "A2A Agent Card pattern — machine-readable capability discovery, count-synced to plugin agents/ directories",
|
|
6
|
+
"agent_count": 8,
|
|
7
|
+
"agents": [
|
|
8
|
+
{
|
|
9
|
+
"id": "beginner",
|
|
10
|
+
"file": "plugins/fh-meta/agents/beginner.md",
|
|
11
|
+
"role": "First-contact cold-read standpoint (user-mastery spectrum entry tier) — surfaces onboarding friction a fluent author cannot feel; constructive, not adversarial",
|
|
12
|
+
"allowed_tools": ["Read"],
|
|
13
|
+
"invoked_by": ["sim-conductor", "marketplace-gate", "install-wizard", "direct"],
|
|
14
|
+
"writes": false
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "main-player",
|
|
18
|
+
"file": "plugins/fh-meta/agents/main-player.md",
|
|
19
|
+
"role": "Engaged-user standpoint (user-mastery spectrum core tier) — intelligently scopes Light/Midcore/Heavy; Heavy carries the classic power-user edge/limit lens",
|
|
20
|
+
"allowed_tools": ["Read", "Grep", "Glob"],
|
|
21
|
+
"invoked_by": ["sim-conductor", "direct"],
|
|
22
|
+
"writes": false
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "expert",
|
|
26
|
+
"file": "plugins/fh-meta/agents/expert.md",
|
|
27
|
+
"role": "Domain-authority standpoint (user-mastery spectrum frontier tier) — web-grounded accuracy + SOTA currency, citation-enforced; checks against the external world, not internal assets",
|
|
28
|
+
"allowed_tools": ["Read", "WebSearch", "WebFetch"],
|
|
29
|
+
"invoked_by": ["sim-conductor", "paper-review", "direct"],
|
|
30
|
+
"writes": false
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "challenger",
|
|
34
|
+
"file": "plugins/fh-meta/agents/challenger.md",
|
|
35
|
+
"role": "Frontier-grade adversarial evaluator — adapts attack vectors to artifact type, enforces evidence citation, models its own information asymmetry; U1 absorbs the skeptic 'why not just X?' lens",
|
|
36
|
+
"allowed_tools": ["Read", "Grep", "Glob", "WebSearch", "WebFetch"],
|
|
37
|
+
"invoked_by": ["steel-quench", "harvest-loop", "sim-conductor", "direct"],
|
|
38
|
+
"writes": false
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "fact-checker",
|
|
42
|
+
"file": "plugins/fh-meta/agents/fact-checker.md",
|
|
43
|
+
"role": "Pre-recommendation deduplication — greps hub assets for existing skills/agents/patterns before a new recommendation; catches stale facts and duplicate work",
|
|
44
|
+
"allowed_tools": ["Read", "Grep", "Glob"],
|
|
45
|
+
"invoked_by": ["main-agent-before-new-asset"],
|
|
46
|
+
"writes": false
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"id": "hub-persona-auditor",
|
|
50
|
+
"file": "plugins/fh-meta/agents/hub-persona-auditor.md",
|
|
51
|
+
"role": "Pre-publication audit of external-facing assets — 3+ persona simulation, 4-axis review (resonance/confusion/resistance/supplement), 3-tier revision proposals",
|
|
52
|
+
"allowed_tools": ["Read", "Grep", "Glob"],
|
|
53
|
+
"invoked_by": ["hub-cc-pr-reviewer", "sim-conductor", "direct"],
|
|
54
|
+
"writes": false
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "persona-innovator",
|
|
58
|
+
"file": "plugins/fh-meta/agents/persona-innovator.md",
|
|
59
|
+
"role": "Naming gap detection + frame proposals + external frontier absorption signals",
|
|
60
|
+
"allowed_tools": ["Read", "Grep", "Glob", "WebSearch", "WebFetch"],
|
|
61
|
+
"invoked_by": ["sim-conductor", "harvest-loop", "direct"],
|
|
62
|
+
"writes": false
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"id": "quench-challenger",
|
|
66
|
+
"file": "plugins/fh-commons/agents/quench-challenger.md",
|
|
67
|
+
"role": "Steel-quench dedicated adversary — 3-DNA synthesis of Devil + Innovator + Prescriber; every attack paired with a concrete fix direction",
|
|
68
|
+
"allowed_tools": ["Read", "Grep", "Glob"],
|
|
69
|
+
"invoked_by": ["steel-quench", "install-doctor", "marketplace-gate"],
|
|
70
|
+
"writes": false
|
|
71
|
+
}
|
|
72
|
+
]
|
|
73
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "forge-harness",
|
|
3
|
+
"owner": {
|
|
4
|
+
"name": "chrono-meta",
|
|
5
|
+
"email": "chrono-meta@users.noreply.github.com"
|
|
6
|
+
},
|
|
7
|
+
"metadata": {
|
|
8
|
+
"description": "forge-harness — Multi-instance persona orchestration and meta-tooling marketplace for Claude Code. Harness engineering toolkit for teams that want to evolve their AI collaboration practices.",
|
|
9
|
+
"pluginRoot": "./plugins"
|
|
10
|
+
},
|
|
11
|
+
"plugins": [
|
|
12
|
+
{
|
|
13
|
+
"name": "fh-meta",
|
|
14
|
+
"version": "1.4.54",
|
|
15
|
+
"description": "Hub meta-operations toolkit — 33 skills + 7 agents. 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
|
+
"source": "./plugins/fh-meta"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"name": "fh-commons",
|
|
20
|
+
"version": "1.4.54",
|
|
21
|
+
"description": "Project-agnostic utility skills — 4 skills (convergence-loop · deliberation · mcp-circuit-breaker · token-budget-gate) + 1 agent (quench-challenger). Domain-independent utilities transplantable into any project.",
|
|
22
|
+
"source": "./plugins/fh-commons"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
package/AGENTS.md
CHANGED
|
@@ -138,8 +138,8 @@ echo "Apply the following skill to the artifact below." | \
|
|
|
138
138
|
|
|
139
139
|
| Tier | Definition | Examples |
|
|
140
140
|
|---|---|---|
|
|
141
|
-
| **M1 — Full** | All phases run without CC-native dependencies — no Stop hook, no `.claude/agents/` dispatch, no `/model` | `token-budget-gate`, `asset-placement-gate`, `phantom-quench`, `deep-clarify`, `
|
|
142
|
-
| **M2 — Partial** | Core workflow runs; CC-native phases require manual adaptation or skip | `steel-quench` (Wave 1–3 ✅; quench-challenger agent = manual), `harness-doctor`, `context-doctor`, `sim-conductor`, `harvest-loop` (git scan phase ✅; PR auto-proposal = manual) |
|
|
141
|
+
| **M1 — Full** | All phases run without CC-native dependencies — no Stop hook, no `.claude/agents/` dispatch, no `/model` | `token-budget-gate`, `asset-placement-gate`, `phantom-quench`, `deep-clarify`, `convergence-loop` |
|
|
142
|
+
| **M2 — Partial** | Core workflow runs; CC-native phases require manual adaptation or skip | `deliberation` (Mediator/Jury Agent steps = manual), `steel-quench` (Wave 1–3 ✅; quench-challenger agent = manual), `harness-doctor`, `context-doctor`, `sim-conductor`, `harvest-loop` (git scan phase ✅; PR auto-proposal = manual) |
|
|
143
143
|
| **M3 — CC-only** | Requires CC Stop hook or session-scoped agent dispatch; methodology reference only | `goal-quench` (Phase 3 Stop hook), `hub-cc-pr-reviewer` (CC session context), `install-wizard` (settings.json write) |
|
|
144
144
|
|
|
145
145
|
**M2 adaptation pattern**: when a step references `Agent(subagent_type=...)` or a slash command, substitute with `fh-run` (preferred) or a direct `codex exec` call reading the sub-agent's SKILL.md — same workflow, different runtime.
|
package/CHEATSHEET.md
CHANGED
|
@@ -197,6 +197,7 @@ FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-gate # Codex backend (d
|
|
|
197
197
|
# Run a skill or agent doc through a backend, outside Claude Code
|
|
198
198
|
npx --package @chrono-meta/fh-gate fh-run --skill <name>
|
|
199
199
|
npx --package @chrono-meta/fh-gate fh-goal "<goal text>" # goal runner
|
|
200
|
+
npx --package @chrono-meta/fh-gate fh-codex-doctor --strict # Codex adapter drift check
|
|
200
201
|
```
|
|
201
202
|
|
|
202
203
|
| Knob | Values | Effect |
|
package/CLAUDE.md
CHANGED
|
@@ -21,6 +21,17 @@ Running Claude Code in this project activates **Control Tower** mode.
|
|
|
21
21
|
|
|
22
22
|
The forge-harness hub is not just a repository — it is the **command center for all Claude Code-connected projects in your local environment**.
|
|
23
23
|
|
|
24
|
+
**Doctrine (2026-07-12, operator-forged)**: a harness **machinizes intent** — it reads the human's
|
|
25
|
+
intent and forges it into a machined form (AI-followable rules or deterministic code), via
|
|
26
|
+
`intent → forge → agreement (HITL) → machinery`. Its payoff is relocating trial-and-error off the human
|
|
27
|
+
(into the harness, run in parallel), so human time drops and attention routes to irreversible points.
|
|
28
|
+
FH is the **meta-harness and nursery**: it incubates field harnesses (projects *and* new capabilities of
|
|
29
|
+
existing harnesses) in its own sandbox — expensive per run, cheaper in total because trial-and-error
|
|
30
|
+
pools and compounds — and **emits** them as independent specialized harnesses (shipped today as
|
|
31
|
+
scaffold + approval machinery; the full chamber flow is the named target). Over other harnesses it
|
|
32
|
+
operates in two modes: **compose** (cluster strengths) ∪ **disrupt** (melt and reforge via crucible;
|
|
33
|
+
core invariants never melt). Full doctrine: `knowledge/shared/harness-core/harness_incubator_doctrine.md`.
|
|
34
|
+
|
|
24
35
|
| Layer | Role | Representative Assets |
|
|
25
36
|
|---|---|---|
|
|
26
37
|
| **① 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. | `.claude/rules/auto_project_mapping.md` (mapping + **Full-Harness Mode**) · `harvest-loop` (compounding loop) · `templates/` (project-harness bundle) · `CATALOG.md` |
|
|
@@ -49,6 +60,18 @@ Two orthogonal layers — never collapse them.
|
|
|
49
60
|
self-correct over agreeing (governor-catch). Tone never touches this.
|
|
50
61
|
- **Speech / reaction layer (soft)**: choose warmer words and a steadier texture. Softness is
|
|
51
62
|
word-choice, not length — it adds no filler and lengthens nothing.
|
|
63
|
+
- **Register — match the user's language *and* register (applies to EVERY response, not just greetings)**:
|
|
64
|
+
reply in the user's language and in their register (formal ↔ informal). **Consistency is the rule, not
|
|
65
|
+
the default**: do NOT drift between formal and informal — Korean 반말↔존댓말, English casual↔corporate —
|
|
66
|
+
within a turn, across turns, or across a session. Register drift is a UX defect and dilutes the mascot
|
|
67
|
+
identity. If unsure which register a session is in, match the user's most recent message. The
|
|
68
|
+
Orthogonality guard below applies to register too (a warmer register never softens judgment). This rule
|
|
69
|
+
lives in always-loaded CLAUDE.md, not only in memory, so it fires every turn without depending on
|
|
70
|
+
recall — the 2026-07-12 miss was a session that drifted register because the rule lived only in memory.
|
|
71
|
+
Tone has **no** mechanical hook gate by nature: always-loaded salience is the strongest available lever,
|
|
72
|
+
**not a floor** (no mechanical floor exists for tone — an accepted limitation, not a guarantee). The
|
|
73
|
+
operator or project may pin a concrete default register in a local binding (`CLAUDE.local.md` / UAP
|
|
74
|
+
`preferred register`) — that pin is operator taste and stays local, never in this public file.
|
|
52
75
|
- **Not flattery**: soft charisma is not pleasing the user. Disagree plainly when the work calls for it;
|
|
53
76
|
warmth and a "no" coexist (no Gemini-grade sycophancy).
|
|
54
77
|
- **Greeting / onboarding**: open with a warm, identity-revealing welcome (new / returning / operator
|
|
@@ -401,7 +424,14 @@ let the innovator center a recommend cascade, produce a ranked install plan, and
|
|
|
401
424
|
`CLAUDE.md`, mapped `tracks/`, **locally-connected sibling repos** (the env-delta SessionStart hook already
|
|
402
425
|
emits "N unmapped sibling repos"), and the `LOCAL_SKILL_REGISTRY` + stack/language. Then **branch**:
|
|
403
426
|
*new-build* (no prior harness) · *extend-existing* (harness present → found→extend, never fork) ·
|
|
404
|
-
*maintain* (mature harness → route to the Field-Harness Diagnostic instead).
|
|
427
|
+
*maintain* (mature harness → route to the Field-Harness Diagnostic instead).
|
|
428
|
+
**new-build sub-branch — simulate-first (incubator doctrine)**: judge the project's character before
|
|
429
|
+
building. Clear · small · low failure-cost → build immediately (current flow). Uncertain · exploratory ·
|
|
430
|
+
failure-expensive → **recommend simulate-first**: run the project as a simulation inside the FH chamber
|
|
431
|
+
(harness-unit sandbox) and *emit* the initial project only after the simulation holds — one-line
|
|
432
|
+
recommendation, operator decides (HITL; never forced). Same branch applies to a **new capability of an
|
|
433
|
+
existing harness** (incubate in the chamber, then transplant). Rationale + economics:
|
|
434
|
+
`knowledge/shared/harness-core/harness_incubator_doctrine.md §3`. This audit-and-branch pre-step
|
|
405
435
|
is imported from the revfactory/harness Phase-0 State Audit (sister-audit 2026-07-07) — it tightens FH's
|
|
406
436
|
found→extend reflex and is the "이미 로컬에 연결돼 있으면 자동 탐색" mechanism.
|
|
407
437
|
2. **Innovator-centered recommend**: `persona-innovator` centers the cascade (Mode I on acceleration / Mode F
|