@chrono-meta/fh-gate 1.4.51 → 1.4.53
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/CATALOG.md +6 -0
- package/CHEATSHEET.md +1 -0
- package/CLAUDE.md +21 -11
- package/README.md +12 -1
- package/bin/fh-codex-doctor.js +419 -0
- package/docs/codex-compat.md +18 -4
- package/knowledge/shared/harness-core/capability_escalation_consent.md +7 -0
- package/knowledge/shared/harness-core/claude_md_gate_details.md +15 -8
- package/knowledge/shared/harness-core/deep_research_capability_ladder.md +1 -1
- package/knowledge/shared/harness-core/fh_detail_protocols.md +4 -0
- package/knowledge/shared/harness-core/loop_engineering.md +80 -0
- package/knowledge/shared/harness-core/multi_model_sidecar_strategy.md +5 -1
- package/knowledge/shared/harness-core/self_evolution_routine.md +17 -12
- package/knowledge/shared/harness-core/sonnet_floor_doctrine.md +132 -0
- package/package.json +11 -3
- package/plugins/fh-commons/.claude-plugin/plugin.json +23 -0
- package/plugins/fh-commons/skills/deliberation/SKILL.md +1 -1
- package/plugins/fh-meta/.claude-plugin/plugin.json +36 -0
- package/plugins/fh-meta/skills/agent-composer/SKILL.md +1 -1
- package/plugins/fh-meta/skills/apex-review/SKILL.md +1 -1
- package/plugins/fh-meta/skills/auto-decorrelation/SKILL.md +1 -1
- package/plugins/fh-meta/skills/context-doctor/SKILL.md +1 -1
- package/plugins/fh-meta/skills/harvest-loop/SKILL.md +1 -1
- package/plugins/fh-meta/skills/install-wizard/SKILL.md +1 -1
- package/plugins/fh-meta/skills/meta-prompt-builder/SKILL.md +1 -1
- package/plugins/fh-meta/skills/sim-conductor/SKILL.md +1 -1
- package/plugins/fh-meta/skills/steel-quench/SKILL.md +1 -1
- package/plugins/fh-meta/skills/verify-bidirectional/SKILL.md +1 -1
- 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.53",
|
|
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.53",
|
|
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/CATALOG.md
CHANGED
|
@@ -8,6 +8,12 @@ AI reads this file first when searching past work. Open individual files for det
|
|
|
8
8
|
|
|
9
9
|
<!-- Add entries in reverse date order (newest at top) -->
|
|
10
10
|
|
|
11
|
+
### 2026-07-10 | forge-harness | #sonnet-floor, #doctrine, #loop-engineering, #tier-census, #cross-family, #pre-commit-gate, #dispatch-first
|
|
12
|
+
**File:** knowledge/shared/harness-core/sonnet_floor_doctrine.md · knowledge/shared/harness-core/loop_engineering.md
|
|
13
|
+
Encoded the operator-declared **Sonnet-Floor Doctrine** (base ops 100% Sonnet-runnable; tier-gated capability = defect; escalation = dispatch, never substrate; depth ladder = effort→dispatch→anchored-Sonnet) as a canonical axiom node, plus **loop_engineering.md** (5-question design-time discipline + FH loop inventory MECH/PROSE census + evidence-threshold hardening backlog). Cross-family evolution pass: codex gpt-5.5 xhigh repo census (T1 tier refs / T2 loop legs / T3 contradictions) + agy Gemini 3.1 Pro breadth (pattern-level only, zero citations imported — phantom-risk URLs). All 6 identified availability-gates fixed: pre-commit Axis-2 gains a **sonnet-floor lane** (anchor-required, R-tier auto-queue, 8/8 regression fixtures in scripts/test_marker_floor_lanes.sh), self_evolution weekly dead-end recast dispatch-first, Mode D notice re-directed (keep Sonnet + dispatch primary), canary opus-judge → Sonnet-governor+anchor, verify-bidirectional "never stay at sonnet" fixed, 9 SKILL.md `model: opus` hard pins retired (session-inherit). Trust-floors tightened to run-first/ask-last (full Sonnet autonomy; gates stay). Sonnet blind sims: 2 dispatched, 1 salience miss caught (loop-stub enumeration) → hardened → re-sim PASS.
|
|
14
|
+
- Decision: Sonnet = the optimization target, measured spine = H1 (harness benefit largest on weaker tiers); Opus/Fable-only capability is now a named defect class with a census discipline.
|
|
15
|
+
- Open: quarterly/substrate loop rows are governor self-assessment (R-tier external census pending); sonnet-floor markers queue via below_floor_scan.sh R-tier lane.
|
|
16
|
+
|
|
11
17
|
### 2026-07-07 | forge-harness | #sister-asset, #cross-audit, #revfactory, #harness-100, #agent-composer, #benchmarking, #linkedin, #source-verification, #diffusion-llm
|
|
12
18
|
**File:** tracks/_audit/session_2026_07_07_revfactory-harness.md
|
|
13
19
|
Sister-asset cross-audit of `revfactory/harness` + `revfactory/harness-100` (AX TF lead-recommended benchmarking target) vs FH — their axis = one-shot team-architecture generation + a 200-harness ready library (breadth/quick-start); FH's axis = dynamic composition (`agent-composer`) + governance (4-axis gate, irreversibility floors, continuity), which their pipeline lacks entirely. Plus LinkedIn source-verification for the operator's 2 queued insight links: diffusion-LLM paradigm-shift paper confirmed accurate (ICML 2026 Outstanding Paper Award, JustGRPO, arXiv:2601.15165 via official ICML blog); "Claude Code loop-engineering" post confirmed to be about `k021/claude-code-skills` — the *same* sister-asset Gemini already analyzed, not new content.
|
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
|
@@ -38,6 +38,7 @@ Four foundational assets for hub operations. **Mandatory pre-reference** before
|
|
|
38
38
|
| `knowledge/shared/harness-core/hub_compounding_loop.md` | Feedback automation | Weekly/monthly/quarterly cycles. Axis-6 Compounding automation |
|
|
39
39
|
| `knowledge/shared/dialogue/ai_dialogue_playbook.md` | Dialogue principles (should) | Session start, token efficiency, rule hierarchy, amplifier/coach dual mode |
|
|
40
40
|
| `knowledge/shared/dialogue/claude_code_runtime_flow.md` | Runtime behavior (does) | Chronological flow during a session · sub-agent delegation flowchart |
|
|
41
|
+
| `knowledge/shared/harness-core/sonnet_floor_doctrine.md` | Canonical invariant | **Sonnet-Floor**: base ops 100% Sonnet-runnable · tier-gated capability = defect · escalation = dispatch (consent-gated), never substrate. Loop companion: `loop_engineering.md` |
|
|
41
42
|
|
|
42
43
|
## Voice / Tone — Soft Charisma (delivery layer only)
|
|
43
44
|
|
|
@@ -209,11 +210,14 @@ a session *following prose instructions* (salience-dependent — rules, onboardi
|
|
|
209
210
|
trigger behavior), or is it mechanically enforced (hooks, scripts — tier-independent, normal 4-axis
|
|
210
211
|
path, exempt)? For salience-dependent changes, verify with a **blind simulation in an isolated Agent**
|
|
211
212
|
(no main-session reasoning inherited — isolation is the FH mechanism that keeps the sim honest) with
|
|
212
|
-
`model:` pinned to the tier the change must survive on
|
|
213
|
+
`model:` pinned to the tier the change must survive on — **default sim tier = Sonnet** (the base
|
|
214
|
+
floor every FH behavior must survive on, `sonnet_floor_doctrine.md`). Application strength scales
|
|
215
|
+
with context:
|
|
213
216
|
- **Mode D (FH self-dev) — near-mandatory**: any salience-dependent FH asset change runs the sim
|
|
214
|
-
before Done. Mandatory without exception when the change fixes a behavioral
|
|
215
|
-
specific tier — sim at that same tier
|
|
216
|
-
a stronger model and verifying by review alone leaves
|
|
217
|
+
before Done, at Sonnet by default. Mandatory without exception when the change fixes a behavioral
|
|
218
|
+
miss *observed* on a specific tier — sim at that same tier, even below Sonnet (the verification
|
|
219
|
+
tier must match the failure tier; fixing on a stronger model and verifying by review alone leaves
|
|
220
|
+
"does it fire on the weaker tier?" unanswered).
|
|
217
221
|
- **Field harness assets (templates/ propagated via Full-Harness Mode) — conditional**: sim at the
|
|
218
222
|
default field tier (Sonnet) when the behavior is load-bearing (gates, onboarding, destructive/publish
|
|
219
223
|
paths); skip with a one-line note for low-stakes prose.
|
|
@@ -221,8 +225,9 @@ path, exempt)? For salience-dependent changes, verify with a **blind simulation
|
|
|
221
225
|
(hook logic, scripts, file moves — tier-independent by construction).
|
|
222
226
|
|
|
223
227
|
**Autonomy floor**: the skip/run *judgment* on conditional cases is itself depth-sensitive — trust it
|
|
224
|
-
only at opus-tier or above. A below-floor orchestrator does not silently skip
|
|
225
|
-
the
|
|
228
|
+
only at opus-tier or above. A below-floor orchestrator does not silently skip — and does not stall:
|
|
229
|
+
its default is to RUN the sim (the conservative branch needs no trust); it asks the operator only when
|
|
230
|
+
no runnable path exists (run-first, ask-last — sonnet_floor_doctrine.md §Autonomy at Sonnet).
|
|
226
231
|
|
|
227
232
|
Record sim results in the Axes 2–3 marker + sub-agent invocation log.
|
|
228
233
|
|
|
@@ -241,8 +246,9 @@ measurement is trusted.
|
|
|
241
246
|
**Floor-tier canary (optional pre-screen — token-free, *below* the Sonnet sim)**: a local model ≤ Sonnet
|
|
242
247
|
can blind-pre-screen a salience-dependent edit *before* the Sonnet dispatch is spent. **Canary, NOT gate**:
|
|
243
248
|
a PASS adds cheap floor confidence and you still run the Sonnet sim; a FAIL never blocks alone. The terminal
|
|
244
|
-
verdict stays with the
|
|
245
|
-
|
|
249
|
+
verdict stays with the **Sonnet-or-higher governor bound to a mechanical anchor** (an opus judge is the
|
|
250
|
+
dispatch-recommended strengthener, not a requirement — `sonnet_floor_doctrine.md`) — **no judge-only path**,
|
|
251
|
+
no weak-local-judge regression of the judge-robustness principle (mechanical anchor over judge-only verdict).
|
|
246
252
|
|
|
247
253
|
> **Detail**: See `knowledge/shared/harness-core/claude_md_gate_details.md §Floor-Tier-Canary` — the local
|
|
248
254
|
> model/panel options, the blind-probe procedure, dogfood evidence, and the FAIL-triage (real salience gap
|
|
@@ -272,7 +278,8 @@ the target-tier sim all shared — the decorrelation value made concrete.
|
|
|
272
278
|
|
|
273
279
|
When FH self-dev begins (an FH asset is about to change), check the **session model** and surface **one
|
|
274
280
|
line**, then proceed — never block, **never switch the model** (human override inviolable): opus-tier+ →
|
|
275
|
-
no notice · below-opus → recommend
|
|
281
|
+
no notice · below-opus → **dispatch-first recommend** (keep Sonnet + route depth turns to sidecar/opus
|
|
282
|
+
dispatch; `/model opus` pin = secondary — `sonnet_floor_doctrine.md`) · unknown → static fallback recommend. Once per session;
|
|
276
283
|
field-project (non-FH-asset) sessions never see it. Whether a session actually *escalates* (not just this
|
|
277
284
|
advisory) is governed separately by `capability_escalation_consent.md`.
|
|
278
285
|
|
|
@@ -338,7 +345,8 @@ same as the FH cross-family complement. **In autonomous loops** (innovator loop-
|
|
|
338
345
|
`/goal` · cluster orchestration): this gate is **part of the delegated pipeline**, not an
|
|
339
346
|
afterthought — a load-bearing field change produced autonomously runs the lint → cross-family →
|
|
340
347
|
converge loop *before* it is Done. Autonomy floor (§Floor governance): the skip/run judgment is
|
|
341
|
-
trusted only at opus-tier+; below-floor
|
|
348
|
+
trusted only at opus-tier+; below-floor RUNS the review by default (run-first, ask-last — asks only
|
|
349
|
+
when no runnable path exists), never silently skips (sonnet_floor_doctrine.md §Autonomy at Sonnet).
|
|
342
350
|
|
|
343
351
|
> **Detail** (discretion principle · 4-face signature · gate mechanics · n=7 qasp evidence):
|
|
344
352
|
> `knowledge/shared/harness-core/field_verdict_crossfamily_gate.md`.
|
|
@@ -361,6 +369,7 @@ dozen skills to invoke. Every fix is HITL — the diagnostic **proposes**, never
|
|
|
361
369
|
| **Token / salience** | salience-split candidates (`/context-doctor` · `/salience-splitter` targets) | oversized always-loaded SKILL.md / CLAUDE.md — trim candidates |
|
|
362
370
|
| **Structure** | `/harness-doctor` (L1–L4) | orphaned/redundant/decorative units, missing Done-When, ≥70% overlap |
|
|
363
371
|
| **Verdict/gate degrade** | `scripts/degrade_direction_scan.sh` | a field verdict/gate helper that degrades toward permissive (advisory pre-screen) |
|
|
372
|
+
| **Loop-readiness** (황민호 loop-eng 5-question lens, 2026-07-10 — detail home: `loop_engineering.md`, incl. the FH loop inventory + design-time discipline) | *Loop-runtime axis — net-new vs Structure* (harness-doctor scans static form; this scans whether the path closes a loop). **Mechanical grep**: `/goal-quench`·`/loop` wiring present · check-class token declared. **Judged**: is the persisted state (card/handoff/memory) actually reloaded · is the declared check-class anchored, not judged-only · does the path halt. Done-When *presence* → see Structure row (no double-grep). **Adversarial pair** (for the judged sub-checks — decorrelated, behavior-vs-checklist): a target-tier blind sim that *runs* the path and observes whether it halts + persists, rather than re-checklisting it (the harness litmus shares this lens's axis, so it is a co-lens, not the adversary). | an agent path that *runs but doesn't loop*: no completion criterion (Done-When absent), judged-only validation with no anchor, no halt/budget guard (runaway/cost), or no state carried to the next run — the 5 questions (initiate · complete · validate · halt · persist) with 0 answers |
|
|
364
373
|
|
|
365
374
|
**Output**: one ranked list, `M` (must-fix) / `S` (should-fix) / `R` (recommended) — same tiering as
|
|
366
375
|
harness-doctor — each item stating *lens · file:line · one-line fix*. **Then HITL**: the operator approves
|
|
@@ -771,7 +780,8 @@ Closing phrase detected ("wrap up", "done", "good work", "end session", etc.)
|
|
|
771
780
|
> when executing that close step.
|
|
772
781
|
|
|
773
782
|
**Card-last guard**: ①–④-c (incl. ①-b open-PR sweep, ④-c handoff lifecycle) must ALL complete before
|
|
774
|
-
⑤ runs.
|
|
783
|
+
⑤ runs. **Mechanical floor**: `bash scripts/session_close_check.sh` before ⑥ —
|
|
784
|
+
exit 1 (card-last violated / required close artifact missing) blocks the push step until fixed. Any new information produced during ①–④ (new commits from a merged self-PR, model changes,
|
|
775
785
|
new findings, a carry item flipped to DONE) feeds INTO ⑤ — card is never written mid-sequence and
|
|
776
786
|
then left open for more work to accumulate after it.
|
|
777
787
|
|
package/README.md
CHANGED
|
@@ -95,7 +95,7 @@ forge-harness is structured as **two distinct layers**:
|
|
|
95
95
|
| Layer | Contents | AI compatibility |
|
|
96
96
|
|---|---|---|
|
|
97
97
|
| **Methodology layer** | `tracks/`, `knowledge/`, `SKILL.md` docs, session protocols | Any AI model |
|
|
98
|
-
| **Automation layer** | `.claude/agents
|
|
98
|
+
| **Automation layer** | `plugins/*/agents/` (FH agents), `.claude/agents/` (field-project overrides), hooks, slash commands, `CLAUDE.md` rules | Claude Code only |
|
|
99
99
|
|
|
100
100
|
The methodology layer is the portable core — persistent hub, accumulating learnings, curating cross-project knowledge. The automation layer makes it frictionless when running Claude Code.
|
|
101
101
|
|
|
@@ -149,6 +149,17 @@ FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-run --skill phantom-quenc
|
|
|
149
149
|
FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-run --agent fh-commons:quench-challenger --file plugins/fh-meta/skills/foo/SKILL.md
|
|
150
150
|
```
|
|
151
151
|
|
|
152
|
+
To check whether a changed FH skill/agent surface still has a clean Codex adapter path, run:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
npx --package @chrono-meta/fh-gate fh-codex-doctor --strict
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
`fh-codex-doctor` scans the canonical skill/agent registry and reports which units are Codex-native,
|
|
159
|
+
adapter-required, Claude-native, or unclassified. It is a drift detector for the thin adapter boundary;
|
|
160
|
+
it does not try to clone the Claude Code automation layer. When run from an FH checkout it scans the
|
|
161
|
+
current working tree; outside a checkout it scans the installed package.
|
|
162
|
+
|
|
152
163
|
For Codex-primary work, keep using Codex's native goal/session features when available. `fh-goal` is only a portable wrapper for one-off non-interactive runs that should be followed by FH governance:
|
|
153
164
|
|
|
154
165
|
```bash
|