@chrono-meta/fh-gate 1.2.2 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -2
- package/CATALOG.md +6 -1
- package/CHEATSHEET.md +125 -1
- package/CLAUDE.md +40 -4
- package/README.md +68 -15
- package/docs/codex-compat.md +4 -4
- package/docs/pillars.svg +26 -29
- package/knowledge/shared/harness-core/fh_integration_contract.md +1 -1
- package/package.json +1 -1
- package/plugins/fh-meta/skills/agent-composer/SKILL.md +1 -1
- package/plugins/fh-meta/skills/agent-composer/SKILL_detail.md +2 -2
- package/plugins/fh-meta/skills/edit-manifest/SKILL.md +1 -1
- package/plugins/fh-meta/skills/harness-doctor/SKILL_detail.md +1 -1
- package/plugins/fh-meta/skills/install-wizard/SKILL.md +8 -1
- package/plugins/fh-meta/skills/marketplace-gate/SKILL.md +1 -1
- package/plugins/fh-meta/skills/phantom-quench/SKILL.md +248 -0
- package/plugins/fh-meta/skills/{source-grounding-audit → phantom-quench}/SKILL_detail.md +3 -3
- package/plugins/fh-meta/skills/pipeline-conductor/SKILL.md +10 -10
- package/plugins/fh-meta/skills/public-surface-audit/SKILL.md +77 -1
- package/plugins/fh-meta/skills/return-path-gate/SKILL.md +2 -2
- package/plugins/fh-meta/skills/sim-conductor/SKILL.md +59 -2
- package/plugins/fh-meta/skills/sim-conductor/SKILL_detail.md +2 -2
- package/plugins/fh-meta/skills/skill-splitter/SKILL.md +4 -4
- package/plugins/fh-meta/skills/skill-splitter/SKILL_detail.md +2 -2
- package/plugins/fh-meta/skills/source-grounding-audit/SKILL.md +27 -215
- package/plugins/fh-meta/skills/steel-quench/SKILL.md +24 -2
- package/plugins/fh-meta/skills/steel-quench/SKILL_detail.md +2 -2
- package/scripts/fh-gate.sh +3 -9
- package/scripts/fh-run.sh +1 -1
package/AGENTS.md
CHANGED
|
@@ -124,7 +124,7 @@ echo "Apply the following skill to the artifact below." | \
|
|
|
124
124
|
|
|
125
125
|
| Tier | Definition | Examples |
|
|
126
126
|
|---|---|---|
|
|
127
|
-
| **M1 — Full** | All phases run without CC-native dependencies — no Stop hook, no `.claude/agents/` dispatch, no `/model` | `token-budget-gate`, `asset-placement-gate`, `
|
|
127
|
+
| **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`, `deliberation`, `convergence-loop` |
|
|
128
128
|
| **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) |
|
|
129
129
|
| **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) |
|
|
130
130
|
|
|
@@ -141,7 +141,7 @@ echo "Apply the following skill to the artifact below." | \
|
|
|
141
141
|
| At least 1 external Codex user confirms methodology reproduces | ⬜ pending — needs external users |
|
|
142
142
|
| README badge updated (`Codex-compatible` without `beta`) | ⬜ blocked on above |
|
|
143
143
|
|
|
144
|
-
**Author M1 validation (2026-06-04, internal — does not satisfy the external conditions above):** `
|
|
144
|
+
**Author M1 validation (2026-06-04, internal — does not satisfy the external conditions above):** `phantom-quench` (4/4 on a phantom-seeded fixture) and `asset-placement-gate` (correct Drop routing on a duplicate-skill proposal) ran end-to-end via `codex exec -m gpt-5.5 -` with no CC-native dependency, confirming the M1 tier assignments. Limitations observed (CC-native hook noise, no token accounting, etc.) are documented in `docs/codex-compat.md`.
|
|
145
145
|
|
|
146
146
|
Tracking: open an issue at `chrono-meta/forge-harness` with label `codex-validation` to report a validated run.
|
|
147
147
|
|
package/CATALOG.md
CHANGED
|
@@ -8,6 +8,11 @@ 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-06-05 | _audit | sister-asset, gstack, field-harness, garry-tan
|
|
12
|
+
**File:** tracks/_audit/session_2026_06_05_gstack-sister.md (private mirror: fh-be)
|
|
13
|
+
gstack (garrytan, ~66K stars) sister-asset cross-audit — the field/execution-harness counterpart to FH's meta/governance harness, both running on the Claude Code skill substrate. FH governs / gstack executes (composes, not competes). Bidirectional import (frictionless one-command install, opinionated front door, privacy-first telemetry) / propagate (post-ship governance gate, cross-project knowledge compounding, HITL promotion gate) lists recorded.
|
|
14
|
+
- Decision: public index only — bet evidence (B1·ID·SB) + full audit held in private store; external cross-link proposal to garrytan/gstack gated behind 3+ persona × 4-axis audit.
|
|
15
|
+
|
|
11
16
|
### 2026-06-04 | forge-harness | #skill, #public-private-split, #leak-prevention, #composability-gate
|
|
12
17
|
**File:** plugins/fh-meta/skills/public-surface-audit/SKILL.md
|
|
13
18
|
New meta-skill: scans git-tracked files for operator-private tokens (real username, absolute home paths, companion-store name, company asset names) that belong only in gitignored files. Closes the surface-sweep gap from the Gap-1 public/private split. Dogfoods its own rule — patterns live in a gitignored source, SKILL.md carries only placeholders.
|
|
@@ -94,7 +99,7 @@ Frontier digest anchored on FH's 3-layer identity + Core Axis (WebSearch engine;
|
|
|
94
99
|
|
|
95
100
|
### 2026-05-31 | anti-bias, multi-team, adversarial, token-coverage | steel-quench, sim-conductor, experiment, v2-paper
|
|
96
101
|
**File:** tracks/_meta/fh_multiteam_token_coverage_2026_05_31.md
|
|
97
|
-
Experiment 5 — Multi-Team Adversarial Panel measured on
|
|
102
|
+
Experiment 5 — Multi-Team Adversarial Panel measured on phantom-quench SKILL.md. 4 conditions (C1 single / C2 cross-session / C3 +gemini / C4 codex-TTY-fail=C3). Key results: C1→25% coverage, C2→75%, C3→100%. Claude blind spots: 3 findings (25% of total), 1 S-grade. Claude-side cost C2→C3: +0 tokens (H3 validated — Gemini billed to separate quota). Codex CLI present but headless-inoperable. Updated steel-quench/sim-conductor/phantom-quench/harness-doctor/harvest-loop with Multi-Team Panel design + human gates + synthesizer cross-session. v2 paper Experiment 5 section drafted with full metrics table.
|
|
98
103
|
- Decision: decision rule confirmed — routine→C2 (cross-session), pre-publish→C3+ (zero Claude overhead)
|
|
99
104
|
### 2026-05-31 | synergy, integration, playbook | opencode, hermes, openhuman, governance, marketing
|
|
100
105
|
**File:** knowledge/shared/harness-core/fh_synergy_playbook.md
|
package/CHEATSHEET.md
CHANGED
|
@@ -97,7 +97,7 @@ git config core.hooksPath templates/.git-hooks
|
|
|
97
97
|
chmod +x templates/.git-hooks/pre-commit
|
|
98
98
|
```
|
|
99
99
|
|
|
100
|
-
After running `/steel-quench` and `/
|
|
100
|
+
After running `/steel-quench` and `/phantom-quench` in your session, Claude creates the Axes 2+3 pass marker automatically. If it doesn't (e.g., session interrupted), create it manually:
|
|
101
101
|
|
|
102
102
|
```bash
|
|
103
103
|
touch "tracks/_meta/.axes_23_passed_$(git rev-parse --abbrev-ref HEAD | tr '/' '_')_$(date +%Y-%m-%d).marker"
|
|
@@ -300,6 +300,31 @@ Standard `/compact` lets the auto-algorithm decide what to preserve. **Wrap-then
|
|
|
300
300
|
|
|
301
301
|
> **context-doctor integration**: saying `"context is getting full"` or `"slow"` → context-doctor will propose this pattern automatically.
|
|
302
302
|
|
|
303
|
+
#### 6.1 — Disk-handoff: survive even a *forced* auto-compact
|
|
304
|
+
|
|
305
|
+
Wrap-then-Compact (above) only helps when **you** choose the moment. The dangerous case is the
|
|
306
|
+
**unplanned auto-compact at 100%+** — the harness summarizes on its own and your R&D nuance (the back-and-forth
|
|
307
|
+
that produced a decision) gets dropped. The wrap-summary trick can't save you, because there was no wrap.
|
|
308
|
+
|
|
309
|
+
The fix is to **stop relying on the conversation surviving at all**. Put the recoverable facts **on disk**
|
|
310
|
+
*before* you compact, so a fresh session reads a file — not the lossy summary:
|
|
311
|
+
|
|
312
|
+
| Step | Action |
|
|
313
|
+
|---|---|
|
|
314
|
+
| 1. Say **"compact"** (or notice ~80%) | Treat it as a trigger, not just a command |
|
|
315
|
+
| 2. Claude writes a **handoff file** first | A single file with: current status · the *one* next action · constraints to preserve · file paths + commit hashes |
|
|
316
|
+
| 3. Claude confirms `"backup written → <path>"` | Now the facts live on disk, independent of any summary |
|
|
317
|
+
| 4. You run `/compact` (or auto-compact fires) | Even a forced 100% compact can only blur dialogue nuance |
|
|
318
|
+
| 5. Next session lands on the handoff file | Conclusions + next step recovered from disk, not memory |
|
|
319
|
+
|
|
320
|
+
**Where the handoff lives**: a durable, non-gitignored location a fresh session will actually open —
|
|
321
|
+
a `handoff/NEXT_ACTION_<date>.md` in a companion store (Mode D), **or** for everyone else a note committed
|
|
322
|
+
to the working repo / a PR comment. **Never** a gitignored local file (it's wiped on an ephemeral reclaim).
|
|
323
|
+
|
|
324
|
+
> **Difference from Lever 6**: Wrap-then-Compact curates *what the summary says*; the disk-handoff makes the
|
|
325
|
+
> facts *not depend on the summary existing at all*. Use both — the handoff is the floor that holds when an
|
|
326
|
+
> auto-compact you didn't ask for fires. Say **"compact"** and Claude does step 2 automatically.
|
|
327
|
+
|
|
303
328
|
---
|
|
304
329
|
|
|
305
330
|
## 11. New technology introduction pipeline
|
|
@@ -365,3 +390,102 @@ Claude agents feature
|
|
|
365
390
|
| "simulate how to use this in FH" | Immediately enter Step 2 |
|
|
366
391
|
| "scan CC new features" | Step 1 (`--cc-scan`) → Step 2 auto-proposal |
|
|
367
392
|
| "apply simulation results" | Immediately enter Step 3 |
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## 12. Skills & agents — what each does and what to say
|
|
397
|
+
|
|
398
|
+
> You don't memorize skill names. **Say the plain-language phrase** and Claude routes to the right skill
|
|
399
|
+
> (the same trigger map lives in `CLAUDE.md`). The `/skill` form is the explicit fallback. Skills are
|
|
400
|
+
> independently runnable — `fh-commons` ones work even without the full hub.
|
|
401
|
+
|
|
402
|
+
### Verification & grounding — *"is this actually right?"*
|
|
403
|
+
|
|
404
|
+
| Skill | What it does | Say this |
|
|
405
|
+
|---|---|---|
|
|
406
|
+
| `steel-quench` | All-angle adversarial attack on a design/output, then defense, until zero new blockers | "run the quench", "attack from the root", "shake out the design anxiety" |
|
|
407
|
+
| `phantom-quench` | Back-traces every claim to its declared source; flags **Phantom Claims** (present in the artifact, not in the source). *Old name: `source-grounding-audit`.* | "verify the source", "where did this come from", "grounding audit", "phantom check" |
|
|
408
|
+
| `verify-bidirectional` | Re-checks a decision from the opposite direction + folds your counter-argument into the baseline | "is that right?", "double-check this", "give me the counterargument" |
|
|
409
|
+
| `convergence-loop` *(commons)* | Re-runs a gate until a round adds zero new failures — "truly passed", not "passed once" | "a single pass seems suspicious", "loop until it converges" |
|
|
410
|
+
| `prompt-regression` | After a CLAUDE.md/rule/skill edit, probes for silent behavior regressions vs saved baselines | "did my rule change break anything", "regression-check the harness" |
|
|
411
|
+
| `return-path-gate` | Checks that a skill chain is **closed** (callee's verdict feeds the caller), not fire-and-forget | "is this chain closed", "does the result feed back" |
|
|
412
|
+
|
|
413
|
+
### Orchestration — *"coordinate the work"*
|
|
414
|
+
|
|
415
|
+
| Skill | What it does | Say this |
|
|
416
|
+
|---|---|---|
|
|
417
|
+
| `agent-composer` | Reads the work context and decides which agents to dispatch, when, and in what order | "run these in parallel", "which agents should handle this", "orchestrate agents" |
|
|
418
|
+
| `pipeline-conductor` | Chains the 4 verification pipelines into one gated sequence + a single aggregated report | "run the full quality gate", "end-to-end verification sweep" |
|
|
419
|
+
| `goal-quench` | Adds a token-budget ceiling + quality gate on top of an autonomous `/goal` run | "run this autonomously but cap the budget", "gate the goal run" |
|
|
420
|
+
| `meta-prompt-builder` | Designs *what to say* to each agent (pairs with agent-composer's *what to orchestrate*) | "help me write a prompt", "build a prompt for the agent" |
|
|
421
|
+
| `deliberation` *(commons)* | Innovator → Devil → Mediator 3-role structured debate to a synthesis | "deliberate this", "argue both sides then synthesize" |
|
|
422
|
+
|
|
423
|
+
### Diagnosis — *"something feels off"*
|
|
424
|
+
|
|
425
|
+
| Skill | What it does | Say this |
|
|
426
|
+
|---|---|---|
|
|
427
|
+
| `harness-doctor` | Diagnoses harness structure (L1–L4) on the principle "a good harness gets simpler over time" | "check my Claude setup", "the harness feels complex", "too many skills" |
|
|
428
|
+
| `context-doctor` | Finds the 3 main causes of token waste + prescribes `.claudeignore` / `/clear` timing | "session is slow", "context is getting full", "clean up context" |
|
|
429
|
+
| `install-doctor` | Diagnoses conflicts/duplicates/overwrite risks before installing plugins into a project | "check the install", "verify my setup", "will this overwrite anything" |
|
|
430
|
+
| `mcp-circuit-breaker` *(commons)* | Detects MCP failure loops, trips a breaker to stop retry waste, proposes alternatives | "MCP keeps failing", "same tool error is looping" |
|
|
431
|
+
|
|
432
|
+
### Harvesting & learning — *"keep what we learned"*
|
|
433
|
+
|
|
434
|
+
| Skill | What it does | Say this |
|
|
435
|
+
|---|---|---|
|
|
436
|
+
| `harvest-loop` | End-of-session weekly audit → pattern scan → 3-tier improvement proposals → PR draft | "wrap up this week", "harvest the session", "weekly review" |
|
|
437
|
+
| `field-harvest` | Back-propagates a reusable pattern found in a field project into the hub | "I could reuse this", "pull this pattern into the hub" |
|
|
438
|
+
| `memory-hygiene` | Catches "stale-but-confident" memory that drifted from reality; updates or prunes it | "memory feels bloated", "clean up memory", "is my memory still accurate" |
|
|
439
|
+
| `edit-manifest` | Records a predicted-impact line per edit, closing the predict-vs-verify loop for harvest-loop | "record this edit's predicted impact" *(usually auto, Axis 4 of the gate)* |
|
|
440
|
+
| `contention-layer` | When two skills conflict, harvests the missed validation angle instead of discarding one | "these two skills disagree", "harvest the conflict" |
|
|
441
|
+
|
|
442
|
+
### Gates & guards — *"safe to ship / publish?"*
|
|
443
|
+
|
|
444
|
+
| Skill | What it does | Say this |
|
|
445
|
+
|---|---|---|
|
|
446
|
+
| `token-budget-gate` *(commons)* | Estimates token cost before a multi-step task, then calibrates against actual after | "how expensive is this", "estimate the token budget first" |
|
|
447
|
+
| `asset-placement-gate` | Routes a new skill/agent/plugin to the right place (hub vs project), no role overlap | "where does this go", "should this be shared", "hub or project" |
|
|
448
|
+
| `marketplace-gate` | Scores a repo against 5 listing criteria (README, zero-config, maintenance, dup, safety) | "is this OK to publish", "ready for the marketplace", "pre-publish check" |
|
|
449
|
+
| `public-surface-audit` | Scans git-tracked files for operator-private tokens (real username, corp names, home paths) | "did I leak anything", "scan for private tokens", "is my split clean" |
|
|
450
|
+
| `self-marketing-lint` | Flags self-promotional / hype wording in descriptions (plain-text discipline) | "lint the marketing language", "is this description hyped" |
|
|
451
|
+
|
|
452
|
+
> **Going public?** Don't run these one at a time — say **"publish"** / **"make this repo public"** and Claude
|
|
453
|
+
> fires the **Pre-Publish Surface Gate** (CLAUDE.md), which runs `public-surface-audit` + `marketplace-gate`
|
|
454
|
+
> Check 5 *before* the irreversible action. Portable checklist: `templates/PRE-PUBLISH-CHECKLIST.md`.
|
|
455
|
+
|
|
456
|
+
### Discovery — *"what's out there?"*
|
|
457
|
+
|
|
458
|
+
| Skill | What it does | Say this |
|
|
459
|
+
|---|---|---|
|
|
460
|
+
| `plugin-recommender` | Searches marketplaces + open source for a task, ranks by quality, gives install commands | "what plugin should I use", "find a tool for Jira tickets", "recommend a plugin" |
|
|
461
|
+
| `cross-ecosystem-synergy-detection` | Finds cross-invocable pairs across your installed plugins/CLIs + a synergy ranking | "are my tools working together", "any synergy / overlap", "can these integrate" |
|
|
462
|
+
| `frontier-digest` | Pulls latest AI/agent/harness trends from HN + arXiv into actionable insights | "latest AI trends", "frontier digest", "what's new out there" |
|
|
463
|
+
|
|
464
|
+
### Simulation, review & clarification — *"pressure-test the thinking"*
|
|
465
|
+
|
|
466
|
+
| Skill | What it does | Say this |
|
|
467
|
+
|---|---|---|
|
|
468
|
+
| `sim-conductor` | Profiles a target → derives personas → parallel-agent audit → M/S/R triage. Areas: A external-user · B internal-audit · C ideation | "external user perspective", "run an internal audit", "simulate this" |
|
|
469
|
+
| `apex-review` | Reviews from a top-level decision-maker's lens, not a practitioner's | "will this hold up for leadership", "CTO-level review", "approval deck" |
|
|
470
|
+
| `deep-clarify` | Turns a vague request into an actionable spec through Socratic questioning | "I'm not sure what to build", "help me clarify the requirements" |
|
|
471
|
+
|
|
472
|
+
### Setup & onboarding — *"get started / keep it tidy"*
|
|
473
|
+
|
|
474
|
+
| Skill | What it does | Say this |
|
|
475
|
+
|---|---|---|
|
|
476
|
+
| `install-wizard` | First-install onboarding (zshrc, sentinels, the FH self-gate) | "first-time setup", "run the install wizard" |
|
|
477
|
+
| `hub-cc-pr-reviewer` | Reads a PR diff → 8-matrix baseline-consistency check → review comment + merge call | "review this PR", "check this diff" |
|
|
478
|
+
| `skill-splitter` | Splits an over-large SKILL.md that "does everything" into scoped files | "this skill is bloated", "SKILL.md too large", "split this skill" |
|
|
479
|
+
|
|
480
|
+
### Agents (sub-agents, dispatched — not slash commands)
|
|
481
|
+
|
|
482
|
+
| Agent | What it does | When it's used |
|
|
483
|
+
|---|---|---|
|
|
484
|
+
| `challenger` *(hub)* | Frontier-grade adversarial evaluator; adapts attack vectors to artifact type, cites evidence per attack | The heavy adversarial reviewer behind steel-quench / harvest-loop |
|
|
485
|
+
| `quench-challenger` *(commons)* | Devil (6-axis attack) + Innovator (alternative) + Prescriber (one-line fix) synthesis | steel-quench Wave 1 calls it first |
|
|
486
|
+
| `fact-checker` *(fh-meta)* | Greps the hub to confirm an asset/skill exists before you recommend it; catches stale facts | "does this already exist in the hub", duplicate-work suspicion |
|
|
487
|
+
| `hub-persona-auditor` *(fh-meta)* | 3+ persona × 4-axis (resonance/confusion/resistance/supplement) audit of an external-facing draft | Before publishing a briefing / card / guide |
|
|
488
|
+
| `persona-innovator` *(fh-meta)* | Generates naming candidates + frame proposals + external frontier signals | "find naming candidates", harness evolution ideation |
|
|
489
|
+
|
|
490
|
+
> **Don't see your need?** Describe it plainly — `plugin-recommender` searches beyond FH too. And if a
|
|
491
|
+
> phrase here doesn't route correctly, the explicit `/skill-name` form always works.
|
package/CLAUDE.md
CHANGED
|
@@ -133,7 +133,7 @@ No user request is needed — this is a mandatory autonomous step, not a proposa
|
|
|
133
133
|
|
|
134
134
|
```
|
|
135
135
|
FH asset modified → Axis 1 (regression_guard.sh --pr {BRANCH})
|
|
136
|
-
→ Axis 2 (/steel-quench) → Axis 3 (/
|
|
136
|
+
→ Axis 2 (/steel-quench) → Axis 3 (/phantom-quench)
|
|
137
137
|
→ marker: tracks/_meta/.axes_23_passed_{branch}_{date}.marker
|
|
138
138
|
→ Axis 4 (/edit-manifest RECORD, today's entry in edit_manifest.yaml)
|
|
139
139
|
→ All 4 PASS → git commit allowed | Any FAIL → fix inline, re-run
|
|
@@ -145,7 +145,7 @@ FH asset modified → Axis 1 (regression_guard.sh --pr {BRANCH})
|
|
|
145
145
|
|
|
146
146
|
**Substantive carve-out — `knowledge/` · `docs/*.md` · `AGENTS.md`** (Axes 2–3 DO run, despite these not being SKILL/rules/templates): a change to any of these is **not** light if its diff adds a fenced code block (```` ``` ````) or a citation/version claim (`arXiv:` / `DOI` / `http` / a versioned dependency like `x.y.z`). Executable patterns and factual claims need phantom-detection + adversarial review *wherever they live* — `knowledge/` Implementation-Patterns sections carry runnable commands, `docs/` holds published guides, and `AGENTS.md` is the Codex-user entry point, so a phantom skill name or wrong version there is an external-facing error the gate must catch. Prose-only edits (typos, rewording, link fixes) stay light. Detection is mechanical: `git diff` adds a ```` ``` ```` fence or a citation token → run Axes 2–3.
|
|
147
147
|
|
|
148
|
-
**Unavailable axis**: If steel-quench or
|
|
148
|
+
**Unavailable axis**: If steel-quench or phantom-quench are not installed, note `Axis N: skipped (skill unavailable)` and proceed. Axis 1 PASS alone is sufficient to unblock a PR when Axes 2–3 are unavailable. Axis 4 (edit-manifest): if the skill is not installed, substitute a manual one-line prediction appended to `tracks/_meta/edit_manifest.yaml` — the record is what matters, not the skill.
|
|
149
149
|
|
|
150
150
|
**Axis ownership** (each skill is already complete — orchestrator only coordinates):
|
|
151
151
|
|
|
@@ -153,11 +153,46 @@ FH asset modified → Axis 1 (regression_guard.sh --pr {BRANCH})
|
|
|
153
153
|
|---|---|---|
|
|
154
154
|
| Backward | `regression_guard.sh` | Critical section loss, broken refs, syntax errors, line reduction |
|
|
155
155
|
| Adversarial | `steel-quench` | Trigger phrase collisions, design attack surface, over-engineered steps |
|
|
156
|
-
| Forward | `
|
|
156
|
+
| Forward | `phantom-quench` | Phantom references, paths that don't exist, stale external links |
|
|
157
157
|
| Record | `edit-manifest` RECORD | Logs predicted impact — closes the predict-verify loop for future harvest-loop |
|
|
158
158
|
|
|
159
159
|
---
|
|
160
160
|
|
|
161
|
+
## Pre-Publish Surface Gate (Irreversibility Gate — Publish, not Commit)
|
|
162
|
+
|
|
163
|
+
**Order invariant: scrub before publish, never publish-then-scrub.** Public exposure is effectively
|
|
164
|
+
irreversible — a repo or package is briefly live the instant it goes public and may be cached or forked
|
|
165
|
+
before any scrub. So the audit must fire **pre-publish**, not after.
|
|
166
|
+
|
|
167
|
+
**When this gate fires** — *before* any action that makes a repo/package **publicly visible for the
|
|
168
|
+
first time**, especially one **derived from internal/company assets** (operator-IP that originated in a
|
|
169
|
+
private harness): `gh repo create --public`, `gh repo edit --visibility public`, a first push to a new
|
|
170
|
+
public remote, `npm publish`, `twine upload`, a private→public visibility flip.
|
|
171
|
+
|
|
172
|
+
**Required before the public action** (both must be non-LEAK) — this gate is the **umbrella that invokes
|
|
173
|
+
both**, not a competitor to them; when publish intent is detected, fire *this* gate (it then runs both),
|
|
174
|
+
not marketplace-gate alone:
|
|
175
|
+
1. `/public-surface-audit` — operator-private token scan (real username, corp asset names, home paths)
|
|
176
|
+
2. `/marketplace-gate` Check 5 — broad public safety (API keys, internal domains, license)
|
|
177
|
+
|
|
178
|
+
> Routing vs the rows below: `/marketplace-gate` alone = "is this ready to **list on a marketplace**?";
|
|
179
|
+
> `/public-surface-audit` alone = reactive "did I leak a token?"; **this gate** = the *act of going
|
|
180
|
+
> public* (visibility flip / first public push / registry publish) — it chains the other two.
|
|
181
|
+
|
|
182
|
+
**Cheap mechanical pre-flags** (any one → stop and run the gate): author/commit **email = corp domain** ·
|
|
183
|
+
`LICENSE`/`README` contains a **private harness name or internal codename** · **module paths encode
|
|
184
|
+
internal acronyms**.
|
|
185
|
+
|
|
186
|
+
**Why no hook (honest)**: the irreversible action is `gh repo create --public` / a visibility flip, **not
|
|
187
|
+
`git commit`** — and it usually happens in a **separate repo**, not forge-harness. The FH pre-commit hook
|
|
188
|
+
cannot catch either. This gate is therefore **AI-behavioral** (proactive trigger below) **+ a portable
|
|
189
|
+
checklist** (`templates/PRE-PUBLISH-CHECKLIST.md`) the operator runs on any repo, on any machine.
|
|
190
|
+
|
|
191
|
+
> Origin: 2026-06-05 `phantom-gate` shipped public, then needed a private→de-company-scrub→re-public
|
|
192
|
+
> round-trip (`fh_signal_2026-06-05_fh-direct`). PSA existed but nothing forced it pre-publish.
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
161
196
|
## Autonomous Initiative Layer — Context-Triggered Skill Proposals (Active Throughout Session)
|
|
162
197
|
|
|
163
198
|
At any point during a session, when the following signals are detected, propose the relevant skill in one line.
|
|
@@ -182,6 +217,7 @@ Proposal format: `"I see [X]. Want me to run /[skill] to [one-line description]?
|
|
|
182
217
|
| "where does this go", "asset location", "hub vs project", "placement" | `/asset-placement-gate` |
|
|
183
218
|
| "add to marketplace", "OK to publish", "pre-publish check" | `/marketplace-gate` |
|
|
184
219
|
| "did I leak anything", "public surface audit", "private token scan", "is my split clean", "check tracked files for private tokens" | `/public-surface-audit` |
|
|
220
|
+
| "publish", "make public", "make this repo public", "go public", "gh repo create --public", "flip to public", "first public push", "publish the package", "npm publish", "twine upload" (publish intent — **proactive**, fire *before* the action) | **Pre-Publish Surface Gate** (see above → `/public-surface-audit` + `/marketplace-gate` Check 5 must PASS first) |
|
|
185
221
|
| "look at this again", "is this right", "counterargument", "re-validate" | `/verify-bidirectional` |
|
|
186
222
|
| "MCP failing", "tool keeps erroring", "circuit-breaker", "same error looping" | `/mcp-circuit-breaker` |
|
|
187
223
|
| "token budget", "how expensive", "estimate tokens", "will this cost a lot" | `/token-budget-gate` |
|
|
@@ -261,7 +297,7 @@ Tiers: S=light(~5K) · M=standard(~15K, FH default) · L=full(~30K) · XL=max(~6
|
|
|
261
297
|
|
|
262
298
|
**Current: Beta → External Validation Achieved** — v1.0 formal release conditions: additional external install evidence + at least 1 external PR.
|
|
263
299
|
|
|
264
|
-
> Usage modes (A/B/C) +
|
|
300
|
+
> Usage modes (A/B/C) + what-you-get (Layer 1/2) details: `.claude/rules/modes_and_value.md`
|
|
265
301
|
|
|
266
302
|
## Auto Project Mapping Protocol
|
|
267
303
|
|
package/README.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="https://raw.githubusercontent.com/chrono-meta/forge-harness/main/docs/banner.png" alt="forge-harness —
|
|
2
|
+
<img src="https://raw.githubusercontent.com/chrono-meta/forge-harness/main/docs/banner.png" alt="forge-harness — Forge your projects, pass them through, faster." width="680">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
@@ -11,14 +11,25 @@
|
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
13
|
<p align="center">
|
|
14
|
-
<b>
|
|
15
|
-
A
|
|
14
|
+
<b>Forge your Claude Code projects — pass them through, they come out faster.</b><br>
|
|
15
|
+
A practitioner's meta-harness: it raises each project's <b>floor</b> (harness-ify the setup)<br>and <b>ceiling</b> (accelerate the work), then compounds the gains across your whole portfolio.
|
|
16
|
+
</p>
|
|
17
|
+
|
|
18
|
+
<p align="center">
|
|
19
|
+
<i>Fork it. Rename it. Make it yours.</i>
|
|
16
20
|
</p>
|
|
17
21
|
|
|
18
22
|
<p align="center">
|
|
19
23
|
<img src="docs/pillars.svg" alt="FORK · ADAPT · COLLABORATE · EMPOWER" width="680">
|
|
20
24
|
</p>
|
|
21
25
|
|
|
26
|
+
<p align="center">
|
|
27
|
+
<a href="ETHOS.md"><b>The principles</b></a> ·
|
|
28
|
+
<a href="WHY.md"><b>Why it exists</b></a> ·
|
|
29
|
+
<a href="OUTPUT_EVIDENCE.md"><b>The evidence</b></a> ·
|
|
30
|
+
<a href="CHEATSHEET.md"><b>How to use it</b></a>
|
|
31
|
+
</p>
|
|
32
|
+
|
|
22
33
|
---
|
|
23
34
|
|
|
24
35
|
| If you're here because… | forge-harness solves it |
|
|
@@ -60,6 +71,11 @@ claude plugin install -s user fh-meta@forge-harness
|
|
|
60
71
|
cd ~/projects/{your-project} && claude
|
|
61
72
|
```
|
|
62
73
|
|
|
74
|
+
> 🚪 **New here / just want the skills?** Start with the opinionated front door —
|
|
75
|
+
> [`templates/starter_profile.md`](templates/starter_profile.md): one install command, a curated
|
|
76
|
+
> first-five skills, and a zero-install governance gate (`npx … fh-gate`). The other 28 skills wait
|
|
77
|
+
> until you need them.
|
|
78
|
+
|
|
63
79
|
---
|
|
64
80
|
|
|
65
81
|
## What it is
|
|
@@ -84,6 +100,19 @@ Project B ──→ connect hub in CLAUDE.md
|
|
|
84
100
|
|
|
85
101
|
---
|
|
86
102
|
|
|
103
|
+
## Why it works
|
|
104
|
+
|
|
105
|
+
After a long co-authoring session with your AI, you and it share the same context — and the same blind spots. The reviewer worth having is the one who never saw your reasoning. You can get that by hand: paste the work into a fresh, empty chat. FH just turns that chore into one routine command.
|
|
106
|
+
|
|
107
|
+
- **sidecar / agent dispatch** → a reviewer with none of your session's context
|
|
108
|
+
- **steel-quench · phantom-quench** → that cold pass, on demand
|
|
109
|
+
|
|
110
|
+
It's model-agnostic: co-build with one AI, run the cold pass with any other. Whoever was absent from the original session is your cold reviewer — this is not a ranking of models.
|
|
111
|
+
|
|
112
|
+
**What FH does not claim:** the cold pass is your base model's own ability, not a detection engine FH adds — a plain prompt to a fresh instance does much of the same. FH's value is narrower and honest: it takes a method drawn from real practice and makes running that independent pass routine, instead of a chore you skip. The methodology is copyable; what FH packages is the workflow, not a secret sauce.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
87
116
|
## Governance layer for AI-generated code
|
|
88
117
|
|
|
89
118
|
FH wraps any coding agent (OpenCode, Codex, etc.) as a **post-generation governance gate**.
|
|
@@ -100,7 +129,7 @@ FH_BACKEND=auto npx --package @chrono-meta/fh-gate fh-gate "src/foo.ts" full
|
|
|
100
129
|
For direct skill or agent execution outside Claude Code, use `fh-run`:
|
|
101
130
|
|
|
102
131
|
```bash
|
|
103
|
-
FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-run --skill
|
|
132
|
+
FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-run --skill phantom-quench --file docs/foo.md
|
|
104
133
|
FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-run --agent fh-commons:quench-challenger --file plugins/fh-meta/skills/foo/SKILL.md
|
|
105
134
|
```
|
|
106
135
|
|
|
@@ -118,7 +147,24 @@ Full spec: [`fh_integration_contract.md`](knowledge/shared/harness-core/fh_integ
|
|
|
118
147
|
|
|
119
148
|
---
|
|
120
149
|
|
|
121
|
-
##
|
|
150
|
+
## The forge
|
|
151
|
+
|
|
152
|
+
forge-harness treats a project like steel — and the metaphor is literal, not decoration. Work is shaped,
|
|
153
|
+
hardened by attack, and only then does it ship faster, for having survived.
|
|
154
|
+
|
|
155
|
+
| Movement | What happens | The commands |
|
|
156
|
+
|---|---|---|
|
|
157
|
+
| **Forge** | shape the raw project into a harness — raise its floor | `install-wizard`, "harness-ify this project" |
|
|
158
|
+
| **Quench** | harden it by attack — the cold pass leaves standing only what is sound | `steel-quench` · `phantom-quench` |
|
|
159
|
+
| **Temper** | take the brittleness back out of the hardened asset | *the movement being forged next* |
|
|
160
|
+
| → **Accelerate** | a blade that survived the forge cuts faster | `goal-quench` — *Pass → Accelerate* |
|
|
161
|
+
|
|
162
|
+
Three movements are shipped; **temper** is the direction ahead — and naming the movement we have *not*
|
|
163
|
+
finished is the point (see [`ETHOS.md`](ETHOS.md#the-forge)). Around the forge, two more signatures keep
|
|
164
|
+
it running: `harvest-loop` (each session's lessons become permanent skills) and `agent-composer`
|
|
165
|
+
(orchestrate the dispatch). The other skills wait until you need them — full list below.
|
|
166
|
+
|
|
167
|
+
## 33 skills · 5 agents
|
|
122
168
|
|
|
123
169
|
<details>
|
|
124
170
|
<summary>Full asset activation check</summary>
|
|
@@ -126,7 +172,7 @@ Full spec: [`fh_integration_contract.md`](knowledge/shared/harness-core/fh_integ
|
|
|
126
172
|
| Asset | Role | Triggers |
|
|
127
173
|
|---|---|---|
|
|
128
174
|
| `steel-quench` | Full-spectrum adversarial verification | "Run the quench", "Attack from the root" |
|
|
129
|
-
| `
|
|
175
|
+
| `phantom-quench` | Phantom claim detection + source back-tracing | "Verify the source", "Grounding audit" |
|
|
130
176
|
| `harvest-loop` | End-of-session learning → evolution pipeline | "Harvest the session" |
|
|
131
177
|
| `agent-composer` | Plans optimal agent dispatch | "Run in parallel", "Which agents?" |
|
|
132
178
|
| `sim-conductor` | Meta-simulation orchestrator | "External user perspective" |
|
|
@@ -160,7 +206,7 @@ Full spec: [`fh_integration_contract.md`](knowledge/shared/harness-core/fh_integ
|
|
|
160
206
|
|
|
161
207
|
| Cluster | Skills |
|
|
162
208
|
|---|---|
|
|
163
|
-
| Verification | `steel-quench` · `
|
|
209
|
+
| Verification | `steel-quench` · `phantom-quench` · `convergence-loop` · `prompt-regression` · `return-path-gate` |
|
|
164
210
|
| Orchestration | `agent-composer` · `pipeline-conductor` · `goal-quench` · `deliberation` |
|
|
165
211
|
| Diagnosis | `harness-doctor` · `context-doctor` · `install-doctor` · `mcp-circuit-breaker` |
|
|
166
212
|
| Harvesting / Learning | `harvest-loop` · `field-harvest` · `edit-manifest` · `memory-hygiene` |
|
|
@@ -169,6 +215,9 @@ Full spec: [`fh_integration_contract.md`](knowledge/shared/harness-core/fh_integ
|
|
|
169
215
|
| Content / Simulation | `sim-conductor` · `apex-review` · `meta-prompt-builder` · `deep-clarify` |
|
|
170
216
|
| Setup | `install-wizard` · `hub-cc-pr-reviewer` · `skill-splitter` |
|
|
171
217
|
|
|
218
|
+
> **Full phrasebook** — every skill + agent with its one-line definition and the plain-language phrase
|
|
219
|
+
> that triggers it: [`CHEATSHEET.md` §12](CHEATSHEET.md#12-skills--agents--what-each-does-and-what-to-say).
|
|
220
|
+
|
|
172
221
|
</details>
|
|
173
222
|
|
|
174
223
|
---
|
|
@@ -193,17 +242,21 @@ If you use external CLIs (Gemini, Codex, `gh copilot`) as sidecars, their costs
|
|
|
193
242
|
|
|
194
243
|
---
|
|
195
244
|
|
|
196
|
-
## Multi-Model Sidecar
|
|
245
|
+
## Multi-Model Sidecar
|
|
197
246
|
|
|
198
|
-
Run Gemini, Codex, or `gh copilot` as independent
|
|
247
|
+
Run Gemini, Codex, or `gh copilot` as independent reviewers alongside Claude. The point is **context
|
|
248
|
+
isolation**: a reviewer that did *not* co-create the work is cold to its froth — whoever sits *outside* the
|
|
249
|
+
collaboration tends to catch what the co-author, now an advocate for the shared result, glides past. It's
|
|
250
|
+
symmetric, not a model-ranking: when you co-build with Gemini, a fresh Claude catches its froth; when you
|
|
251
|
+
co-build with Claude, a fresh sidecar catches Claude's.
|
|
199
252
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
253
|
+
In one internal case study, layering reviewers surfaced progressively more issues — a single in-session
|
|
254
|
+
pass missed items that cross-session personas caught, and an external-CLI reviewer surfaced a few the
|
|
255
|
+
Claude personas shared a blind spot on. Treat it as a worked example, **not a benchmark**: the gain scales
|
|
256
|
+
with task complexity and how much you co-created the artifact, and an isolated reviewer also adds false
|
|
257
|
+
positives you have to triage. Whether the net is worth it on a given task is an empirical, per-use question.
|
|
205
258
|
|
|
206
|
-
Claude-side token cost
|
|
259
|
+
Claude-side token cost does not increase when the extra reviewer is an external CLI — it bills to its own quota.
|
|
207
260
|
|
|
208
261
|
---
|
|
209
262
|
|
package/docs/codex-compat.md
CHANGED
|
@@ -15,7 +15,7 @@ cat plugins/fh-meta/skills/<skill>/SKILL.md path/to/artifact \
|
|
|
15
15
|
- `codex exec -m gpt-5.5 -` reads the combined prompt from stdin and runs headless.
|
|
16
16
|
- `npx @openai/codex` (interactive) requires a TTY and is **not** suitable for piped skill application.
|
|
17
17
|
- Inside a git repository (e.g. a clone of this repo) no extra flag is needed. **Outside** a git repo (e.g. running from `/tmp`), add `--skip-git-repo-check`.
|
|
18
|
-
- `codex exec` has its own file-read tools, so a skill that back-traces claims to source files (e.g. `
|
|
18
|
+
- `codex exec` has its own file-read tools, so a skill that back-traces claims to source files (e.g. `phantom-quench`) can verify paths itself — it produced real `file:line` citations in validation.
|
|
19
19
|
|
|
20
20
|
## Runtime adapters
|
|
21
21
|
|
|
@@ -48,7 +48,7 @@ Backend defaults:
|
|
|
48
48
|
|
|
49
49
|
```bash
|
|
50
50
|
FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-run \
|
|
51
|
-
--skill
|
|
51
|
+
--skill phantom-quench \
|
|
52
52
|
--file docs/foo.md
|
|
53
53
|
|
|
54
54
|
FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-run \
|
|
@@ -81,8 +81,8 @@ These are **author** runs — they confirm the M1 tier assignments are accurate
|
|
|
81
81
|
|
|
82
82
|
| Skill | Tier | Method | Result |
|
|
83
83
|
|---|---|---|---|
|
|
84
|
-
| `
|
|
85
|
-
| `asset-placement-gate` | M1 | Fed a proposed `phantom-checker` skill that duplicates `
|
|
84
|
+
| `phantom-quench` | M1 | Fed a fixture with 2 real + 2 phantom claims (a non-existent skill path, a fabricated "47 M1 skills" count) | **4/4 correct** — both real claims Grounded with `file:line` citations, both phantoms caught (the fabricated count corrected against the actual `AGENTS.md`) |
|
|
85
|
+
| `asset-placement-gate` | M1 | Fed a proposed `phantom-checker` skill that duplicates `phantom-quench` | **Correct** — applied the 4-criteria bar, flagged criterion ④ overlap, routed to **Drop** with "route intent to phantom-quench" |
|
|
86
86
|
|
|
87
87
|
Both ran end-to-end with no Claude-native dependency. The M1 tier claim holds for the two skills tested.
|
|
88
88
|
|
package/docs/pillars.svg
CHANGED
|
@@ -21,44 +21,41 @@
|
|
|
21
21
|
<rect width="680" height="3" fill="#e07d2a" filter="url(#glow)"/>
|
|
22
22
|
<rect y="3" width="680" height="5" fill="#e07d2a" fill-opacity="0.10"/>
|
|
23
23
|
|
|
24
|
-
<!-- ═══
|
|
24
|
+
<!-- ═══ HARNESS (x=8, cx=88) ═══ -->
|
|
25
25
|
<rect x="8" y="10" width="160" height="84" rx="5" fill="url(#cd)" stroke="#c46820" stroke-width="0.8"/>
|
|
26
|
-
<!-- Chain link icon -->
|
|
26
|
+
<!-- Chain link icon (harness = link) -->
|
|
27
27
|
<ellipse cx="81" cy="34" rx="10" ry="6" fill="none" stroke="#e07d2a" stroke-width="2" transform="rotate(-35 81 34)"/>
|
|
28
28
|
<ellipse cx="95" cy="44" rx="10" ry="6" fill="none" stroke="#e07d2a" stroke-width="2" transform="rotate(-35 95 44)"/>
|
|
29
|
-
<text x="88" y="63" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="13" font-weight="bold" fill="#f5943a" letter-spacing="2">
|
|
30
|
-
<text x="88" y="76" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="9.5" fill="#9e7040">
|
|
31
|
-
<text x="88" y="88" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="9.5" fill="#9e7040"
|
|
29
|
+
<text x="88" y="63" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="13" font-weight="bold" fill="#f5943a" letter-spacing="2">HARNESS</text>
|
|
30
|
+
<text x="88" y="76" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="9.5" fill="#9e7040">Harness-ify a project</text>
|
|
31
|
+
<text x="88" y="88" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="9.5" fill="#9e7040">— raise its floor</text>
|
|
32
32
|
|
|
33
|
-
<!-- ═══
|
|
33
|
+
<!-- ═══ FORGE (x=176, cx=256) ═══ -->
|
|
34
34
|
<rect x="176" y="10" width="160" height="84" rx="5" fill="url(#cd)" stroke="#c46820" stroke-width="0.8"/>
|
|
35
|
-
<!--
|
|
36
|
-
<
|
|
37
|
-
<
|
|
38
|
-
<
|
|
39
|
-
<text x="256" y="
|
|
40
|
-
<text x="256" y="
|
|
41
|
-
<text x="256" y="88" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="9.5" fill="#9e7040">and extend</text>
|
|
35
|
+
<!-- Hammer icon -->
|
|
36
|
+
<rect x="247" y="28" width="18" height="7" rx="1.5" fill="none" stroke="#e07d2a" stroke-width="2"/>
|
|
37
|
+
<line x1="256" y1="35" x2="256" y2="50" stroke="#e07d2a" stroke-width="2.4" stroke-linecap="round"/>
|
|
38
|
+
<text x="256" y="63" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="13" font-weight="bold" fill="#f5943a" letter-spacing="2">FORGE</text>
|
|
39
|
+
<text x="256" y="76" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="9.5" fill="#9e7040">Temper it through</text>
|
|
40
|
+
<text x="256" y="88" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="9.5" fill="#9e7040">adversarial gates</text>
|
|
42
41
|
|
|
43
|
-
<!-- ═══
|
|
42
|
+
<!-- ═══ ACCELERATE (x=344, cx=424) ═══ -->
|
|
44
43
|
<rect x="344" y="10" width="160" height="84" rx="5" fill="url(#cd)" stroke="#c46820" stroke-width="0.8"/>
|
|
45
|
-
<!--
|
|
46
|
-
<
|
|
47
|
-
<
|
|
48
|
-
<
|
|
49
|
-
<
|
|
50
|
-
<text x="424" y="63" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="11" font-weight="bold" fill="#f5943a" letter-spacing="0.8">COLLABORATE</text>
|
|
51
|
-
<text x="424" y="76" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="9.5" fill="#9e7040">Multi-project teams.</text>
|
|
52
|
-
<text x="424" y="88" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="9.5" fill="#9e7040">One shared backbone.</text>
|
|
44
|
+
<!-- Forward chevrons -->
|
|
45
|
+
<path d="M414,29 l9,8 l-9,8 M426,29 l9,8 l-9,8" fill="none" stroke="#e07d2a" stroke-width="2.6" stroke-linecap="round" stroke-linejoin="round"/>
|
|
46
|
+
<text x="424" y="63" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="11" font-weight="bold" fill="#f5943a" letter-spacing="0.8">ACCELERATE</text>
|
|
47
|
+
<text x="424" y="76" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="9.5" fill="#9e7040">Pass it through —</text>
|
|
48
|
+
<text x="424" y="88" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="9.5" fill="#9e7040">it comes out faster</text>
|
|
53
49
|
|
|
54
|
-
<!-- ═══
|
|
50
|
+
<!-- ═══ COMPOUND (x=512, cx=592) ═══ -->
|
|
55
51
|
<rect x="512" y="10" width="160" height="84" rx="5" fill="url(#cd)" stroke="#c46820" stroke-width="0.8"/>
|
|
56
|
-
<!--
|
|
57
|
-
<
|
|
58
|
-
<
|
|
59
|
-
<
|
|
60
|
-
<text x="592" y="
|
|
61
|
-
<text x="592" y="
|
|
52
|
+
<!-- Rising bars (compounding gains) -->
|
|
53
|
+
<rect x="581" y="40" width="6" height="10" fill="#e07d2a"/>
|
|
54
|
+
<rect x="589" y="34" width="6" height="16" fill="#e07d2a"/>
|
|
55
|
+
<rect x="597" y="27" width="6" height="23" fill="#e07d2a"/>
|
|
56
|
+
<text x="592" y="63" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="12" font-weight="bold" fill="#f5943a" letter-spacing="1">COMPOUND</text>
|
|
57
|
+
<text x="592" y="76" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="9.5" fill="#9e7040">Gains compound across</text>
|
|
58
|
+
<text x="592" y="88" text-anchor="middle" font-family="Georgia,'Times New Roman',serif" font-size="9.5" fill="#9e7040">your whole portfolio</text>
|
|
62
59
|
|
|
63
60
|
<!-- Subtle vertical dividers -->
|
|
64
61
|
<line x1="176" y1="18" x2="176" y2="86" stroke="#c46820" stroke-width="0.5" stroke-opacity="0.35"/>
|
|
@@ -196,7 +196,7 @@ All backends must produce the same `FH_STATUS` / `FH_GATE_VERDICT` header. Missi
|
|
|
196
196
|
### Pattern 2-c — Direct skill or agent run
|
|
197
197
|
|
|
198
198
|
```bash
|
|
199
|
-
FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-run --skill
|
|
199
|
+
FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-run --skill phantom-quench --file docs/foo.md
|
|
200
200
|
FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-run --agent fh-commons:quench-challenger --file plugins/fh-meta/skills/foo/SKILL.md
|
|
201
201
|
```
|
|
202
202
|
|
package/package.json
CHANGED
|
@@ -58,7 +58,7 @@ For each subtask in the composition plan:
|
|
|
58
58
|
| Subtask type | Strong fit signal | Weak fit signal |
|
|
59
59
|
|---|---|---|
|
|
60
60
|
| Adversarial review | `subagent_type="challenger"`, artifact_type match | general-purpose only |
|
|
61
|
-
| Phantom detection | `
|
|
61
|
+
| Phantom detection | `phantom-quench` | general-purpose only |
|
|
62
62
|
| Persona simulation | `hub-persona-auditor`, deep-insight persona | general-purpose only |
|
|
63
63
|
| Code generation | `writes: true` + code tools | `writes: false` or no code tools |
|
|
64
64
|
| Audit-only | `writes: false` (safe) | `writes: true` (risky for audit) |
|
|
@@ -401,10 +401,10 @@ fit_score = 0.00 → GAP — do not assign
|
|
|
401
401
|
**Example 3 — Phantom detection subtask**
|
|
402
402
|
|
|
403
403
|
- Subtask type: `phantom-detection`
|
|
404
|
-
- Candidate agent: `
|
|
404
|
+
- Candidate agent: `phantom-quench` skill (`declared_capabilities=["phantom-detection","source-trace"]`, `writes=false`)
|
|
405
405
|
|
|
406
406
|
```
|
|
407
|
-
role_match = 0.40 (role matches "
|
|
407
|
+
role_match = 0.40 (role matches "phantom-quench" → "phantom-detection")
|
|
408
408
|
tools_overlap = 0.30 (Read+Bash match; required_tools overlap = 1.0)
|
|
409
409
|
writes_compat = 0.20 (audit-only; writes=false → bonus)
|
|
410
410
|
cap_bonus = 0.10 (declared_capabilities contains "phantom-detection")
|
|
@@ -57,7 +57,7 @@ append a manifest entry **before** committing.
|
|
|
57
57
|
|
|
58
58
|
> **Wiring note**: This Record step is invoked manually or via harvest-loop until the
|
|
59
59
|
> CLAUDE.md 3-axis auto-gate is explicitly extended to call it. The auto-gate currently
|
|
60
|
-
> chains regression_guard → steel-quench →
|
|
60
|
+
> chains regression_guard → steel-quench → phantom-quench; adding edit-manifest
|
|
61
61
|
> Record as a pre-step is a proposed extension, not yet wired. Do not assume automatic
|
|
62
62
|
> invocation — call it explicitly after an FH asset edit.
|
|
63
63
|
|