@chrono-meta/fh-gate 1.4.60 → 1.4.61
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-plugin/marketplace.json +3 -3
- package/CATALOG.md +56 -0
- package/CHEATSHEET.md +15 -2
- package/CLAUDE.md +96 -150
- package/README.md +29 -11
- package/knowledge/shared/harness-core/fh_detail_protocols.md +2 -2
- package/knowledge/shared/harness-core/field_harness_diagnostic.md +48 -0
- package/knowledge/shared/harness-core/measurement-integrity-checklist.md +9 -2
- package/knowledge/shared/harness-core/multi_harness_evolution_loop.md +66 -0
- package/knowledge/shared/harness-core/onboarding_acceleration_autopilot.md +82 -0
- package/package.json +1 -1
- package/plugins/fh-commons/.claude-plugin/plugin.json +1 -1
- package/plugins/fh-meta/.claude-plugin/plugin.json +2 -2
- package/plugins/fh-meta/skills/fh/SKILL.md +71 -0
- package/plugins/fh-meta/skills/salience-splitter/SKILL.md +1 -1
- package/plugins/fh-meta/skills/verify-bidirectional/SKILL.md +3 -3
- package/templates/local_fh_context.md +1 -1
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "fh-meta",
|
|
14
|
-
"version": "1.4.
|
|
15
|
-
"description": "Hub meta-operations toolkit —
|
|
14
|
+
"version": "1.4.61",
|
|
15
|
+
"description": "Hub meta-operations toolkit — 34 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
16
|
"source": "./plugins/fh-meta"
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
"name": "fh-commons",
|
|
20
|
-
"version": "1.4.
|
|
20
|
+
"version": "1.4.61",
|
|
21
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
22
|
"source": "./plugins/fh-commons"
|
|
23
23
|
}
|
package/CATALOG.md
CHANGED
|
@@ -440,6 +440,62 @@ v1.2 release complete (PR #1–#5): harvest-loop Step 0, agent-composer worktree
|
|
|
440
440
|
|
|
441
441
|
<!-- Time-independent reference documents -->
|
|
442
442
|
|
|
443
|
+
### 2026-07-17 | fh-meta | fh, hub-map, slash-command, discoverability, router-demotion-phase-a
|
|
444
|
+
**File:** `plugins/fh-meta/skills/fh/SKILL.md`
|
|
445
|
+
New skill: /fh renders the hub map (door menu + starter set + top phrases) on demand without a greeting — discoverability for task-first sessions. Renders from canonical sources (CLAUDE.md skeleton, starter_profile, CHEATSHEET), never forks a copy. Router-demotion Phase A alongside the trigger-table row diet (Step 0.5 probe 13/18 → 13 frontmatter-covered rows removed).
|
|
446
|
+
|
|
447
|
+
### 2026-07-17 | pattern | multi-harness-evolution-loop, usability-axis, devolution-check, operator-forged
|
|
448
|
+
**File:** `knowledge/shared/harness-core/multi_harness_evolution_loop.md`
|
|
449
|
+
Operator-forged 5-phase loop (structure audit → persona usability → fix → devolution check until CONVERGED → settle) composing existing FH checks across a harness cluster. Doctrine: usability ("does speech reach") is a first-class diagnostic axis; improvement without a devolution check is half a loop. n=1 evidence 2026-07-17; skill-ification gated on n≥2.
|
|
450
|
+
|
|
451
|
+
### 2026-07-17 | detail-layer | claude-md-gates, on-demand-detail, salience-split (backfill)
|
|
452
|
+
**File:** `knowledge/shared/harness-core/claude_md_gate_details.md`
|
|
453
|
+
On-demand detail home for CLAUDE.md gate sections (4-axis marker irreducibility, sim-dispatch fallback, floor-tier canary, cross-family complement, Mode D notice, pre-publish/destructive-op hook coverage, session-close steps) — read when executing or auditing the pointed gate.
|
|
454
|
+
|
|
455
|
+
### 2026-07-17 | gate | field-verdict, cross-family, degrade-direction, load-bearing (backfill)
|
|
456
|
+
**File:** `knowledge/shared/harness-core/field_verdict_crossfamily_gate.md`
|
|
457
|
+
Canonical detail of the Field-Harness Load-Bearing Change Gate — discretion principle, four-faces failure signature, gate mechanics, n=7 qasp evidence (9 default-toward-PASS holes across 3 harnesses), under-trigger residuals, autonomous-loop baking.
|
|
458
|
+
|
|
459
|
+
### 2026-07-17 | detail-layer | field-diagnostic, compose-rank-hitl, six-lenses
|
|
460
|
+
**File:** `knowledge/shared/harness-core/field_harness_diagnostic.md`
|
|
461
|
+
Detail home for the Field-Harness Diagnostic (CLAUDE.md summary section) — full six-lens composition table incl. loop-readiness mechanics + adversarial pairing, 2026-07-08 dogfood examples, guard rationale.
|
|
462
|
+
|
|
463
|
+
### 2026-07-17 | detail-layer | onboarding-autopilot, phase0-audit, simulate-first, install-hitl
|
|
464
|
+
**File:** `knowledge/shared/harness-core/onboarding_acceleration_autopilot.md`
|
|
465
|
+
Detail home for the Onboarding / Acceleration Autopilot (CLAUDE.md summary section) — full Phase-0 branch logic incl. chamber/simulate-first honesty boundary, revfactory provenance, guard evidence (chamber run #7).
|
|
466
|
+
|
|
467
|
+
### 2026-06-20 | principle | gate-locality, multi-runtime, judge-robustness (backfill 2026-07-17)
|
|
468
|
+
**File:** `knowledge/shared/harness-core/gate_locality_principle.md`
|
|
469
|
+
Gate-locality principle — a safety gate must live where the enforcing actor actually reads it; a gate defined where the actor never loads is decorative, not enforced. Origin of the AGENTS.md vs CLAUDE.md inheritance-gap fix (PR#111).
|
|
470
|
+
|
|
471
|
+
### 2026-07-17 | rule | operational-adaptation, uap, user-tuning, generalization-gate (backfill)
|
|
472
|
+
**File:** `knowledge/shared/rules/operational_adaptation.md`
|
|
473
|
+
Standing per-user operational loop — User Adaptation Profile (UAP) mechanics, proposal outcome tracking, suppression/muting rules, and the generalization gate routing idiosyncratic vs generalizable learnings.
|
|
474
|
+
|
|
475
|
+
### 2026-07-17 | dialogue | memory-recall, intent-based, associative, wiki-links (backfill)
|
|
476
|
+
**File:** `knowledge/shared/dialogue/memory_intent_recall.md`
|
|
477
|
+
Intent-based + associative memory recall — keyword → intent + 1-hop [[link]] graph traversal over memory files, index-first to avoid graph-walk explosion.
|
|
478
|
+
|
|
479
|
+
### 2026-07-17 | schema | persona-container, sim-conductor, dispatch-binding (backfill)
|
|
480
|
+
**File:** `knowledge/shared/harness-core/persona_container_schema.md`
|
|
481
|
+
Canonical schema for synthesizing a simulation persona from a reusable container — slots, crowd-scale stop rule, multi-LLM tier distribution, situation→group→skill dispatch binding, and the synthesize→validate→graduate lifecycle. sim-conductor and any persona-dispatch skill fill these slots.
|
|
482
|
+
|
|
483
|
+
### 2026-07-17 | consent | capability-escalation, dispatch-not-substrate, hitl (backfill)
|
|
484
|
+
**File:** `knowledge/shared/harness-core/capability_escalation_consent.md`
|
|
485
|
+
Consent protocol governing when a session may escalate capability — escalation = dispatch (consent-gated), never substrate switch; pairs with sonnet_floor_doctrine.
|
|
486
|
+
|
|
487
|
+
### 2026-06-11 | cross-audit | companion-store, pluggable, gbrain, obsidian (backfill 2026-07-17)
|
|
488
|
+
**File:** `knowledge/shared/harness-core/companion_store_pluggable_cross_audit_2026-06-11.md`
|
|
489
|
+
Sister-asset cross-audit treating FH's companion store, gbrain, and Obsidian as interchangeable backends for one role — durable private knowledge persistence — and the rationale for making the companion store pluggable.
|
|
490
|
+
|
|
491
|
+
### 2026-06-14 | pattern | live-surface, observe-act-verify, appium-less, hybrid-webview (backfill 2026-07-17)
|
|
492
|
+
**File:** `knowledge/shared/harness-core/live_surface_automation_pattern.md`
|
|
493
|
+
Live-surface automation pattern — the capability pattern FH routes to when a mapping project needs an agent to drive a live UI surface: the cross-platform observe-act-verify contract, the Appium-less principle, and the hybrid-WebView vision-synthesis rule. FH routes drivers (no-reinvention).
|
|
494
|
+
|
|
495
|
+
### 2026-07-17 | pattern | ensemble-union, detection-task, voting-vs-union (backfill)
|
|
496
|
+
**File:** `knowledge/patterns/ensemble_union_detection_task_pattern.md`
|
|
497
|
+
Ensemble union pattern for detection tasks — detection ensembles combine by UNION (recall gain), generation ensembles by VOTING; field-measured on a fixed open-weight 3-model panel.
|
|
498
|
+
|
|
443
499
|
### 2026-06-06 | pattern | parallax, multi-persona-review, synthesizer, standpoint-coverage
|
|
444
500
|
**File:** `knowledge/shared/patterns/multi-persona-review.md`
|
|
445
501
|
Generalized architecture for multi-persona parallel artifact review ("parallax") — parallel isolated personas + shared output protocol + neutral synthesizer. Domain-agnostic, IP-stripped; embodied as sim-conductor Step 1.5.
|
package/CHEATSHEET.md
CHANGED
|
@@ -60,6 +60,15 @@ cp <harness-root>/templates/CLAUDE.md <project>/CLAUDE.md
|
|
|
60
60
|
| Save session | "save the current session" |
|
|
61
61
|
| Evaluate structure | "how do you evaluate this structure from an AI perspective" |
|
|
62
62
|
| Check duplicates | "check for duplicate or meaningless data" |
|
|
63
|
+
| Diagnose a mapped project's harness | "진단해줘" / "improve this harness" (inside the project) → ranked fix list, you approve per item |
|
|
64
|
+
| Recall past work | "what did we do last week?" → CATALOG-first search |
|
|
65
|
+
|
|
66
|
+
### Full autonomy — the whole contract in one line
|
|
67
|
+
|
|
68
|
+
> **"끝까지 해줘" / "run it to the end" removes the per-item *prompts*, never the *gates*.**
|
|
69
|
+
> A token budget is agreed up front (goal-quench), install/acceleration plans never overwrite your
|
|
70
|
+
> existing harness/config files (merges are proposed instead), and irreversible actions
|
|
71
|
+
> (publish · delete · history-rewrite) still stop for you.
|
|
63
72
|
|
|
64
73
|
---
|
|
65
74
|
|
|
@@ -90,7 +99,11 @@ cd ~/projects/forge-harness
|
|
|
90
99
|
git add -A && git commit -m "message"
|
|
91
100
|
```
|
|
92
101
|
|
|
93
|
-
### 4-Axis Gate (one-time setup
|
|
102
|
+
### 4-Axis Gate (hub contributors only — one-time setup)
|
|
103
|
+
|
|
104
|
+
> **Only needed if you will modify FH's own assets** (skills, rules, templates, CLAUDE.md — i.e. hub
|
|
105
|
+
> contributions). If you just use FH with your projects, **skip this section**: the gate never fires
|
|
106
|
+
> on your own project's commits.
|
|
94
107
|
|
|
95
108
|
```bash
|
|
96
109
|
# Activate the pre-commit hook — run once after cloning
|
|
@@ -144,7 +157,7 @@ ls <project>/.claude/agents/
|
|
|
144
157
|
echo '.claude/agents/' >> <project>/.git/info/exclude
|
|
145
158
|
```
|
|
146
159
|
|
|
147
|
-
###
|
|
160
|
+
### Agent-copy path — copy only agent files (minimal entry without plugin install)
|
|
148
161
|
|
|
149
162
|
```bash
|
|
150
163
|
# Copy only the agents you need to your project
|
package/CLAUDE.md
CHANGED
|
@@ -173,7 +173,7 @@ Simplification guard: trivial denials with one obvious fix → state block + sin
|
|
|
173
173
|
|
|
174
174
|
- **Returning user** (session files OR mapped project tracks exist): fixed 4-door menu —
|
|
175
175
|
|
|
176
|
-
> 🐿️ **Welcome back to FH.** *① Map a project · ② Create a new project · ③ Accelerate a mapped project (work · Full-Harness · skills/agents/plugins) — {field candidates} · ④ Cross-project synergy*
|
|
176
|
+
> 🐿️ **Welcome back to FH.** *① Map a project · ② Create a new project · ③ Accelerate **or diagnose** a mapped project (work · Full-Harness · skills/agents/plugins · 진단) — {field candidates} · ④ Cross-project synergy*
|
|
177
177
|
>
|
|
178
178
|
> (When **FH-dev state exists** — the operator — the welcome line is **"The FH operator — good to see you."** in place of "Welcome back to FH.")
|
|
179
179
|
|
|
@@ -332,156 +332,103 @@ advisory) is governed separately by `capability_escalation_consent.md`.
|
|
|
332
332
|
|
|
333
333
|
## Field-Harness Load-Bearing Change Gate (cross-family, pre-merge)
|
|
334
334
|
|
|
335
|
-
The 4-axis gate above fires on **FH asset** changes
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
logic grants discretion; discretion's degrade direction is unconstrained (→ optimistic PASS);
|
|
341
|
-
same-family reviewers share the author's optimistic reading and miss it.**
|
|
335
|
+
The 4-axis gate above fires on **FH asset** changes; this gate applies the **same cross-family
|
|
336
|
+
adversarial rigor to load-bearing field code** (qasp · the-bible · pmh). The blind spot it guards is
|
|
337
|
+
model-family-level, not FH-specific: **prose-specified verdict logic grants discretion; discretion's
|
|
338
|
+
degrade direction is unconstrained (→ optimistic PASS); same-family reviewers share the author's
|
|
339
|
+
optimistic reading and miss it.**
|
|
342
340
|
|
|
343
341
|
**Trigger (per changed file — grep-assisted, salience-dependent, no field hook)**: an AI-authored
|
|
344
|
-
change to a **
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
masking) are **not** blockers.
|
|
366
|
-
|
|
367
|
-
*(Role deconfliction: this gate reviews **field code being authored**; the Irreversibility gates
|
|
368
|
-
below gate **the act** of publish/delete/rewrite — disjoint by role and by location, no double-gate.)*
|
|
369
|
-
|
|
370
|
-
**Degrade direction — cross-family unavailable is NOT a silent same-family pass** (the gate's own
|
|
371
|
-
standard): if no different-family auditor is reachable, the gate marks the change **NOT-CONVERGED**
|
|
372
|
-
and either blocks the autonomous merge / asks the operator, or proceeds only under an **explicit,
|
|
373
|
-
logged same-family-only acknowledgment**. This **overrides** the delegated skill's default
|
|
374
|
-
silent-degrade for this surface, consistent with §Irreversibility Surface-Class Degrade Invariant
|
|
375
|
-
(applicable-but-tooling-down ≠ free skip).
|
|
376
|
-
|
|
377
|
-
**Residency**: sanitize company code (redact vendor/domain literals) before any external-family
|
|
378
|
-
dispatch; domain data never leaves. **Autonomy**: autonomous once the operator has consented (UAP),
|
|
379
|
-
same as the FH cross-family complement. **In autonomous loops** (innovator loop-engineering ·
|
|
380
|
-
`/goal` · cluster orchestration): this gate is **part of the delegated pipeline**, not an
|
|
381
|
-
afterthought — a load-bearing field change produced autonomously runs the lint → cross-family →
|
|
382
|
-
converge loop *before* it is Done. Autonomy floor (§Floor governance): the skip/run judgment is
|
|
383
|
-
trusted only at opus-tier+; below-floor RUNS the review by default (run-first, ask-last — asks only
|
|
384
|
-
when no runnable path exists), never silently skips (sonnet_floor_doctrine.md §Autonomy at Sonnet).
|
|
342
|
+
change to a **verdict/gate enum or exit code** (PASS/FAIL/BLOCK/allow/deny), an **irreversible-op**
|
|
343
|
+
path (publish/delete/history-rewrite), or a **safety invariant** (floor, verdict-binding, a
|
|
344
|
+
pre-push/pre-commit hook). Grep the diff for verdict-enum returns / gate exits / safety-marked
|
|
345
|
+
functions — strong-advisory trigger, so under-trigger is a named residual, not an airtight claim.
|
|
346
|
+
|
|
347
|
+
**Gate (before merge, not after)**: ① **degrade-direction lint**
|
|
348
|
+
(`scripts/degrade_direction_scan.sh` — advisory pre-screen, FP-tolerant, never a solo block) →
|
|
349
|
+
② **cross-family adversarial review** (`auto-decorrelation` → ≥1 different-family auditor; governor
|
|
350
|
+
keeps the terminal verdict + **source-grounds** every finding — mechanical anchor over agreement) →
|
|
351
|
+
③ **confirm→fix→re-verify until CONVERGED**, **each fix shipping a mechanical regression test**
|
|
352
|
+
reproducing the closed hole (the anchor leg is a *required* convergence sub-condition). *(Role
|
|
353
|
+
deconfliction: this gate reviews **field code being authored**; the Irreversibility gates below gate
|
|
354
|
+
**the act** of publish/delete/rewrite — disjoint, no double-gate.)*
|
|
355
|
+
|
|
356
|
+
**Degrade direction (fail-closed)**: no different-family auditor reachable → **NOT-CONVERGED** —
|
|
357
|
+
block the autonomous merge / ask the operator / proceed only under an **explicit, logged
|
|
358
|
+
same-family-only acknowledgment**; never a silent same-family pass (§Irreversibility Surface-Class
|
|
359
|
+
Degrade Invariant). **Residency**: sanitize company code before any external-family dispatch; domain data never leaves.
|
|
360
|
+
**Autonomy**: autonomous once UAP-consented; **in autonomous loops the gate is part of the delegated
|
|
361
|
+
pipeline**, not an afterthought, and a below-floor orchestrator RUNS the review by default
|
|
362
|
+
(run-first, ask-last — `sonnet_floor_doctrine.md`).
|
|
385
363
|
|
|
386
364
|
> **Detail**: See `knowledge/shared/harness-core/field_verdict_crossfamily_gate.md` — the discretion
|
|
387
|
-
> principle, the four-faces failure signature, why same-family review misses it, the gate
|
|
388
|
-
> the n=7 qasp field evidence incl. the **9 default-toward-PASS holes across 3 harnesses**
|
|
389
|
-
> 2026-07-03), the named under-trigger residuals, and autonomous-loop baking — read when applying
|
|
390
|
-
> auditing this gate.
|
|
365
|
+
> principle, the four-faces failure signature, why same-family review misses it, the full gate
|
|
366
|
+
> mechanics, the n=7 qasp field evidence incl. the **9 default-toward-PASS holes across 3 harnesses**
|
|
367
|
+
> (2026-07-03), the named under-trigger residuals, and autonomous-loop baking — read when applying
|
|
368
|
+
> or auditing this gate.
|
|
391
369
|
|
|
392
370
|
## Field-Harness Diagnostic — "진단해줘 / 개선해줘" on a mapped project (compose → rank → HITL)
|
|
393
371
|
|
|
394
372
|
The gate above fires on a **specific field code change**. This is its **on-demand pull sibling**: when
|
|
395
373
|
the operator, working in a mapped project, asks to *diagnose* or *improve* the harness itself ("진단해줘",
|
|
396
|
-
"개선해줘", "check this project"), don't hand-pick one skill — **compose the checks FH already has
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
**Guards**: (a) fires on a **project-level** "진단/개선" ask, not a single-file edit request (those go
|
|
419
|
-
straight to the relevant skill); (b) **once per ask** — not a per-turn nag; (c) **company residency** —
|
|
420
|
-
run leak/confidentiality lenses locally, sanitize before any cross-family dispatch, and *surface*
|
|
421
|
-
company-sensitive findings (tracked company hosts, git-history rewrites) for operator decision rather
|
|
422
|
-
than auto-fixing them (dogfood 2026-07-08: the `local_pmh_context.md` tracked-company-hosts finding was
|
|
423
|
-
surfaced, not auto-untracked — history rewrite is the operator's call); (d) **autonomy floor** — the
|
|
424
|
-
compose/rank judgment is trusted at opus-tier+; below-floor, run the individual checks and present raw
|
|
425
|
-
rather than silently skipping a lens. Scale to the ask: a quick "뭐 고칠 거 있어?" runs the cheap
|
|
426
|
-
mechanical lenses (leak · split · token); "제대로 진단해줘" runs all five + harness-doctor depth.
|
|
374
|
+
"개선해줘", "check this project"), don't hand-pick one skill — **compose the checks FH already has**
|
|
375
|
+
(no-reinvention: the diagnostic only *routes and ranks* existing checks) across **six lenses** —
|
|
376
|
+
confidentiality/leak (`/public-surface-audit` incl. Step 3c ignore-verification) · split integrity (`/phantom-quench` Step 2.7) ·
|
|
377
|
+
token/salience (`/context-doctor` · `/salience-splitter`) · structure (`/harness-doctor` L1–L4) ·
|
|
378
|
+
verdict/gate degrade (`scripts/degrade_direction_scan.sh`) · loop-readiness (5-question lens —
|
|
379
|
+
`loop_engineering.md`) — into **one ranked `M`/`S`/`R` list** (same tiering as harness-doctor; each
|
|
380
|
+
item: *lens · file:line · one-line fix*). **Then HITL per item — nothing is auto-fixed**: the diagnostic's job is the
|
|
381
|
+
intelligent list, the human's job is the *go*; an approved fix routes to the owning skill's normal
|
|
382
|
+
path (and, if load-bearing field code, through the Load-Bearing Change Gate above).
|
|
383
|
+
|
|
384
|
+
**Guards**: (a) **project-level** "진단/개선" ask only (single-file asks go straight to the skill);
|
|
385
|
+
(b) **once per ask**; (c) **company residency** — leak lenses run locally, sanitize before
|
|
386
|
+
cross-family dispatch, company-sensitive findings are *surfaced* for operator decision, never
|
|
387
|
+
auto-fixed; (d) **autonomy floor** — compose/rank trusted at opus-tier+; below-floor, run the
|
|
388
|
+
individual checks and present raw rather than silently skipping a lens. Scale to the ask: a quick
|
|
389
|
+
"뭐 고칠 거 있어?" = cheap mechanical lenses (leak · split · token); "제대로 진단해줘" = all six +
|
|
390
|
+
harness-doctor depth.
|
|
391
|
+
|
|
392
|
+
> **Detail**: See `knowledge/shared/harness-core/field_harness_diagnostic.md` — the full lens table
|
|
393
|
+
> (incl. loop-readiness mechanics + its adversarial pairing), the 2026-07-08 dogfood examples, and
|
|
394
|
+
> guard rationale — read when actually running the diagnostic.
|
|
427
395
|
|
|
428
396
|
## Onboarding / Acceleration Autopilot — "새 프로젝트 · 하네스 작성 · 가속화" (discover → compose → rank → install-HITL)
|
|
429
397
|
|
|
430
398
|
The **install-direction twin of the Field-Harness Diagnostic**: same `compose → rank → HITL` engine, but
|
|
431
399
|
it decides *what to install/wire* instead of *what to fix*. When the operator enters an onboarding /
|
|
432
400
|
acceleration door (returning-menu ①②③: "새 프로젝트", "하네스 작성/작성해줘", "이 프로젝트 가속화",
|
|
433
|
-
"harness-ify", "accelerate this project"), don't hand-run one skill
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
3. **Ranked install plan**: one list, `M`/`S`/`R`, each item = *what · why · source (Tier 0 built-in / Tier 1
|
|
465
|
-
official / local sibling / FH scaffold) · exact install command*. No-reinvention: an official/built-in that
|
|
466
|
-
covers the need ranks above a net-new scaffold.
|
|
467
|
-
4. **Install — HITL, non-overwriting**: per-item approval; **never clobber an existing `.claude/`** (propose
|
|
468
|
-
merge/skip if present — this is FH's edge over revfactory's post-plan auto-write and harness-100's raw
|
|
469
|
-
`cp`). Any generated/installed FH asset runs the **4-axis gate**; a field scaffold runs
|
|
470
|
-
`asset-placement-gate` + `steel-quench`. **"끝까지 해줘 / 자율로 완주" → full-autonomy**: run the whole
|
|
471
|
-
plan under the `/goal-quench` budget+quality gate (token cost accepted by the operator), still
|
|
472
|
-
non-overwriting and still gated per asset — autonomy removes the per-item *prompt*, never the *gate*.
|
|
473
|
-
|
|
474
|
-
**Guards**: (a) **non-overwriting is inviolable** — the one thing both revfactory surfaces get wrong; FH
|
|
475
|
-
proposes merge, never clobbers; (b) **no-reinvention** — Tier 0/1 first, scaffold only what adds governance;
|
|
476
|
-
(c) **company residency** — discovery of a company sibling repo surfaces it, does not auto-map/leak it;
|
|
477
|
-
promoted to a machine field (`residency` on the skill registry, `fh_detail_protocols.md §1-c`) so any
|
|
478
|
-
derived recommendation naming a `company`/`operator-private` entry lands only in gitignored `tracks/_meta/`
|
|
479
|
-
or the private companion store, never a tracked public file (chamber run #7, 2026-07-14 — the guard was
|
|
480
|
-
prose-only and the field didn't exist);
|
|
481
|
-
(d) **autonomy floor** — the discover/rank judgment is trusted at opus-tier+; below-floor, present the raw
|
|
482
|
-
recommend and ask; (e) **once per door-entry**, not a per-turn nag. This is the door ③ (accelerate) engine
|
|
483
|
-
and the new-project/harness-write path made autonomous — the operator asks once and the harness discovers,
|
|
484
|
-
ranks, and (on request) installs everything worth wiring.
|
|
401
|
+
"harness-ify", "accelerate this project"), don't hand-run one skill:
|
|
402
|
+
|
|
403
|
+
1. **Phase 0 — State Audit + branch**: auto-discover existing `.claude/`, `CLAUDE.md`, mapped
|
|
404
|
+
`tracks/`, sibling repos, `LOCAL_SKILL_REGISTRY` → branch *new-build* / *extend-existing*
|
|
405
|
+
(found→extend, never fork) / *maintain* (→ Field-Harness Diagnostic instead). New-build that is
|
|
406
|
+
uncertain · exploratory · failure-expensive → **flag simulate-first**: a one-line HITL
|
|
407
|
+
recommendation to run the chamber (`scripts/chamber_run.sh`), then Full-Harness Mode §6 for the
|
|
408
|
+
actual onboarding — **never presented as a push-button autonomous emit** (EMIT has never fired;
|
|
409
|
+
the chamber to date *screens*, it has not *birthed*).
|
|
410
|
+
2. **Innovator-centered recommend**: `persona-innovator` (Mode I acceleration / Mode F FH-dev)
|
|
411
|
+
composing `plugin-recommender` + `cross-ecosystem-synergy-detection` + inferred technical level.
|
|
412
|
+
3. **Ranked install plan**: one `M`/`S`/`R` list — *what · why · source tier · exact install
|
|
413
|
+
command*; an official/built-in that covers the need outranks a net-new scaffold.
|
|
414
|
+
4. **Install — HITL, non-overwriting**: per-item approval; installed FH assets run the **4-axis
|
|
415
|
+
gate**, field scaffolds run `asset-placement-gate` + `steel-quench`. **"끝까지 해줘 / 자율로
|
|
416
|
+
완주" → full-autonomy** under the `/goal-quench` budget+quality gate — autonomy removes the
|
|
417
|
+
per-item *prompt*, never the *gate*.
|
|
418
|
+
|
|
419
|
+
**Guards (inviolable)**: (a) **non-overwriting** — propose merge, never clobber an existing
|
|
420
|
+
`.claude/`; (b) **no-reinvention** — Tier 0/1 first, scaffold only what adds governance; (c)
|
|
421
|
+
**company residency** — a company sibling repo is surfaced, never auto-mapped/leaked; `residency` is
|
|
422
|
+
a machine field on the skill registry (`fh_detail_protocols.md §1-c`), so recommendations naming a
|
|
423
|
+
`company`/`operator-private` entry land only in gitignored `tracks/_meta/` or the private companion
|
|
424
|
+
store; (d) **autonomy floor** — discover/rank trusted at opus-tier+; below-floor, present the raw
|
|
425
|
+
recommend and ask; (e) **once per door-entry**. This is the door ③ engine made autonomous — the
|
|
426
|
+
operator asks once and the harness discovers, ranks, and (on request) installs everything worth wiring.
|
|
427
|
+
|
|
428
|
+
> **Detail**: See `knowledge/shared/harness-core/onboarding_acceleration_autopilot.md` — the full
|
|
429
|
+
> Phase-0 branch logic (incl. the chamber/simulate-first honesty boundary + `chamber_run.sh` runner
|
|
430
|
+
> scope), revfactory provenance, and guard evidence (chamber run #7) — read when executing this
|
|
431
|
+
> autopilot.
|
|
485
432
|
|
|
486
433
|
## Irreversibility Gates — Surface-Class Degrade Invariant (shared spine of the two gates below)
|
|
487
434
|
|
|
@@ -618,38 +565,37 @@ into "just delete it."
|
|
|
618
565
|
At any point during a session, when the following signals are detected, propose the relevant skill in one line.
|
|
619
566
|
Proposal format: `"I see [X]. Want me to run /[skill] to [one-line description]?"`
|
|
620
567
|
|
|
568
|
+
> **Row diet (2026-07-17, Step 0.5 probe 13/18)**: rows whose skill frontmatter `description` already
|
|
569
|
+
> catches the utterance at high confidence were removed — platform-native skill matching owns those
|
|
570
|
+
> (plugin-recommender · harness-doctor · synergy · frontier-digest · sim-conductor · install-wizard ·
|
|
571
|
+
> asset-placement-gate · marketplace-gate · public-surface-audit · verify-bidirectional ·
|
|
572
|
+
> mcp-circuit-breaker · token-budget-gate · salience-splitter — the last one earned removal by a
|
|
573
|
+
> description strengthening in the same change, not by its original description). This table keeps only: **proactive
|
|
574
|
+
> safety gates** (publish · destructive · MCP-mount) · **non-skill protocol routes** (gates, doctrine
|
|
575
|
+
> sections, deep-research ladder) · **disambiguators and weak-description rows**. Before adding a row
|
|
576
|
+
> back, probe whether the description alone catches it.
|
|
577
|
+
|
|
621
578
|
| Conversation Signal Keywords | Proposed Skill |
|
|
622
579
|
|---|---|
|
|
623
|
-
| "
|
|
624
|
-
| "context is getting long", "token limit", "/clear", "slow", "context" (burden) | `/context-doctor` |
|
|
580
|
+
| "context is getting long", "token limit", "/clear", "slow", "context", "토큰 아깝다" (burden already felt — retrospective; future-cost estimates go to `/token-budget-gate`) | `/context-doctor` |
|
|
625
581
|
| "wrap up this week", "review", "audit", "weekly", "retrospective" | `/harvest-loop` |
|
|
626
582
|
| "pull this into FH", "reverse-harvest", "worth keeping", "harvest pattern", "field pattern" | `/field-harvest` |
|
|
627
583
|
| "용광로모드", "crucible mode", "absorb this whole corpus", "throw everything in", "re-forge FH identity", "melt this down" (total-immersion absorption, not cherry-pick — esp. a whole corpus on a core FH axis, or a frontier showcase risking FOMO) | `knowledge/shared/harness-core/crucible_mode.md` (read it, run the chain: total-ingest → steel-quench/phantom-quench melt → governor identity-bonding → sim/persona reforge → field-harvest rebirth; the core invariants stay unmeltable) |
|
|
628
|
-
| "harness is complex", "too many skills", "check structure", "harness" | `/harness-doctor` |
|
|
629
584
|
| "review this PR", "check diff", "code review" | code diff → built-in `/code-review`·`/review` · FH-asset coherence → `/hub-cc-pr-reviewer` (role split) |
|
|
630
585
|
| "keep watching X", "poll this", "check every N minutes", recurring WATCH item | built-in `/loop` (interval runner) — pair with the WATCH list, don't hand-poll |
|
|
631
|
-
| "are these in sync", "synergy", "can these integrate", "any overlap" | `/cross-ecosystem-synergy-detection` |
|
|
632
|
-
| "latest trends", "frontier", "external resources" | `/frontier-digest` |
|
|
633
586
|
| "research this deeply", "survey the literature", "comprehensive analysis", "deep research", "look this up thoroughly", "조사해줘", "리서치" (general topic research, not trend-scan) | **Deep-Research Capability Ladder** (`knowledge/shared/harness-core/deep_research_capability_ladder.md`) — route to the highest available rung: built-in `/deep-research` if present → else Claude `WebSearch`+`WebFetch` synthesis (tier-sensitive) → `/frontier-digest` only if it's AI/harness trend-scan. No-reinvention: FH routes, does not build a research engine. |
|
|
634
587
|
| "orchestrate agents", "parallel dispatch", "combine skills", "multiple agents" | `/agent-composer` |
|
|
635
|
-
| "run a simulation", "external user perspective", "internal audit", "quality check" | `/sim-conductor` |
|
|
636
588
|
| "broaden the grounded corpus", "add another version of the corpus", "ingest the full source as the grounding axiom", "여러 버전으로 통째로 가져와" (verbatim-relay corpus expansion — fail-closed grounding, no generator) | `/corpus-grounding-expander` |
|
|
637
589
|
| "broaden these personas", "what other voices fit this cast", "map these roles to a decision lens", "페르소나 후보군 더 넓혀" (persona seed → tiered judgment-mapped cast; pairs with `persona-innovator` for naming) | `/persona-roster-expander` |
|
|
638
|
-
| "first install", "FH setup", "wizard", "install-wizard" | `/install-wizard` |
|
|
639
590
|
| "connect a project", "map this project", "link to hub" | `auto_project_mapping.md` (mapping) |
|
|
640
591
|
| "harness-ify this project", "full harness setup", "프로젝트 하네스화", "promote to full harness" | `auto_project_mapping.md §6` (Full-Harness Mode) |
|
|
641
592
|
| "check install", "verify setup", "confirm install", "install-doctor" | `/install-doctor` |
|
|
642
|
-
| "where does this go", "asset location", "hub vs project", "placement" | `/asset-placement-gate` |
|
|
643
|
-
| "add to marketplace", "OK to publish", "pre-publish check" | `/marketplace-gate` |
|
|
644
|
-
| "did I leak anything", "public surface audit", "private token scan", "is my split clean", "check tracked files for private tokens" | `/public-surface-audit` |
|
|
645
593
|
| "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", **opening/updating a PR or pushing content to the public hub** (esp. company-origin) (publish intent — **proactive**, fire *before* the action; adding content to an already-public repo IS publishing that content) | **Pre-Publish Surface Gate** (see above → `/public-surface-audit` + `/marketplace-gate` Check 5 must PASS first). The commit-time half is now **hook-enforced** (mechanical confidentiality scan — see Pre-Publish Gate §Hook coverage (b)), so this proactive trigger is the salience layer over a mechanical floor. |
|
|
646
594
|
| "delete the branch", "브랜치 삭제", "브랜치 정리", "clean up branches", "force-push", "rewrite history", "지워도 돼?" (destructive intent — **proactive**, fire *before* the action) | **Destructive-Op Gate** (see above → enumerate → recover → destroy; `templates/predelete_check.sh`) |
|
|
647
|
-
| "
|
|
648
|
-
| "
|
|
595
|
+
| **"새 기능 검증해줘", "test this feature", "이 TC 확인해줘" — verifying the user's PRODUCT/feature (not FH itself)** | **Route to the mapped field harness first** (Cross-Project Skill Bus / registry) — the field harness owns product verification. The harness-verification rows in this table (`verify-bidirectional` · `prompt-regression` · `sim-conductor` · `pipeline-conductor`) verify the *harness*, and must not shadow a product-verification ask (a field project's *harness assets* — its skills/rules — still use those FH verification rows) |
|
|
596
|
+
| "지난주에 뭐 했지", "what did we do last week", "예전에 이거 한 적 있나" (recall intent) | §Searching Past Work (CATALOG-first) — read CATALOG.md, then open only candidate files |
|
|
649
597
|
| "add this MCP server", "mount this MCP", "mcp.json에 추가", "connect this tool server" (external-MCP mount intent — **proactive**, fire *before* first tool call; mount intent only — a failing/erroring mounted server is `/mcp-circuit-breaker`'s row above) | `templates/.claude/rules/mcp_tool_gating.md` (name-keyed ask/allow table — never trust server annotations or names; fill §3 at mount time) |
|
|
650
|
-
| "token budget", "how expensive", "estimate tokens", "will this cost a lot" | `/token-budget-gate` |
|
|
651
598
|
| "did my rule change break anything", "regression check", "test harness changes" | `/prompt-regression` |
|
|
652
|
-
| "SKILL.md too large", "split this skill", "skill is bloated", "skill file too long" | `/salience-splitter` |
|
|
653
599
|
| "review for the team", "CTO review", "decision-maker", "share with leadership", "approval deck" | `/apex-review` |
|
|
654
600
|
| "run full pipeline", "verify everything", "end-to-end sweep", "chain all verifications" | `/pipeline-conductor` |
|
|
655
601
|
| "help me write a prompt", "build a prompt", "improve this prompt", "prompt template" | `/meta-prompt-builder` |
|
package/README.md
CHANGED
|
@@ -72,6 +72,18 @@ claude
|
|
|
72
72
|
> ✅ Claude reads `CLAUDE.md` and asks what project to connect or what task to start.
|
|
73
73
|
> Say **"Connect a project"** → hub scans `../`, finds `.git` directories, creates `tracks/{project}/`.
|
|
74
74
|
|
|
75
|
+
**Your first 15 minutes** — what success looks like, and what to do with it:
|
|
76
|
+
|
|
77
|
+
1. You'll know setup worked when a greeting ("hi") shows the 🐿️ door menu, and "Connect a project"
|
|
78
|
+
creates `tracks/{your-project}/`.
|
|
79
|
+
2. Then grab an immediate win in the same session: say **"accelerate this project"** (ranked plan of
|
|
80
|
+
skills/plugins worth wiring, install-gated) or **"run /context-doctor"** (token-waste scan).
|
|
81
|
+
3. One honest note: FH's core payoff is **compounding** — session records, harvested learnings,
|
|
82
|
+
cross-session memory. It shows from **session 2 onward**. Day one gives you the menu, the
|
|
83
|
+
acceleration plan, and governance gates; don't judge the compounding on day one.
|
|
84
|
+
|
|
85
|
+
Unfamiliar words on the way? → [`knowledge/shared/GLOSSARY.md`](knowledge/shared/GLOSSARY.md).
|
|
86
|
+
|
|
75
87
|
**Plugin only (no clone):**
|
|
76
88
|
```bash
|
|
77
89
|
claude plugin marketplace add https://github.com/chrono-meta/forge-harness.git # once
|
|
@@ -79,16 +91,20 @@ claude plugin install -s user fh-meta@forge-harness
|
|
|
79
91
|
cd ~/projects/{your-project} && claude
|
|
80
92
|
```
|
|
81
93
|
|
|
82
|
-
> ⚠️ **Plugin-only is partial synergy.** You get the skills and agents, but **not**
|
|
83
|
-
> `CLAUDE.md` governance (active onboarding, the 4-axis gate, mode branching
|
|
84
|
-
> context (`tracks/` memory accumulation, `harvest-loop`
|
|
85
|
-
>
|
|
86
|
-
>
|
|
94
|
+
> ⚠️ **Plugin-only is partial synergy.** You get the skills and agents, but **not** the hub-side
|
|
95
|
+
> orchestration — the `CLAUDE.md` governance (active onboarding, the 4-axis gate, mode branching;
|
|
96
|
+
> automation layer) and the compounding context (`tracks/` memory accumulation, `harvest-loop`
|
|
97
|
+
> learning; methodology layer).
|
|
98
|
+
> Each skill runs the same in isolation; what's missing is the orchestration that makes them compound
|
|
99
|
+
> across sessions. Clone the hub (above) when you want the full set, not just the tools.
|
|
87
100
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
101
|
+
**Which entry path is for you?**
|
|
102
|
+
|
|
103
|
+
| You are… | Start with |
|
|
104
|
+
|---|---|
|
|
105
|
+
| Solo dev, one project, just trying it | [`templates/starter_profile.md`](templates/starter_profile.md) — one command, curated first-five skills |
|
|
106
|
+
| Multiple projects, want the compounding hub | Clone the hub (quickstart above) |
|
|
107
|
+
| CI / non-Claude runtime, gates only | `npx @chrono-meta/fh-gate` (zero-install governance gate) |
|
|
92
108
|
|
|
93
109
|
---
|
|
94
110
|
|
|
@@ -221,7 +237,7 @@ FH_BACKEND=codex npx --package @chrono-meta/fh-gate fh-goal --prompt "Implement
|
|
|
221
237
|
|
|
222
238
|
The broader FH automation layer still depends on Claude Code for sub-agents, hooks, and slash commands. The portable path is shared documents plus runtime adapters, not separate Codex and Claude forks.
|
|
223
239
|
|
|
224
|
-
**Recommended posture — Claude Code as orchestrator, others as sidecars.** FH's automation layer (auto-firing hooks, sub-agent dispatch, onboarding, memory) is Claude-Code-native, so the fullest experience runs **Claude Code as the main orchestrator with Gemini, Codex, or Antigravity (`agy`) as actively-used sidecars**. You can also run a **non-CC runtime as your main agent** — you keep the full methodology layer and M1 skills through `fh-gate`/`fh-run`, but you do **not** get the autopilot layer: hooks don't auto-fire, M2 agent-dispatch steps need the adapter (or interactive approval), and M3 skills are reference-only. This is a deliberate two-layer boundary, not a gap to be closed. Per-runtime detail: [`docs/codex-compat.md`](docs/codex-compat.md) (tier-by-tier) and [`multi_model_sidecar_strategy.md`](knowledge/shared/harness-core/multi_model_sidecar_strategy.md) (sidecar engines, including the Gemini→`agy` succession at the 2026-06-18 EOL).
|
|
240
|
+
**Recommended posture — Claude Code as orchestrator, others as sidecars.** FH's automation layer (auto-firing hooks, sub-agent dispatch, onboarding, memory) is Claude-Code-native, so the fullest experience runs **Claude Code as the main orchestrator with Gemini, Codex, or Antigravity (`agy`) as actively-used sidecars**. You can also run a **non-CC runtime as your main agent** — you keep the full methodology layer and M1 skills (M1 = runs on any runtime as written; M2 = needs agent dispatch; M3 = Claude-Code-native — the portability tiers detailed in [`docs/codex-compat.md`](docs/codex-compat.md)) through `fh-gate`/`fh-run`, but you do **not** get the autopilot layer: hooks don't auto-fire, M2 agent-dispatch steps need the adapter (or interactive approval), and M3 skills are reference-only. This is a deliberate two-layer boundary, not a gap to be closed. Per-runtime detail: [`docs/codex-compat.md`](docs/codex-compat.md) (tier-by-tier) and [`multi_model_sidecar_strategy.md`](knowledge/shared/harness-core/multi_model_sidecar_strategy.md) (sidecar engines, including the Gemini→`agy` succession at the 2026-06-18 EOL).
|
|
225
241
|
|
|
226
242
|
**Empirical result (2026-05-31)**: Applied to OpenCode's AI-generated `permission/arity.ts` (163 lines, CI green). Current gate semantics classify this as BLOCKED: 2 A-grade findings CI didn't catch (short-token overflow in allowlist, executor tools absent from arity table).
|
|
227
243
|
|
|
@@ -259,7 +275,9 @@ All four movements ship. Temper was named before it was built — deliberately (
|
|
|
259
275
|
two more signatures keep it running: `harvest-loop` (each session's lessons become permanent skills) and
|
|
260
276
|
`agent-composer` (orchestrate the dispatch). The other skills wait until you need them — full list below.
|
|
261
277
|
|
|
262
|
-
##
|
|
278
|
+
## 38 skills · 8 agents
|
|
279
|
+
|
|
280
|
+
> Count = non-deprecated skills (deprecated redirect stubs — kept only for old-name routing — excluded).
|
|
263
281
|
|
|
264
282
|
<details>
|
|
265
283
|
<summary>Full asset activation check</summary>
|
|
@@ -96,13 +96,13 @@ Identity marker: every greeting response opens with **🐿️ then an identity-r
|
|
|
96
96
|
> 🐿️ **Welcome to FH.** *forge-harness is a tool hub for rapidly setting up Claude Code projects. It supports plugin recommendations, project setup, and harness diagnostics. What would you like to work on?*
|
|
97
97
|
|
|
98
98
|
**Returning user** (branch test above) — open with the fixed 4-door menu (the doors are stable; the contents are composed live). A summary copy lives in CLAUDE.md §Active Onboarding — keep branch tests and door labels in sync when editing:
|
|
99
|
-
> 🐿️ **Welcome back to FH.** *What would you like to start? ① Map a project · ② Create a new project · ③ Accelerate a mapped project (work · Full-Harness · skills/agents/plugins) — {field candidates} · ④ Cross-project synergy*
|
|
99
|
+
> 🐿️ **Welcome back to FH.** *What would you like to start? ① Map a project · ② Create a new project · ③ Accelerate **or diagnose** a mapped project (work · Full-Harness · skills/agents/plugins · 진단) — {field candidates} · ④ Cross-project synergy*
|
|
100
100
|
>
|
|
101
101
|
> (When **FH-dev state exists** — the operator — the welcome line is **"The FH operator — good to see you."** in place of "Welcome back to FH.")
|
|
102
102
|
|
|
103
103
|
- **① Map a project** → routes to `auto_project_mapping.md`; after a successful mapping, offer the §6 Full-Harness promotion prompt
|
|
104
104
|
- **② Create a new project** → Step 3-0 (new project setup)
|
|
105
|
-
- **③ Accelerate a mapped project** → compose live from `CATALOG.md` / active tracks / the session card's **field-side** candidates — never hardcode a track name; read current state each time so the menu cannot go stale. **Acceleration levers** (offer per project state, each user-approved):
|
|
105
|
+
- **③ Accelerate or diagnose a mapped project** → compose live from `CATALOG.md` / active tracks / the session card's **field-side** candidates — never hardcode a track name; read current state each time so the menu cannot go stale. Picking ③ with a *fix/diagnose* intent ("고칠 거 있나", "점검") routes to the **Field-Harness Diagnostic** (CLAUDE.md §Field-Harness Diagnostic) rather than the install plan. **Acceleration levers** (offer per project state, each user-approved):
|
|
106
106
|
- **Full-Harness promotion** for projects still on light mapping (`auto_project_mapping.md` §6)
|
|
107
107
|
- **Skill-ification** of repeated patterns (`#skill-candidate` tag at 3+ recurrences → SKILL.md draft; FH skill gates — diet · Done When · triggers — apply to field skills too)
|
|
108
108
|
- **Sub-agent proposals** (`.claude/agents/*.md`, invocation rules in `operations.md`)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Field-Harness Diagnostic — compose → rank → HITL (detail)
|
|
2
|
+
|
|
3
|
+
> Always-loaded summary: `CLAUDE.md §Field-Harness Diagnostic`. This file is the detail home —
|
|
4
|
+
> the full lens table, dogfood examples, and guard rationale. Read when actually running the
|
|
5
|
+
> diagnostic on a mapped project.
|
|
6
|
+
|
|
7
|
+
The Load-Bearing Change Gate fires on a **specific field code change**. This diagnostic is its
|
|
8
|
+
**on-demand pull sibling**: when the operator, working in a mapped project, asks to *diagnose* or
|
|
9
|
+
*improve* the harness itself ("진단해줘", "개선해줘", "check this project"), don't hand-pick one
|
|
10
|
+
skill — **compose the checks FH already has into a single ranked diagnostic list and get per-item
|
|
11
|
+
approval.** The value is that the operator asks once and the harness surfaces *everything* worth
|
|
12
|
+
fixing, ranked, instead of the operator having to know which of a dozen skills to invoke. Every fix
|
|
13
|
+
is HITL — the diagnostic **proposes**, never auto-edits.
|
|
14
|
+
|
|
15
|
+
## Composition (no-reinvention — every row is an existing check; the diagnostic only *routes and ranks*)
|
|
16
|
+
|
|
17
|
+
| Lens | Existing check | Catches (real examples from 2026-07-08) |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| **Confidentiality / leak** | `/public-surface-audit` (incl. Step 3c ignore-verification) | a hardcoded internal API host literal in a SKILL body; a `local_*_context.md` that is **tracked** when it should be gitignored (the gitignore-mistake class) |
|
|
20
|
+
| **Split integrity** | `/phantom-quench` **Step 2.7** (bidirectional) | orphan detail sections + phantom pointers in a SKILL.md ↔ SKILL_detail.md pair |
|
|
21
|
+
| **Token / salience** | salience-split candidates (`/context-doctor` · `/salience-splitter` targets) | oversized always-loaded SKILL.md / CLAUDE.md — trim candidates |
|
|
22
|
+
| **Structure** | `/harness-doctor` (L1–L4) | orphaned/redundant/decorative units, missing Done-When, ≥70% overlap |
|
|
23
|
+
| **Verdict/gate degrade** | `scripts/degrade_direction_scan.sh` | a field verdict/gate helper that degrades toward permissive (advisory pre-screen) |
|
|
24
|
+
| **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 |
|
|
25
|
+
|
|
26
|
+
## Output
|
|
27
|
+
|
|
28
|
+
One ranked list, `M` (must-fix) / `S` (should-fix) / `R` (recommended) — same tiering as
|
|
29
|
+
harness-doctor — each item stating *lens · file:line · one-line fix*. **Then HITL**: the operator
|
|
30
|
+
approves per item (or a batch); an approved fix routes to the owning skill's normal path (and, if it
|
|
31
|
+
is itself a load-bearing field change, through the Load-Bearing Change Gate). **Nothing is
|
|
32
|
+
auto-fixed** — the diagnostic's job is the *intelligent list*, the human's job is the *go*.
|
|
33
|
+
|
|
34
|
+
## Guards
|
|
35
|
+
|
|
36
|
+
- **(a) Project-level ask only** — fires on a project-level "진단/개선" ask, not a single-file edit
|
|
37
|
+
request (those go straight to the relevant skill).
|
|
38
|
+
- **(b) Once per ask** — not a per-turn nag.
|
|
39
|
+
- **(c) Company residency** — run leak/confidentiality lenses locally, sanitize before any
|
|
40
|
+
cross-family dispatch, and *surface* company-sensitive findings (tracked company hosts,
|
|
41
|
+
git-history rewrites) for operator decision rather than auto-fixing them. Dogfood 2026-07-08: the
|
|
42
|
+
`local_pmh_context.md` tracked-company-hosts finding was surfaced, not auto-untracked — history
|
|
43
|
+
rewrite is the operator's call.
|
|
44
|
+
- **(d) Autonomy floor** — the compose/rank judgment is trusted at opus-tier+; below-floor, run the
|
|
45
|
+
individual checks and present raw rather than silently skipping a lens.
|
|
46
|
+
|
|
47
|
+
**Scale to the ask**: a quick "뭐 고칠 거 있어?" runs the cheap mechanical lenses (leak · split ·
|
|
48
|
+
token); "제대로 진단해줘" runs all six + harness-doctor depth.
|
|
@@ -17,6 +17,7 @@ becomes a gate other skills invoke, revisit the weight.
|
|
|
17
17
|
| 2 | **Non-deterministic borderline verdicts** — contested/borderline cases flip across runs (observed: haiku 4/4 flip; flagship models flip too — flipping is **not** a tier signal). A single draw is noise, not a measurement. | **reps ≥ 3 on any borderline/contested verdict.** A single run on a contested case is inadmissible. Report the flip pattern (STABLE vs FLIP), not just the modal verdict. |
|
|
18
18
|
| 3 | **Generic self-identity probe** — a probe any model passes ("are you working? → OK") proves nothing about *which* model answered. | **Use a discriminating probe** — one that two different models answer *differently*. A generic-pass probe is invalid. The probe is a **pattern, not a fixed string**: a probe that discriminates Opus 4.8 from Sonnet 4.6 today may both-pass a future model generation, so **re-validate the probe each model generation** (same staleness class `memory-hygiene` exists to catch). |
|
|
19
19
|
| 4 | **Serving-path / quantization variance** — the *same* display-name model served over two different backends (different quantization/infra) is a **different instrument** and yields materially different measurements. Observed: one GLM-5.2 model family gave effect-size delta **+0.21** when served via an internal NVFP4-quantized deployment vs **+0.08** via an OpenRouter relay — same model name, ~2.6× different effect (n=864, reps≥3). A correctly-pinned display name (item #1) is **necessary but not sufficient**. | **Pin *and record* the serving path** — backend host + quantization, not just the display name. Two runs are comparable only if the serving path matches; a name match across different infra is an implicit apples-to-oranges. When you cannot hold it fixed, **report the serving path as a measured variable**, not a constant. |
|
|
20
|
+
| 5 | **Injected-context contamination (blind-sim class)** — a subagent dispatched to evaluate a *modified* instruction file answers from the **auto-injected project context** (claudeMd/memory baked into its system prompt at spawn) instead of reading the target. Observed twice in one session (2026-07-17): a "blind sim" quoted section numbering that existed only in the pre-edit file, and a second sim cited trigger-table rows that had been **deleted** from the file it claimed to have read — tool-use count 0–1 in both. The measurement *looks* grounded (fluent, plausibly cited) but the instrument never touched the target. A prompt-line telling it to ignore injected context is **not sufficient** — both runs had one. | **Force mechanical grounding a stale answer cannot fake**: ① stage the target at a **neutral path** (tmp copy) the injection cannot cover; ② require **verbatim quotes** (or grep line-number output) from that path for every claim; ③ design the probe around a **content discriminator** — something present only in the new version, or *absent* from it (a deleted row cited = instant invalidation); ④ treat **tool-use count as a validity signal** — a sim that "read two files" with 0–1 tool calls is invalid regardless of answer quality. Re-run, don't argue with a contaminated result. |
|
|
20
21
|
|
|
21
22
|
## Why these are entangled (and why they matter beyond their own scope)
|
|
22
23
|
|
|
@@ -36,10 +37,16 @@ served over a different quantization/backend). The verified identity a measureme
|
|
|
36
37
|
sound once the serving path of each family is itself pinned, else "different family" silently smuggles
|
|
37
38
|
"different infra" ([[reference_measurement_serving_path_variance]]).
|
|
38
39
|
|
|
40
|
+
Item #5 (injected-context contamination) is item #3's sibling on the *input* side: #3 proves *who*
|
|
41
|
+
answered, #5 proves *what they actually read*. Both reduce to the same mechanical-anchor rule — never
|
|
42
|
+
accept a measurement's self-report (of identity or of grounding) when a discriminating mechanical
|
|
43
|
+
check is available. Its sharpest tool is the **deleted-content discriminator**: a probe target that no
|
|
44
|
+
longer contains X makes any answer citing X self-invalidating — certainty no prompt instruction buys.
|
|
45
|
+
|
|
39
46
|
## Done When
|
|
40
47
|
|
|
41
|
-
- The checklist enumerates all
|
|
42
|
-
*Check class: mandatory-pass (binary —
|
|
48
|
+
- The checklist enumerates all five failure modes, each with its countermeasure.
|
|
49
|
+
*Check class: mandatory-pass (binary — five items present, each with a countermeasure).*
|
|
43
50
|
- The probe item specifies a **discriminating** test and rejects generic probes.
|
|
44
51
|
*Check class: judged, pair: a probe that two different models both pass must FAIL this check; a
|
|
45
52
|
discriminating one must distinguish them.*
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Multi-Harness Evolution Loop — audit → persona → fix → devolution-check → settle
|
|
2
|
+
|
|
3
|
+
> Operator-forged pattern (2026-07-17). The operator ran this sequence once across three harnesses
|
|
4
|
+
> and named it afterward: *"오늘 내가 제시한 기법 자체가 fh·pmh를 진화시킬 수 있는 루프였을 거라고
|
|
5
|
+
> 생각해."* This doc is the harvest — the loop as a repeatable protocol, with its n=1 evidence and
|
|
6
|
+
> a promotion gate. It is a **composition of existing FH checks** (no-reinvention: every phase
|
|
7
|
+
> routes to an existing asset); what is net-new is the loop shape and its two doctrine points below.
|
|
8
|
+
|
|
9
|
+
## The loop (5 phases)
|
|
10
|
+
|
|
11
|
+
| Phase | What runs | Existing asset routed | Check class |
|
|
12
|
+
|---|---|---|---|
|
|
13
|
+
| **1. Structure audit** | harness-doctor lens per harness **+ a cluster lens across them** (registry freshness · track sync · cross-refs · skill-bus reachability · gate propagation · orchestration artifacts) | `/harness-doctor` · LOCAL_SKILL_REGISTRY · Field-Harness gates | mechanical + judged |
|
|
14
|
+
| **2. Persona usability audit** | beginner (cold-read, minutes-to-first-value) · main-player (daily intent-utterance test: do natural phrases reach the right skill?) · expert (frontier bar, external citations mandatory) — per harness | fh-meta persona agents (beginner / main-player / expert) | judged, adversarially paired by tier diversity |
|
|
15
|
+
| **3. Fix application** | fixer agents per repo, **verify-before-act on every claimed defect** (a false finding gets skipped with evidence, not applied); each repo's own gates honored, HITL-deferred items go to a ranked backlog instead of being forced | fixer dispatch + per-repo 4-axis / pre-commit gates | mechanical (grep-verify per fix) |
|
|
16
|
+
| **4. Devolution check** | adversarial regression audit of the fixes themselves — *"is anything now WORSE than before?"* — cross-family (codex) on public repos, same-family with an honest residency note on company repos; **iterate fix→re-verify until CONVERGED** | `auto-decorrelation` posture · codex headless · target-tier blind sim | cross-family + mechanical anchor |
|
|
17
|
+
| **5. Settle** | canonical wiki node + INDEX pointer (machine side) **+ operator-readable report pushed to where the operator actually reads** (Obsidian/iCloud mirror) + ranked M/S/R backlog of operator-decision items | wiki 규약 · sync-wiki-to-icloud | mandatory-pass (artifacts exist) |
|
|
18
|
+
|
|
19
|
+
## Two doctrine points (the net-new judgment content)
|
|
20
|
+
|
|
21
|
+
1. **Usability is a first-class diagnostic axis, not polish.** The loop's n=1 run found the same
|
|
22
|
+
root defect in all three harnesses — *the routing surface was narrower than the user's real
|
|
23
|
+
daily utterances* — and structure-only audits (phase 1 alone) had missed it for months. The
|
|
24
|
+
operator's framing is the axis: "성능이 좋아도 결국 사용하기 쉽고 직관적이어야" — a harness whose
|
|
25
|
+
speech doesn't reach is failing regardless of internal rigor. Phase 2 is therefore not optional
|
|
26
|
+
decoration on phase 1; it is the half of the diagnosis that structure scans cannot see.
|
|
27
|
+
2. **Improvement without a devolution check is half a loop.** Phase 4 exists because phase 3's
|
|
28
|
+
fixes are themselves AI-authored changes — the same optimistic-author blind spot the
|
|
29
|
+
cross-family gate guards. In the n=1 run, phase 4 caught a real regression that phases 1–3
|
|
30
|
+
produced (a README layer mis-attribution that made vague wording *wrong*), plus two S-tier
|
|
31
|
+
follow-ups in the field fixes. "다 하고 나서 기존보다 어떻게 개선되었는지, 오히려 퇴화한 부분은
|
|
32
|
+
없는지 점검" — the loop is not done at "fixes applied"; it is done at CONVERGED.
|
|
33
|
+
|
|
34
|
+
## Guards (inherited, restated for the loop)
|
|
35
|
+
|
|
36
|
+
- **Residency**: company-token repos never go to an external model family; their devolution check
|
|
37
|
+
runs same-family with the limitation recorded, not hidden.
|
|
38
|
+
- **Verify-before-act**: every audit finding is re-verified against disk before a fixer applies it
|
|
39
|
+
(n=1 run: one "typo" finding was in-house jargon — correctly skipped with source evidence).
|
|
40
|
+
- **HITL boundary**: judgment items (canonical-count decisions, dual-source direction, gate
|
|
41
|
+
loosening, architecture surgery) are never auto-applied — they land in the ranked backlog.
|
|
42
|
+
- **Autonomy floor**: compose/rank judgments at opus-tier+; the loop was designed to run
|
|
43
|
+
autonomously on an explicit operator go ("자체적으로 돌아줘"), not as a standing daemon.
|
|
44
|
+
|
|
45
|
+
## n=1 evidence (2026-07-17)
|
|
46
|
+
|
|
47
|
+
Three harnesses (FH hub + two mapped field harnesses), 21 agents total (12 audit · 2 fixer ·
|
|
48
|
+
7 verification). Outcomes: hub always-loaded footprint over-threshold closed (TARGET-rooted
|
|
49
|
+
95.8k → 79.9k chars); three repos' routing surfaces extended to cover the measured daily
|
|
50
|
+
utterances; ~10 phantom references replaced with disk-verified targets; registry brought to
|
|
51
|
+
parity (mirror-dedup for the fork, lockline for the irreversible-execution skill); one real
|
|
52
|
+
regression caught and fixed by the cross-family pass; final verdicts CONVERGED across all three
|
|
53
|
+
repos. Ranked residual backlog delivered for operator decisions.
|
|
54
|
+
|
|
55
|
+
## Promotion gate
|
|
56
|
+
|
|
57
|
+
This doc is the pattern's home at **n=1**. Per evidence-threshold build discipline, do NOT build a
|
|
58
|
+
skill or runner from it yet. Promotion path: a second full run (n=2, ideally on a different harness
|
|
59
|
+
set or triggered from a field cwd) → then decide skill-ification (`/harness-evolution-loop`
|
|
60
|
+
orchestrator skill, chamber-screened) vs staying a documented protocol. Cadence candidate
|
|
61
|
+
(quarterly, alongside the harness-doctor 30-day cadence) is also an n≥2 decision.
|
|
62
|
+
|
|
63
|
+
Related: `harness_6axis_framework.md` (axes 5–6) · `field_harness_diagnostic.md` (single-project
|
|
64
|
+
pull sibling) · `hub_compounding_loop.md` (the learning-return this loop feeds) ·
|
|
65
|
+
`measurement-integrity-checklist.md` (phase-4 instrument hygiene — the n=1 run also invalidated a
|
|
66
|
+
contaminated sim and re-ran it with a verbatim-quote protocol).
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Onboarding / Acceleration Autopilot — discover → compose → rank → install-HITL (detail)
|
|
2
|
+
|
|
3
|
+
> Always-loaded summary: `CLAUDE.md §Onboarding / Acceleration Autopilot`. This file is the detail
|
|
4
|
+
> home — the full Phase-0 branch logic (including the chamber / simulate-first honesty boundary),
|
|
5
|
+
> provenance, and guard evidence. Read when executing the autopilot on an onboarding or
|
|
6
|
+
> acceleration door.
|
|
7
|
+
|
|
8
|
+
The **install-direction twin of the Field-Harness Diagnostic**: same `compose → rank → HITL`
|
|
9
|
+
engine, but it decides *what to install/wire* instead of *what to fix*. When the operator enters an
|
|
10
|
+
onboarding / acceleration door (returning-menu ①②③: "새 프로젝트", "하네스 작성/작성해줘",
|
|
11
|
+
"이 프로젝트 가속화", "harness-ify", "accelerate this project"), don't hand-run one skill —
|
|
12
|
+
**auto-discover the local state, let the innovator center a recommend cascade, produce a ranked
|
|
13
|
+
install plan, and gate every install.**
|
|
14
|
+
|
|
15
|
+
## Flow
|
|
16
|
+
|
|
17
|
+
1. **Phase 0 — State Audit + branch (auto-discovery)**: read the target's existing
|
|
18
|
+
`.claude/agents|skills`, `CLAUDE.md`, mapped `tracks/`, **locally-connected sibling repos** (the
|
|
19
|
+
env-delta SessionStart hook already emits "N unmapped sibling repos"), and the
|
|
20
|
+
`LOCAL_SKILL_REGISTRY` + stack/language. Then **branch**: *new-build* (no prior harness) ·
|
|
21
|
+
*extend-existing* (harness present → found→extend, never fork) · *maintain* (mature harness →
|
|
22
|
+
route to the Field-Harness Diagnostic instead).
|
|
23
|
+
|
|
24
|
+
**New-build sub-branch — simulate-first (incubator doctrine)**: judge the project's character
|
|
25
|
+
before building. Clear · small · low failure-cost → build immediately (current flow). Uncertain ·
|
|
26
|
+
exploratory · failure-expensive → **flag simulate-first as an option**: doctrine says such a
|
|
27
|
+
project *should* be chamber-simulated before emit. The chamber **run orchestration is wired**
|
|
28
|
+
(`scripts/chamber_run.sh` — an intent-driven, resumable 7-step runner: budget-entry cap,
|
|
29
|
+
≥3-blind-persona gate, Emission Gate, G4 ledger auto-append; run #3 exercised it 2026-07-14).
|
|
30
|
+
But a **live one-command autonomous simulate→EMIT of a field harness is NOT yet a capability**:
|
|
31
|
+
step-4 persona dispatch is human/Claude-driven (bash cannot spawn the isolated Agents — the
|
|
32
|
+
honest muscle boundary), the EMIT terminus is HITL, and **EMIT has never fired — the ledger's
|
|
33
|
+
real runs are honest KILLs** (the chamber to date *screens*, it has not *birthed*). So today this
|
|
34
|
+
branch = a one-line HITL recommendation to run the chamber (`chamber_run.sh`), then fall back to
|
|
35
|
+
Full-Harness Mode §6 (`auto_project_mapping.md`) for the actual onboarding; the runner gates and
|
|
36
|
+
records a human-driven run — it must **not** be presented as a push-button autonomous emit. The
|
|
37
|
+
same branch applies to a **new capability of an existing harness** — the
|
|
38
|
+
incubate-in-chamber-then-transplant flow is likewise run-orchestrated but not autonomously
|
|
39
|
+
emitting today. Rationale + economics:
|
|
40
|
+
`knowledge/shared/harness-core/harness_incubator_doctrine.md §3`.
|
|
41
|
+
|
|
42
|
+
This audit-and-branch pre-step is imported from the revfactory/harness Phase-0 State Audit
|
|
43
|
+
(sister-audit 2026-07-07) — it tightens FH's found→extend reflex and is the "이미 로컬에 연결돼
|
|
44
|
+
있으면 자동 탐색" mechanism.
|
|
45
|
+
|
|
46
|
+
2. **Innovator-centered recommend**: `persona-innovator` centers the cascade (Mode I on
|
|
47
|
+
acceleration / Mode F on FH-dev), composing `plugin-recommender` (Tier 0 platform → Tier 1
|
|
48
|
+
official → Tier 2/3) + `cross-ecosystem-synergy-detection` (locally-connected skills worth
|
|
49
|
+
wiring) + inferred technical level (conversation-cue read, also imported from revfactory) to
|
|
50
|
+
shape *what* and *how much*.
|
|
51
|
+
|
|
52
|
+
3. **Ranked install plan**: one list, `M`/`S`/`R`, each item = *what · why · source (Tier 0
|
|
53
|
+
built-in / Tier 1 official / local sibling / FH scaffold) · exact install command*.
|
|
54
|
+
No-reinvention: an official/built-in that covers the need ranks above a net-new scaffold.
|
|
55
|
+
|
|
56
|
+
4. **Install — HITL, non-overwriting**: per-item approval; **never clobber an existing `.claude/`**
|
|
57
|
+
(propose merge/skip if present — this is FH's edge over revfactory's post-plan auto-write and
|
|
58
|
+
harness-100's raw `cp`). Any generated/installed FH asset runs the **4-axis gate**; a field
|
|
59
|
+
scaffold runs `asset-placement-gate` + `steel-quench`. **"끝까지 해줘 / 자율로 완주" →
|
|
60
|
+
full-autonomy**: run the whole plan under the `/goal-quench` budget+quality gate (token cost
|
|
61
|
+
accepted by the operator), still non-overwriting and still gated per asset — autonomy removes
|
|
62
|
+
the per-item *prompt*, never the *gate*.
|
|
63
|
+
|
|
64
|
+
## Guards
|
|
65
|
+
|
|
66
|
+
- **(a) Non-overwriting is inviolable** — the one thing both revfactory surfaces get wrong; FH
|
|
67
|
+
proposes merge, never clobbers.
|
|
68
|
+
- **(b) No-reinvention** — Tier 0/1 first, scaffold only what adds governance.
|
|
69
|
+
- **(c) Company residency** — discovery of a company sibling repo surfaces it, does not
|
|
70
|
+
auto-map/leak it; promoted to a machine field (`residency` on the skill registry,
|
|
71
|
+
`fh_detail_protocols.md §1-c`) so any derived recommendation naming a `company` /
|
|
72
|
+
`operator-private` entry lands only in gitignored `tracks/_meta/` or the private companion store,
|
|
73
|
+
never a tracked public file (chamber run #7, 2026-07-14 — the guard was prose-only and the field
|
|
74
|
+
didn't exist).
|
|
75
|
+
- **(d) Autonomy floor** — the discover/rank judgment is trusted at opus-tier+; below-floor,
|
|
76
|
+
present the raw recommend and ask.
|
|
77
|
+
- **(e) Once per door-entry** — not a per-turn nag.
|
|
78
|
+
|
|
79
|
+
This is the door ③ (accelerate; a *diagnose* intent on the same door routes to the Field-Harness
|
|
80
|
+
Diagnostic instead) engine and the new-project/harness-write path made autonomous —
|
|
81
|
+
the operator asks once and the harness discovers, ranks, and (on request) installs everything worth
|
|
82
|
+
wiring.
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fh-meta",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.61",
|
|
4
4
|
"engines": {
|
|
5
5
|
"claudeCode": ">=1.0.0"
|
|
6
6
|
},
|
|
7
|
-
"description": "Hub meta-engineering toolkit —
|
|
7
|
+
"description": "Hub meta-engineering toolkit — 34 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
8
|
"author": {
|
|
9
9
|
"name": "chrono-meta",
|
|
10
10
|
"email": "chrono-meta@users.noreply.github.com"
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fh
|
|
3
|
+
description: Renders the FH hub map on demand — the door menu, a starter set of skills, and the most-used trigger phrases — without requiring a greeting. State-aware; composes live candidates from the session card and tracks.
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /fh — hub map on demand
|
|
8
|
+
|
|
9
|
+
The greeting flow (CLAUDE.md §Active Onboarding) fires on greetings, start intents, new-task and
|
|
10
|
+
discovery utterances — but it is salience-dependent, once-per-session, and skipped entirely when the
|
|
11
|
+
user opens with a task. This command is the **explicit, deterministic** route to the same map: slash
|
|
12
|
+
autocomplete discoverability, invocable mid-session any number of times, no reliance on the model
|
|
13
|
+
catching a phrase. Same map, different guarantee — /fh does not claim a gap in *which utterances*
|
|
14
|
+
fire onboarding; it closes the *how-reliably-and-when* gap.
|
|
15
|
+
|
|
16
|
+
## Execution Steps
|
|
17
|
+
|
|
18
|
+
### Step 1. State detection (reuse, don't re-derive)
|
|
19
|
+
|
|
20
|
+
Run the same mechanical branch test as §Active Onboarding: session files / mapped project tracks
|
|
21
|
+
under `tracks/` (underscore dirs don't count) → new / returning; FH-dev state (session card ·
|
|
22
|
+
open `fh_signal_*` · `CLAUDE.local.md`) → operator. Do not invent a separate test — the canonical
|
|
23
|
+
branch rules live in CLAUDE.md §Active Onboarding and `fh_detail_protocols.md` Step 2.
|
|
24
|
+
|
|
25
|
+
### Step 2. Render the door menu
|
|
26
|
+
|
|
27
|
+
Output the door skeleton for the detected branch **verbatim from the canonical source** (CLAUDE.md
|
|
28
|
+
§Active Onboarding — including the 🐿️ same-line welcome). Compose door ③ / 🔧 candidates live from
|
|
29
|
+
the session card and CATALOG, exactly as the greeting path would.
|
|
30
|
+
|
|
31
|
+
### Step 3. Render the quick map (below the menu)
|
|
32
|
+
|
|
33
|
+
- **Starter set**: the curated first-five from `templates/starter_profile.md` (read it — do not
|
|
34
|
+
hardcode a list that can go stale), one line each.
|
|
35
|
+
- **Most-used phrases**: 5-8 rows from CHEATSHEET §4 (universal phrases + the full-autonomy
|
|
36
|
+
contract line).
|
|
37
|
+
- If cwd is a mapped field project: one line noting "진단해줘" routes to the Field-Harness
|
|
38
|
+
Diagnostic here.
|
|
39
|
+
|
|
40
|
+
### Step 4. Hand off
|
|
41
|
+
|
|
42
|
+
End with "pick a door, say a phrase, or just state your task". Do not auto-run anything — this
|
|
43
|
+
command is a map, not a dispatcher.
|
|
44
|
+
|
|
45
|
+
## Done When
|
|
46
|
+
|
|
47
|
+
| Condition | Check class |
|
|
48
|
+
|---|---|
|
|
49
|
+
| Door menu rendered for the correct state branch (new/returning/operator) | mandatory-pass (output exists; branch test is the mechanical §Active Onboarding rule) |
|
|
50
|
+
| Menu text matches the canonical skeleton (no drifted fork of the door labels) | measured — at render time, diff the rendered labels against CLAUDE.md §Active Onboarding (the render-vs-source diff IS the check; the canonical-side 4-axis guard only protects the source, not this skill's rendering) |
|
|
51
|
+
| Starter set and phrases sourced from their canonical files, not hardcoded | judged — paired with `/phantom-quench` back-trace (each rendered item must exist in its source file) |
|
|
52
|
+
|
|
53
|
+
## Trigger Phrases
|
|
54
|
+
|
|
55
|
+
- `/fh` (primary — explicit slash command)
|
|
56
|
+
- "show me the menu" · "메뉴 보여줘"
|
|
57
|
+
- "what can this hub do" · "여기서 뭘 할 수 있어"
|
|
58
|
+
- "지도 보여줘" · "skill map"
|
|
59
|
+
|
|
60
|
+
Natural-language triggers deliberately overlap the §Active Onboarding discovery triggers — both
|
|
61
|
+
routes render the same map from the same canonical source, so whichever route catches first, the
|
|
62
|
+
outcome is identical (collision-safe by construction, not by luck). Baseline Step 0.5 trigger-probe:
|
|
63
|
+
due at the next harness-doctor run (this skill is a routing surface — obligation per CLAUDE.md
|
|
64
|
+
§New Skill Creation Pre-Commit Gate).
|
|
65
|
+
|
|
66
|
+
## Constraints
|
|
67
|
+
|
|
68
|
+
- Never duplicates the menu skeleton into this file — CLAUDE.md is the single source; this skill
|
|
69
|
+
only *renders* it. (The 2026-07-17 audit found label-drift risk across duplicated menu copies;
|
|
70
|
+
this skill must not add a third copy.)
|
|
71
|
+
- Read-only: no state writes, no dispatch.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: salience-splitter
|
|
3
|
-
description: Splits an over-loaded always-loaded context asset — a SKILL.md, CLAUDE.md, or memory index — into a lean always-loaded layer + an on-demand layer, using a governance-semantic criterion (not length, but when the content is needed), connected by imperative pointers. Based on paper §9.5 Protocol-Priority Split pattern. Diagnoses, classifies, splits, and verifies in one pass. Renamed from skill-splitter (old name still routes here).
|
|
3
|
+
description: Splits an over-loaded always-loaded context asset — a SKILL.md, CLAUDE.md, or memory index — into a lean always-loaded layer + an on-demand layer, using a governance-semantic criterion (not length, but when the content is needed), connected by imperative pointers. Based on paper §9.5 Protocol-Priority Split pattern. Diagnoses, classifies, splits, and verifies in one pass. Renamed from skill-splitter (old name still routes here). Triggers: "SKILL.md too large", "split this skill", "skill is bloated", "skill file too long", "CLAUDE.md 너무 커".
|
|
4
4
|
user-invocable: true
|
|
5
5
|
allowed-tools: ["Read", "Write", "Edit", "Bash", "Grep", "Glob"]
|
|
6
6
|
model: sonnet
|
|
@@ -142,12 +142,12 @@ Refinement challenge ≠ fundamental negation. When a **compatibility enhancemen
|
|
|
142
142
|
|
|
143
143
|
Skip this step if no compatibility enhancement found (no token-filler).
|
|
144
144
|
|
|
145
|
-
### Step 6. Update Trigger Count + Skill
|
|
145
|
+
### Step 6. Update Trigger Count + Skill Update Review
|
|
146
146
|
|
|
147
147
|
Update trigger count in `memory feedback_bidirectional_self_validation.md`:
|
|
148
148
|
|
|
149
149
|
- 5+ accumulated = Skill promotion review (already fulfilled by creating this skill ✅)
|
|
150
|
-
- 8+ accumulated =
|
|
150
|
+
- 8+ accumulated = skill update review (rule refinement + round table compression + update this skill)
|
|
151
151
|
- When user names a refinement challenge pattern (bidirectional evolution dimension documentation)
|
|
152
152
|
- When this harness AI identifies its own baseline grep omission pattern (add new initial recommendation consistency guard)
|
|
153
153
|
|
|
@@ -203,7 +203,7 @@ Speak up **before** entering implementation if any of these apply:
|
|
|
203
203
|
|---|---|
|
|
204
204
|
| Step 4.5 change `diff` review | **Required** |
|
|
205
205
|
| Step 4 major decision cascading (CATALOG · external asset impact) | **Required** |
|
|
206
|
-
| Step 6
|
|
206
|
+
| Step 6 skill update review | **Required** |
|
|
207
207
|
|
|
208
208
|
## Constraints
|
|
209
209
|
|
|
@@ -11,7 +11,7 @@ description: forge-harness path and skill list pointer — local only, do not co
|
|
|
11
11
|
**forge-harness path**: `~/path/to/forge-harness` (replace with your actual install path)
|
|
12
12
|
**Session records**: `{FH_ROOT}/tracks/_meta/`
|
|
13
13
|
|
|
14
|
-
**Available skills (fh-meta,
|
|
14
|
+
**Available skills (fh-meta, 34)**: agent-composer · fh · apex-review · asset-placement-gate · auto-decorrelation · context-doctor · contention-layer · corpus-grounding-expander · cross-ecosystem-synergy-detection · deep-clarify · edit-manifest · field-harvest · frontier-digest · goal-quench · harness-doctor · harvest-loop · hub-cc-pr-reviewer · install-doctor · install-wizard · marketplace-gate · memory-hygiene · meta-prompt-builder · persona-roster-expander · phantom-quench · pipeline-conductor · plugin-recommender · prompt-regression · public-surface-audit · return-path-gate · sim-conductor · salience-splitter · steel-quench · verify-bidirectional · video-ingest
|
|
15
15
|
|
|
16
16
|
**Available skills (fh-commons)**: convergence-loop · deliberation · mcp-circuit-breaker · token-budget-gate
|
|
17
17
|
|