@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
|
@@ -32,7 +32,7 @@ Three platform facts shape the design below:
|
|
|
32
32
|
β post the digest as a COMMENT on the standing Issue "π°οΈ Frontier Digest Log"
|
|
33
33
|
β no repo commit, no PR (cheap, ephemeral-safe)
|
|
34
34
|
|
|
35
|
-
[Weekly Routine] (schedule: weekly, model:
|
|
35
|
+
[Weekly Routine] (schedule: weekly, model: opus preferred / sonnet first-class, see Β§4 floor note)
|
|
36
36
|
β read the last 7 days of comments on the "π°οΈ Frontier Digest Log" issue
|
|
37
37
|
β‘ persona-innovator Mode F β gap + external-frontier scan against current FH assets
|
|
38
38
|
β’ pick AT MOST ONE concrete, scoped improvement candidate (or none β "no proposal this week" is valid)
|
|
@@ -79,17 +79,22 @@ bash templates/regression_guard.sh --pr "$(git branch --show-current)" # Axis
|
|
|
79
79
|
# Axis 4 edit-manifest RECORD β append today's predicted-impact line to tracks/_meta/edit_manifest.yaml
|
|
80
80
|
```
|
|
81
81
|
|
|
82
|
-
**Floor note β
|
|
83
|
-
the marker's `axis2-model` against `floor-status
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
82
|
+
**Floor note β dispatch-first, Sonnet first-class (re-semanticized 2026-07-10, Sonnet-Floor
|
|
83
|
+
Doctrine).** The pre-commit hook cross-checks the marker's `axis2-model` against `floor-status`.
|
|
84
|
+
The routine's honest, unattended paths in preference order:
|
|
85
|
+
1. **Dispatch the Axis-2 audit** (cross-family sidecar or an opus sub-agent, consent permitting) β
|
|
86
|
+
marker is `floor-status: at-floor` with the dispatched engine recorded; strongest and preferred.
|
|
87
|
+
2. **Opus inline** (when the routine session itself runs at opus) β `at-floor`, as before.
|
|
88
|
+
3. **Sonnet inline** β first-class, no operator utterance needed: `floor-status: sonnet-floor` +
|
|
89
|
+
an `axis2-anchor:` line naming the mechanical evidence that grounds the judged verdict (a
|
|
90
|
+
regression test, scan output, probe count). The marker auto-enters the weekly re-validation
|
|
91
|
+
queue (`below_floor_scan.sh`, R-tier advisory). The old dead-end β "a Sonnet run cannot legally
|
|
92
|
+
commit, so it improvises an escape" β is gone *because* the sanctioned lane exists; the anchor
|
|
93
|
+
requirement is what keeps the lane from being a free pass.
|
|
94
|
+
Sub-Sonnet tiers remain `below-floor` + operator ack (a routine with no human online genuinely
|
|
95
|
+
cannot pass there β that residual is intended). If no anchor can be produced at Sonnet either, the
|
|
96
|
+
fallback stays: do **not** commit β attach the patch to a draft PR opened via the GitHub tools,
|
|
97
|
+
label it `gate: deferred β floor re-run needed`. Never `--no-verify`.
|
|
93
98
|
|
|
94
99
|
**Marker carve-out (the one sanctioned `tracks/**` write).** The two gate files
|
|
95
100
|
(`tracks/_meta/.axes_23_passed_*.marker` and `tracks/_meta/edit_manifest.yaml`) live under gitignored
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Sonnet-Floor Doctrine β the harness's optimization target
|
|
2
|
+
|
|
3
|
+
> **Canonical axiom node** (operator-declared 2026-07-10). Short by design: this file names the
|
|
4
|
+
> invariant, its defect class, and the prescription ladder. The operating mechanics live in their
|
|
5
|
+
> existing homes β floor resolution & dispatch: `multi_model_sidecar_strategy.md Β§Tier-floor`
|
|
6
|
+
> (F1/F2, "Sonnet-main + Opus-dispatch"); escalation consent: `capability_escalation_consent.md`;
|
|
7
|
+
> mechanical enforcement: `templates/.git-hooks/pre-commit` (Axis-2 floor fields) +
|
|
8
|
+
> `scripts/below_floor_scan.sh`. Do not restate their details here; do not restate this axiom there.
|
|
9
|
+
|
|
10
|
+
## The invariant
|
|
11
|
+
|
|
12
|
+
**FH's base operation must run 100% at Sonnet-tier.** Every gate, onboarding path, diagnostic,
|
|
13
|
+
close-chain step, and skill must fire and complete on Sonnet 5. A capability that is only
|
|
14
|
+
discoverable, or only fires, on Opus/Fable-tier is a **harness defect** β the same severity class
|
|
15
|
+
as a phantom reference. A harness exists to hold quality high *on weaker models*; if it needs the
|
|
16
|
+
strongest model to work at all, it has failed as a harness.
|
|
17
|
+
|
|
18
|
+
**Escalation is dispatch, never substrate.** Depth beyond Sonnet's ceiling is reached by
|
|
19
|
+
*recommending* a dispatch β an Opus/Fable same-family sub-agent, or a cross-family sidecar
|
|
20
|
+
(codex / agy) β consent-gated per `capability_escalation_consent.md`. The session substrate stays
|
|
21
|
+
whatever the operator chose. A Sonnet-only environment is a **first-class mode**: run everything at
|
|
22
|
+
Sonnet, extract the harness's maximum, and name residuals honestly (below-floor / sonnet-floor
|
|
23
|
+
markers) β never silently drop a capability.
|
|
24
|
+
|
|
25
|
+
## Why this is the optimization target (measured, not aspirational)
|
|
26
|
+
|
|
27
|
+
- **H1 (2026-07-05)**: the anchor-emit harness reduced borderline verdict flips **more on weaker
|
|
28
|
+
models** β Flash β18.5pp vs Pro β11.1pp (within-model deltas, 3-measurement convergence). The
|
|
29
|
+
harness's value peaks exactly where the model is weakest; optimizing FH for the strong tier
|
|
30
|
+
optimizes it where it matters least.
|
|
31
|
+
- **Every confirmed Sonnet-tier miss in FH history was closed by mechanization or salience
|
|
32
|
+
hardening, never by requiring a stronger model**: the task-first companion-load miss (2026-07-05
|
|
33
|
+
β SessionStart hook), the tone salience gap (2026-07-08 β recorded, prompt-layer), the
|
|
34
|
+
card-reconcile blind spot (2026-07-10 β mtime-independent STATUS map in the hook). The doctrine
|
|
35
|
+
is a name for what the fix pattern already was.
|
|
36
|
+
- **The value does not vanish at the top tier β the harness complements the strongest model too**
|
|
37
|
+
(operator observation, 2026-07-10, same-day measured): a Sonnet blind probe caught a SIGPIPE
|
|
38
|
+
silent-death defect in a script the top-tier session had just written (5/5 repro), and the new
|
|
39
|
+
close-chain checker blocked that same top-tier session's card-last violation twice on its first
|
|
40
|
+
day. Structure-enforcing checks are tier-blind by construction β so the harness raises the floor
|
|
41
|
+
for weak models *and* guards the ceiling for strong ones. Weak-model benefit is the larger term
|
|
42
|
+
(H1), top-tier benefit is the existence proof that the harness is not scaffolding-only.
|
|
43
|
+
|
|
44
|
+
## The defect class: tier-gated capability
|
|
45
|
+
|
|
46
|
+
When auditing (harness-doctor, weekly audit, or a dedicated census), enumerate candidates with
|
|
47
|
+
`bash scripts/tier_census_grep.sh <files>` (word-boundary patterns + N/A-sense hints β mechanized
|
|
48
|
+
2026-07-10 after a probe's naive grep false-positived on "fron**tier**"), then classify every hit:
|
|
49
|
+
|
|
50
|
+
| Class | Shape | Verdict |
|
|
51
|
+
|---|---|---|
|
|
52
|
+
| **Trust-floor** | a *judgment* (skip/run, compose/rank) is trusted only at opus+; below-floor = run the check anyway or ask | **Compatible** β Sonnet still runs everything; degrade direction is run-or-ask, never skip |
|
|
53
|
+
| **Availability-gate** | a capability is *absent, blocked, or dead-ended* below a tier (hard `model:` pin, "cannot pass", opus-only judge path) | **Defect** β fix via the ladder below |
|
|
54
|
+
| **Advisory** | recommends a tier, never blocks (Mode D Model Notice, depth-escalation notices) | Compatible β but the recommendation direction must be **dispatch-first** (keep Sonnet + dispatch the depth), with a session pin as the secondary option |
|
|
55
|
+
|
|
56
|
+
## Prescription ladder (for a confirmed tier-gated capability)
|
|
57
|
+
|
|
58
|
+
1. **Mechanize** β move the behavior to a hook / script / exit code. Tier-independent by
|
|
59
|
+
construction; the strongest fix. (SessionStart load, STATUS map, pre-commit gate.)
|
|
60
|
+
2. **Salience-harden** β split, imperative pointers, turn-0 injection; then verify with a
|
|
61
|
+
**Sonnet blind sim** (the target-tier sim gate's default tier *is* Sonnet for this reason).
|
|
62
|
+
3. **Reclassify as dispatch** β if the capability is irreducibly judgment-heavy (adversarial
|
|
63
|
+
depth, wide design synthesis), it becomes a *dispatch surface*: at Sonnet the harness surfaces
|
|
64
|
+
a one-line escalation recommendation (sidecar or floor-up, consent-gated) and proceeds at the
|
|
65
|
+
floor with a named residual. Silent absence is never an option.
|
|
66
|
+
|
|
67
|
+
## Floor semantics under the doctrine
|
|
68
|
+
|
|
69
|
+
- **Sonnet = the base floor.** Meeting it is `at-floor` for base operation. Judged-class verdicts
|
|
70
|
+
produced at Sonnet on depth-critical roles remain **provisional** (`sonnet-floor` marker,
|
|
71
|
+
auto-queued for the weekly audit's re-run-or-write-off pass) β first-class β free of residuals.
|
|
72
|
+
- **Sub-Sonnet (Haiku, local canaries)** stays `below-floor`: canary/producer roles only, explicit
|
|
73
|
+
ack required on gate surfaces. The doctrine raises no ceiling and lowers no guard rails there.
|
|
74
|
+
- **Depth ladder on a depth turn at Sonnet** (cheapest rung first β effort is depth, model is
|
|
75
|
+
ceiling, `[[feedback_workflow_stage_effort_routing]]`): β **raise reasoning effort on the same
|
|
76
|
+
substrate** (Sonnet medium β high β free, no consent needed, no boundary crossed) β β‘ dispatch
|
|
77
|
+
an audit/research sidecar (consent permitting β cross-family preferred for decorrelation) β
|
|
78
|
+
β’ proceed at Sonnet-high with mechanical anchors + named residual. A hard model requirement is
|
|
79
|
+
never a rung.
|
|
80
|
+
|
|
81
|
+
## Autonomy at Sonnet β run-first, ask-last (full-potential clause, 2026-07-10)
|
|
82
|
+
|
|
83
|
+
The intended FH surface β including its **full autonomous potential** (goal-quench max runs,
|
|
84
|
+
harvest-loop full mode, overnight loops, cluster orchestration) β must be *executable* at
|
|
85
|
+
Sonnet medium-high effort, not merely available-if-a-human-answers. Two rules make that safe:
|
|
86
|
+
|
|
87
|
+
- **Trust-floor degrade order is RUN β ASK, never ask-first**: where a judgment is trusted at
|
|
88
|
+
opus+ ("skip/run", "compose/rank"), a Sonnet session's default is to **run the full check /
|
|
89
|
+
present the full result** β the conservative branch that needs no trust. Asking is reserved for
|
|
90
|
+
the case where no mechanical or anchored path exists at all (a pure-judged fork with no anchor).
|
|
91
|
+
A Sonnet loop that stalls on "ask" when running-the-check was available has mis-degraded.
|
|
92
|
+
- **The defense is the gate layer, not the model tier**: FH's mechanical floors β pre-commit
|
|
93
|
+
4-axis, pre-push Destructive-Op, prepublish scan, consent protocol, HITL irreversibility floors β
|
|
94
|
+
are tier-independent hooks. They hold *regardless of who is driving*, which is precisely what
|
|
95
|
+
makes Sonnet full-autonomy safe: **autonomy removes the prompt, never the gate** (the same
|
|
96
|
+
clause the Autopilot's full-autonomy mode already carries). Irreversible-surface HITL floors are
|
|
97
|
+
surface-class rules and do not scale down with tier β a Sonnet loop gets the same hard walls,
|
|
98
|
+
not softer ones.
|
|
99
|
+
|
|
100
|
+
## What survives model evolution β the durable-mechanization criterion (operator insight, 2026-07-10)
|
|
101
|
+
|
|
102
|
+
Sidecar dispatch is the *cheap* way to chase LLM evolution (swap the engine, keep the harness), and
|
|
103
|
+
internal mechanization could chase capability gaps forever β so which mechanization is worth
|
|
104
|
+
building? Split by **what the mechanization compensates for**:
|
|
105
|
+
|
|
106
|
+
| Class | Compensates for | Fate as models improve | Examples |
|
|
107
|
+
|---|---|---|---|
|
|
108
|
+
| **Capability-compensating** | the model being *weak* β reasoning depth, salience, attention discipline | **evaporates** β scaffolding to shed (`[[feedback_frontier_substrate_self_adaptation]]`); build only on measured misses, keep cheap to delete | salience splits Β· turn-0 imperatives Β· word-boundary grep discipline (partially β see note) |
|
|
109
|
+
| **Structure-enforcing** | what a *perfect* model still cannot see or is still incentivized to fumble: information outside the context boundary (cross-machine state, version drift), ordering invariants across ephemeral contexts, ship-pressure optimism, irreversible surfaces | **permanent** β model evolution never fixes "the card lives on another machine" or "the runner controls what the hook sees" | STATUS map (machine boundary) Β· card-last check (ordering invariant) Β· substrate-jump detector (out-of-context drift) Β· fail-closed gates Β· consent floors |
|
|
110
|
+
|
|
111
|
+
**The test question when proposing mechanization: "would an infinitely strong model still miss
|
|
112
|
+
this?"** Yes β structure-enforcing, build it, it compounds. No β capability-compensating, prefer
|
|
113
|
+
dispatch first, mechanize only on a measured miss, and tag it shed-eligible (the substrate loop's
|
|
114
|
+
shed/advance pass is its consumer).
|
|
115
|
+
|
|
116
|
+
*Note on determinism*: some capability-class tools survive anyway because they are **cheaper and
|
|
117
|
+
deterministic** (a grep never has an attention lapse and costs nothing) β determinism is a second
|
|
118
|
+
survival axis, orthogonal to capability. A deterministic check that replaces a per-session judged
|
|
119
|
+
step keeps paying even when the model no longer needs the help.
|
|
120
|
+
|
|
121
|
+
## Done When (for any change citing this doctrine)
|
|
122
|
+
|
|
123
|
+
- No availability-gate remains in the touched surface *(check class: measured β tier-reference
|
|
124
|
+
census grep, classify per the table)*.
|
|
125
|
+
- Salience-dependent changes pass a Sonnet blind sim *(measured β sim verdict recorded in the
|
|
126
|
+
Axes 2β3 marker)*.
|
|
127
|
+
- Depth needs express as dispatch recommendations, not requirements *(judged, pair: adversarial
|
|
128
|
+
review asks "where does this silently require opus?")*.
|
|
129
|
+
|
|
130
|
+
Cross-refs: `[[feedback_tier_invariant_over_treadmill]]` Β· `[[feedback_harness_aerodynamics_perceived_perf]]`
|
|
131
|
+
Β· `[[feedback_fh_rides_on_cc_harness]]` Β· `[[feedback_h1_two_tier_closure]]` Β· `loop_engineering.md`
|
|
132
|
+
(PROSE legs are where Sonnet-tier misses live β the two lenses share one spine).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chrono-meta/fh-gate",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.53",
|
|
4
4
|
"description": "FH runtime adapters β run FH governance, skills, and agents via Claude or Codex with machine-parseable gates.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
@@ -20,10 +20,11 @@
|
|
|
20
20
|
"bin": {
|
|
21
21
|
"fh-gate": "bin/fh-gate.js",
|
|
22
22
|
"fh-run": "bin/fh-run.js",
|
|
23
|
-
"fh-goal": "bin/fh-goal.js"
|
|
23
|
+
"fh-goal": "bin/fh-goal.js",
|
|
24
|
+
"fh-codex-doctor": "bin/fh-codex-doctor.js"
|
|
24
25
|
},
|
|
25
26
|
"scripts": {
|
|
26
|
-
"prepare": "chmod +x bin/fh-gate.js bin/fh-run.js bin/fh-goal.js scripts/fh-gate.sh scripts/fh-run.sh scripts/fh-goal.sh",
|
|
27
|
+
"prepare": "chmod +x bin/fh-gate.js bin/fh-run.js bin/fh-goal.js bin/fh-codex-doctor.js scripts/fh-gate.sh scripts/fh-run.sh scripts/fh-goal.sh",
|
|
27
28
|
"test": "bash scripts/selfcheck.sh",
|
|
28
29
|
"prepublishOnly": "bash scripts/selfcheck.sh && bash scripts/public_surface_scan_files.sh",
|
|
29
30
|
"release": "bash scripts/public_surface_scan_files.sh && npm publish"
|
|
@@ -45,10 +46,13 @@
|
|
|
45
46
|
},
|
|
46
47
|
"files": [
|
|
47
48
|
"AGENTS.md",
|
|
49
|
+
".claude-plugin/marketplace.json",
|
|
48
50
|
"CATALOG.md",
|
|
49
51
|
"CHEATSHEET.md",
|
|
50
52
|
"CLAUDE.md",
|
|
53
|
+
".claude/registry/agent_cards.json",
|
|
51
54
|
"docs/CONTRIBUTING.md",
|
|
55
|
+
"bin/fh-codex-doctor.js",
|
|
52
56
|
"bin/fh-gate.js",
|
|
53
57
|
"bin/fh-run.js",
|
|
54
58
|
"bin/fh-goal.js",
|
|
@@ -57,9 +61,13 @@
|
|
|
57
61
|
"scripts/fh-gate.sh",
|
|
58
62
|
"scripts/fh-run.sh",
|
|
59
63
|
"scripts/fh-goal.sh",
|
|
64
|
+
"scripts/count_check.sh",
|
|
60
65
|
"scripts/selfcheck.sh",
|
|
66
|
+
"templates/local_fh_context.md",
|
|
67
|
+
"plugins/fh-meta/.claude-plugin/plugin.json",
|
|
61
68
|
"plugins/fh-meta/skills",
|
|
62
69
|
"plugins/fh-meta/agents",
|
|
70
|
+
"plugins/fh-commons/.claude-plugin/plugin.json",
|
|
63
71
|
"plugins/fh-commons/skills",
|
|
64
72
|
"plugins/fh-commons/agents",
|
|
65
73
|
"knowledge/shared/harness-core",
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "fh-commons",
|
|
3
|
+
"version": "1.4.53",
|
|
4
|
+
"engines": {
|
|
5
|
+
"claudeCode": ">=1.0.0"
|
|
6
|
+
},
|
|
7
|
+
"description": "Cross-project utility skill bundle β 4 skills + 1 agent. Domain-agnostic and portable: convergence-loop, deliberation, mcp-circuit-breaker, token-budget-gate + quench-challenger agent.",
|
|
8
|
+
"author": {
|
|
9
|
+
"name": "chrono-meta",
|
|
10
|
+
"email": "chrono-meta@users.noreply.github.com"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"commons",
|
|
14
|
+
"convergence-loop",
|
|
15
|
+
"gate-reinforcement",
|
|
16
|
+
"multi-round-validation",
|
|
17
|
+
"deliberation",
|
|
18
|
+
"multi-perspective-synthesis",
|
|
19
|
+
"forge-skill",
|
|
20
|
+
"domain-agnostic",
|
|
21
|
+
"cross-project"
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -3,7 +3,7 @@ name: deliberation
|
|
|
3
3
|
description: Multi-perspective synthesis structure β Innovator (propose) β Devil-Advocate (challenge) β Mediator (synthesize) 3-layer execution. Outputs conditional verdicts without binary win/loss. Activates on "deliberation", "battle this out", "weigh the pros and cons", "review from multiple angles", "which side is right?". Optional deep-insight persona jurors for domain-specific views. Designed for design decisions, skill proposals, and architectural choices.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: ["Read", "Bash", "Agent"]
|
|
6
|
-
model: opus
|
|
6
|
+
model-note: session-inherit β Sonnet base is first-class (sonnet_floor_doctrine.md); depth-critical judged steps route to dispatch (opus agent / cross-family sidecar, consent-gated), never a substrate requirement
|
|
7
7
|
origin: fh-meta
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "fh-meta",
|
|
3
|
+
"version": "1.4.53",
|
|
4
|
+
"engines": {
|
|
5
|
+
"claudeCode": ">=1.0.0"
|
|
6
|
+
},
|
|
7
|
+
"description": "Hub meta-engineering toolkit β 33 skills + 7 agents. 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 gains a command-output axis β routes to a command-output proxy/hook (rtk) to trim verbose CLI stdout, complementing .claudeignore; risk-gated to token-scarce environments (lossy filtering, off gate-input paths). 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 scaffolds the companion store as a queryable wiki (INDEX + session-start read + Raw/Wiki/Conversation ingest axis). New in 1.4.39: auto-decorrelation (cross-family verifier sidecar recruitment, calibration-gated) + video-ingest (capability-routed video ingestion). New in 1.4.37: corpus-grounding-expander + persona-roster-expander (field-harvested verbatim-relay capability skills). New in 1.3.0: public-surface-audit (git-tracked private-token leak scan), field-harvest Mode B session-end auto-trigger, 4-axis gate scope extension (docs/ + AGENTS.md). New in 1.2.0: pipeline-conductor (4-pipeline gated sweep), return-path-gate (chain closure audit), goal-quench (Stop hook + quality gate), steel-quench Wave 5 (multi-model sidecar challenger), 2-layer architecture docs, YAML validation script. Validated cross-CLI: Claude Code, Codex, Gemini.",
|
|
8
|
+
"author": {
|
|
9
|
+
"name": "chrono-meta",
|
|
10
|
+
"email": "chrono-meta@users.noreply.github.com"
|
|
11
|
+
},
|
|
12
|
+
"keywords": [
|
|
13
|
+
"hub-meta",
|
|
14
|
+
"fact-check",
|
|
15
|
+
"self-verification",
|
|
16
|
+
"bidirectional-validation",
|
|
17
|
+
"cross-ecosystem-synergy",
|
|
18
|
+
"plugin-recommender",
|
|
19
|
+
"pr-review",
|
|
20
|
+
"harness-engineering",
|
|
21
|
+
"ai-collaboration",
|
|
22
|
+
"token-efficiency",
|
|
23
|
+
"context-doctor",
|
|
24
|
+
"harness-doctor",
|
|
25
|
+
"install-doctor",
|
|
26
|
+
"install-conflict-detection",
|
|
27
|
+
"install-wizard",
|
|
28
|
+
"onboarding-automation",
|
|
29
|
+
"marketplace-gate",
|
|
30
|
+
"marketplace-readiness",
|
|
31
|
+
"meta-prompt-builder",
|
|
32
|
+
"prompt-delegation",
|
|
33
|
+
"circular-validation",
|
|
34
|
+
"2d-adversary"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
@@ -3,7 +3,7 @@ name: agent-composer
|
|
|
3
3
|
description: Reads the current work context and plans the optimal agent dispatch. Clarifies direction with 1-2 questions when unclear; infers and proceeds immediately when execution path is unclear. Runs an automatic recording gate after each Wave completes. Triggered by "compose agents", "which agent should I use?", "run in parallel", or "agent-composer".
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: ["Read", "Bash", "Glob", "Grep"]
|
|
6
|
-
model: opus
|
|
6
|
+
model-note: session-inherit β Sonnet base is first-class (sonnet_floor_doctrine.md); depth-critical judged steps route to dispatch (opus agent / cross-family sidecar, consent-gated), never a substrate requirement
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# agent-composer β Agent Composition Layer
|
|
@@ -3,7 +3,7 @@ name: apex-review
|
|
|
3
3
|
description: Reviews a technical proposal from the perspective of organizational decision-makers (CTO, technical lead, QA lead, conference reviewers, etc.) and generates an HTML presentation deck. Outputs approval gate results per persona and connects to sim-conductor for improvement suggestions.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: ["Read", "Write", "Bash", "Agent"]
|
|
6
|
-
model: opus
|
|
6
|
+
model-note: session-inherit β Sonnet base is first-class (sonnet_floor_doctrine.md); depth-critical judged steps route to dispatch (opus agent / cross-family sidecar, consent-gated), never a substrate requirement
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# apex-review β Decision-Maker Review Layer
|
|
@@ -3,7 +3,7 @@ name: auto-decorrelation
|
|
|
3
3
|
description: Recruits cross-family verifier sidecars (codex, agy, local 4090 over Tailscale) for adversarial verification of load-bearing changes, maximizing model-family diversity against the orchestrator. Mechanically discovers the available sidecar panel, recruits at least one cross-family verifier when present, and degrades gracefully when none are. The governor (Claude) keeps the terminal verdict; sidecar findings must be source-grounded before acceptance. Opt-in via one-time consent, stored in the UAP; fires only on load-bearing changes. Triggered by "recruit a cross-family check", "decorrelate this verification", "use the idle sidecars to verify", "auto-decorrelation".
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: ["Read", "Bash", "Grep", "Glob"]
|
|
6
|
-
model: opus
|
|
6
|
+
model-note: session-inherit β Sonnet base is first-class (sonnet_floor_doctrine.md); depth-critical judged steps route to dispatch (opus agent / cross-family sidecar, consent-gated), never a substrate requirement
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# auto-decorrelation β Cross-Family Verifier Recruitment
|
|
@@ -94,7 +94,7 @@ When context is near the limit and you want to *preserve state* rather than rese
|
|
|
94
94
|
|
|
95
95
|
| Current task | Recommended | Command |
|
|
96
96
|
|---|---|---|
|
|
97
|
-
| Complex design decisions Β· architecture review | Opus | `/model opus` |
|
|
97
|
+
| Complex design decisions Β· architecture review | Opus β dispatch-first: package into an opus/sidecar agent dispatch (consent-gated); session pin secondary | dispatch Β· or `/model opus` |
|
|
98
98
|
| Code writing Β· file editing Β· refactoring | Sonnet (default) | β |
|
|
99
99
|
| Simple file lookup Β· short Q&A | Haiku | `/model haiku` |
|
|
100
100
|
|
|
@@ -3,7 +3,7 @@ name: harvest-loop
|
|
|
3
3
|
description: A self-evolution pipeline that runs automatically after field sessions end. field-harvest (pattern extraction) β contention-layer (collision signals) β [Agent(subagent_type="challenger") + persona-innovator parallel] β synthesizer (challenger/innovator collision harvest) β Critic isolated Agent (SAGE automated critique) β harness-doctor (health check) β verify-bidirectional (consistency validation) β curator (skill lifecycle management) β 8 steps. Session learnings are automatically absorbed back into the FH ecosystem so the harness evolves on its own. In the main development environment, runs automatically at session end. For external FH users, proposes execution first. Triggered by "session harvest", "learning absorption", "fh evolution", or "harvest-loop". (The phrase "run the pipeline" is ceded to pipeline-conductor to avoid a trigger collision β for end-to-end verification sweeps use pipeline-conductor.)
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: ["Read", "Write", "Bash", "Grep", "Glob", "Agent"]
|
|
6
|
-
model: opus
|
|
6
|
+
model-note: session-inherit β Sonnet base is first-class (sonnet_floor_doctrine.md); depth-critical judged steps route to dispatch (opus agent / cross-family sidecar, consent-gated), never a substrate requirement
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# harvest-loop β Field Session β FH Self-Evolution Pipeline
|
|
@@ -3,7 +3,7 @@ name: install-wizard
|
|
|
3
3
|
description: Run when setting up a new project for the first time or onboarding after installing FH (first setup, initial configuration, onboarding start, configure project, help me set up). Performs environment detection β gap diagnosis β item-by-item suggestions β user approval β execution β acceleration baseline setup in sequence. Use --dry-run to output diagnosis report only (bg dispatch compatible).
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: ["Read", "Write", "Bash", "Glob", "Grep", "Edit"]
|
|
6
|
-
model: opus
|
|
6
|
+
model-note: session-inherit β Sonnet base is first-class (sonnet_floor_doctrine.md); depth-critical judged steps route to dispatch (opus agent / cross-family sidecar, consent-gated), never a substrate requirement
|
|
7
7
|
category: Composability Gate
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: meta-prompt-builder
|
|
|
3
3
|
description: Generates structured prompts to send to each agent in an agent dispatch plan. Triggered by "write the instructions", "what do I say to the agent?", "write the prompt for me", "meta-prompt-builder". Bridges agent-composer (which agents) and prompt content (what to say). Uses Goal/Context/Constraints/Done When structure.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: ["Read", "Bash", "Glob", "Grep"]
|
|
6
|
-
model: opus
|
|
6
|
+
model-note: session-inherit β Sonnet base is first-class (sonnet_floor_doctrine.md); depth-critical judged steps route to dispatch (opus agent / cross-family sidecar, consent-gated), never a substrate requirement
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# meta-prompt-builder β Prompt Delegation Skill
|
|
@@ -3,7 +3,7 @@ name: sim-conductor
|
|
|
3
3
|
description: Autonomously runs external user reaction simulations, internal audits, ideation scans, artifact validation, and quality reviews. Profiles the target artifact first, then derives task-appropriate personas, dispatches them as parallel agents, classifies findings into M/S/R tiers, and completes the pipeline through to commit automatically.
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: ["Read", "Write", "Bash", "Grep", "Glob", "Agent"]
|
|
6
|
-
model: opus
|
|
6
|
+
model-note: session-inherit β Sonnet base is first-class (sonnet_floor_doctrine.md); depth-critical judged steps route to dispatch (opus agent / cross-family sidecar, consent-gated), never a substrate requirement
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# sim-conductor β Meta-Simulation Automation Orchestrator
|
|
@@ -13,7 +13,7 @@ description: >-
|
|
|
13
13
|
"steel quench", "deep pre-completion inspection", "did it really pass?".
|
|
14
14
|
user-invocable: true
|
|
15
15
|
allowed-tools: ["Read", "Write", "Edit", "Bash", "Grep", "Glob", "WebSearch", "Agent"]
|
|
16
|
-
model: opus
|
|
16
|
+
model-note: session-inherit β Sonnet base is first-class (sonnet_floor_doctrine.md); depth-critical judged steps route to dispatch (opus agent / cross-family sidecar, consent-gated), never a substrate requirement
|
|
17
17
|
---
|
|
18
18
|
|
|
19
19
|
# steel-quench β All-Angle Verification Meta-Skill
|
|
@@ -10,7 +10,7 @@ complexity_routing:
|
|
|
10
10
|
escalate_when:
|
|
11
11
|
- full_revalidation
|
|
12
12
|
- high_stakes
|
|
13
|
-
- fail_verdict # AI recommendation was wrong β baseline overwrite is high-stakes,
|
|
13
|
+
- fail_verdict # AI recommendation was wrong β baseline overwrite is high-stakes: at Sonnet, bind the overwrite to a mechanical anchor (diff review + source re-check) and RECOMMEND an opus/sidecar dispatch (consent-gated) β Sonnet+anchor is a legitimate path (sonnet_floor_doctrine.md), silent judged-only overwrite is not
|
|
14
14
|
---
|
|
15
15
|
|
|
16
16
|
# verify-bidirectional β Bidirectional Self-Validation Automation
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# count_check.sh β skill/agent count-consistency check (single source).
|
|
3
|
+
# Class: mandatory-pass (harness_6axis_framework.md Β§Axis 5) β exit 1 on drift.
|
|
4
|
+
#
|
|
5
|
+
# Called by ALL THREE count-consistency boundaries so one logic runs everywhere:
|
|
6
|
+
# - scripts/selfcheck.sh β publish-readiness (prepublishOnly + npm test)
|
|
7
|
+
# - templates/.git-hooks/pre-commit β local commit time, `--staged` (index mode)
|
|
8
|
+
# - .github/workflows/validate.yml β PR/merge boundary (checked-out tree == committed)
|
|
9
|
+
#
|
|
10
|
+
# Origin (fh_signal_2026-06-21): the count check used to live ONLY at the publish boundary.
|
|
11
|
+
# But the actor that breaks it β a commit/merge that adds/removes a skill dir β acts at
|
|
12
|
+
# commit/merge time, so a skill-adding PR (#111) merged with stale counts and they sat
|
|
13
|
+
# undetected on main until the next publish. This is the gate-locality gap (a gate must
|
|
14
|
+
# live where the breaking action happens). One source, three boundaries, no reinvention.
|
|
15
|
+
#
|
|
16
|
+
# Modes:
|
|
17
|
+
# (default) count the WORKING TREE β selfcheck (publish; tree == HEAD) and CI
|
|
18
|
+
# (a checked-out PR IS the committed state). cat/glob the on-disk files.
|
|
19
|
+
# --staged count the INDEX (exactly what THIS commit will contain) β the pre-commit
|
|
20
|
+
# hook. Fixes steel-quench S1 (2026-06-21): a worktree-only count can
|
|
21
|
+
# FALSE-PASS a commit that stages a skill add but leaves the count-file
|
|
22
|
+
# updates unstaged β the gate would verify a different tree than it commits.
|
|
23
|
+
set -u
|
|
24
|
+
cd "$(dirname "${BASH_SOURCE[0]}")/.." || { echo "COUNT-CHECK: FAIL (cannot cd to repo root)"; exit 1; }
|
|
25
|
+
|
|
26
|
+
MODE="worktree"
|
|
27
|
+
[ "${1:-}" = "--staged" ] && MODE="staged"
|
|
28
|
+
fail=0
|
|
29
|
+
|
|
30
|
+
# Read a tracked file's content from the active tree (index in --staged, disk otherwise).
|
|
31
|
+
read_tree() { # read_tree <path>
|
|
32
|
+
if [ "$MODE" = staged ]; then git show ":$1" 2>/dev/null; else cat "$1" 2>/dev/null; fi
|
|
33
|
+
}
|
|
34
|
+
# List a plugin's top-level SKILL.md paths in the active tree.
|
|
35
|
+
list_skills() { # list_skills <plugin>
|
|
36
|
+
if [ "$MODE" = staged ]; then
|
|
37
|
+
git ls-files --cached -- "plugins/$1/skills" 2>/dev/null \
|
|
38
|
+
| grep -E "^plugins/$1/skills/[^/]+/SKILL\.md$"
|
|
39
|
+
else
|
|
40
|
+
local s
|
|
41
|
+
for s in plugins/"$1"/skills/*/SKILL.md; do [ -f "$s" ] && echo "$s"; done
|
|
42
|
+
fi
|
|
43
|
+
}
|
|
44
|
+
# Count a plugin's top-level agent .md files in the active tree.
|
|
45
|
+
count_agents() { # count_agents <plugin>
|
|
46
|
+
if [ "$MODE" = staged ]; then
|
|
47
|
+
git ls-files --cached -- "plugins/$1/agents" 2>/dev/null \
|
|
48
|
+
| grep -cE "^plugins/$1/agents/[^/]+\.md$"
|
|
49
|
+
else
|
|
50
|
+
ls plugins/"$1"/agents/*.md 2>/dev/null | wc -l | tr -d ' '
|
|
51
|
+
fi
|
|
52
|
+
}
|
|
53
|
+
# Active skill = SKILL.md whose head (first 20 lines) carries no deprecation marker
|
|
54
|
+
# (a whole-file grep false-positives on skills that merely mention the word).
|
|
55
|
+
count_active() { # count_active <plugin>
|
|
56
|
+
local n=0 s
|
|
57
|
+
while IFS= read -r s; do
|
|
58
|
+
[ -z "$s" ] && continue
|
|
59
|
+
read_tree "$s" | head -20 | grep -qE 'deprecated: true|DEPRECATED' || n=$((n+1))
|
|
60
|
+
done < <(list_skills "$1")
|
|
61
|
+
echo "$n"
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
meta_sk=$(count_active fh-meta); meta_ag=$(count_agents fh-meta)
|
|
65
|
+
com_sk=$(count_active fh-commons); com_ag=$(count_agents fh-commons)
|
|
66
|
+
total_sk=$((meta_sk + com_sk)); total_ag=$((meta_ag + com_ag))
|
|
67
|
+
|
|
68
|
+
# Impossible-zero guard (steel-quench A4 β fail CLOSED): fh-meta always has active skills.
|
|
69
|
+
# A 0 means the tree/glob resolved to nothing (wrong cwd, empty index, sh-as-bash shim) β
|
|
70
|
+
# a gate must never return "consistent" from an empty tree.
|
|
71
|
+
if [ "$meta_sk" -eq 0 ]; then
|
|
72
|
+
echo "COUNT-CHECK: FAIL (0 active fh-meta skills β empty/wrong tree, mode=$MODE)"
|
|
73
|
+
exit 1
|
|
74
|
+
fi
|
|
75
|
+
|
|
76
|
+
count_check() { # count_check <label> <file> <expected-string>
|
|
77
|
+
if read_tree "$2" | grep -q "$3"; then
|
|
78
|
+
echo "PASS count: $1"
|
|
79
|
+
else
|
|
80
|
+
echo "FAIL count: $1 β expected \"$3\" in $2 (actual: fh-meta ${meta_sk}sk/${meta_ag}ag, fh-commons ${com_sk}sk/${com_ag}ag)"
|
|
81
|
+
fail=1
|
|
82
|
+
fi
|
|
83
|
+
}
|
|
84
|
+
count_check "fh-meta plugin.json" plugins/fh-meta/.claude-plugin/plugin.json "${meta_sk} skills + ${meta_ag} agents"
|
|
85
|
+
count_check "fh-commons plugin.json" plugins/fh-commons/.claude-plugin/plugin.json "${com_sk} skills"
|
|
86
|
+
count_check "marketplace.json fh-meta" .claude-plugin/marketplace.json "${meta_sk} skills + ${meta_ag} agents"
|
|
87
|
+
count_check "README header" README.md "${total_sk} skills Β· ${total_ag} agents"
|
|
88
|
+
count_check "local_fh_context fh-meta" templates/local_fh_context.md "(fh-meta, ${meta_sk})"
|
|
89
|
+
|
|
90
|
+
if [ "$fail" -ne 0 ]; then
|
|
91
|
+
echo "COUNT-CHECK: FAIL"
|
|
92
|
+
exit 1
|
|
93
|
+
fi
|
|
94
|
+
echo "COUNT-CHECK: PASS (mode=$MODE)"
|
|
95
|
+
exit 0
|
package/scripts/selfcheck.sh
CHANGED
|
@@ -25,6 +25,11 @@ for f in bin/*.js; do
|
|
|
25
25
|
check "node --check $f" node --check "$f"
|
|
26
26
|
done
|
|
27
27
|
|
|
28
|
+
# Codex adapter drift: the thin Codex runtime must keep reading canonical FH
|
|
29
|
+
# skill/agent surfaces without silently accepting Claude-native primitives as
|
|
30
|
+
# Codex-native.
|
|
31
|
+
check "fh-codex-doctor --strict" bash -c 'node bin/fh-codex-doctor.js --strict >/dev/null'
|
|
32
|
+
|
|
28
33
|
# Bash surface: npm-shipped scripts + local bin wrappers + gate-chain infra
|
|
29
34
|
for f in scripts/*.sh bin/fh-gate bin/fh-run bin/fh-goal \
|
|
30
35
|
templates/regression_guard.sh templates/temper_check.sh templates/predelete_check.sh templates/.git-hooks/pre-commit; do
|
|
@@ -43,26 +48,28 @@ if ! bash scripts/count_check.sh; then
|
|
|
43
48
|
fail=1
|
|
44
49
|
fi
|
|
45
50
|
|
|
46
|
-
# Referenced-path existence
|
|
47
|
-
#
|
|
48
|
-
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
#
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
51
|
+
# Referenced-path existence is a source-tree check. The npm package intentionally
|
|
52
|
+
# ships a narrower runtime surface, so package-mode selfcheck skips this section.
|
|
53
|
+
if [ -d ".claude/rules" ]; then
|
|
54
|
+
# Backtick-quoted repo-relative file refs in the always-loaded governance surface
|
|
55
|
+
# (CLAUDE.md + .claude/rules/*.md) must exist. Phantom-reference class recurred
|
|
56
|
+
# N>=3 in the 2026-06-11 audit window β instrument-not-habit.
|
|
57
|
+
while IFS= read -r p; do
|
|
58
|
+
if git check-ignore -q "$p" 2>/dev/null; then
|
|
59
|
+
echo "SKIP ref-path (gitignored): $p"
|
|
60
|
+
elif [ -f "$p" ]; then
|
|
61
|
+
echo "PASS ref-path: $p"
|
|
62
|
+
else
|
|
63
|
+
echo "FAIL ref-path: $p β referenced in CLAUDE.md/.claude/rules but missing"
|
|
64
|
+
fail=1
|
|
65
|
+
fi
|
|
66
|
+
done < <(grep -hoE '\`[^\` ]+\`' CLAUDE.md .claude/rules/*.md 2>/dev/null \
|
|
67
|
+
| sed 's/\`//g' \
|
|
68
|
+
| grep -E '^(knowledge|templates|scripts|docs|plugins|\.claude)/[^*{}<>$]+\.(md|sh|ya?ml|jsonc|json)$' \
|
|
69
|
+
| sort -u)
|
|
70
|
+
else
|
|
71
|
+
echo "SKIP ref-path (package mode: .claude/rules absent)"
|
|
72
|
+
fi
|
|
66
73
|
|
|
67
74
|
if [ "$fail" -ne 0 ]; then
|
|
68
75
|
echo "SELFCHECK: FAIL"
|