@chrono-meta/fh-gate 1.4.65 → 1.4.67
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 +2 -2
- package/AGENTS.md +35 -2
- package/CATALOG.md +12 -0
- package/CLAUDE.md +24 -0
- package/knowledge/shared/harness-core/intent_marshaling_general_work.md +75 -0
- package/knowledge/shared/harness-core/self_evolution_routine.md +8 -0
- package/package.json +1 -1
- package/plugins/fh-commons/.claude-plugin/plugin.json +1 -1
- package/plugins/fh-meta/.claude-plugin/plugin.json +1 -1
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "fh-meta",
|
|
14
|
-
"version": "1.4.
|
|
14
|
+
"version": "1.4.67",
|
|
15
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.67",
|
|
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/AGENTS.md
CHANGED
|
@@ -104,17 +104,22 @@ For complex multi-step tasks, run `/agent-composer` first to plan which agents t
|
|
|
104
104
|
|
|
105
105
|
The methodology layer (`tracks/`, `knowledge/`, `SKILL.md` docs) is Codex-compatible beta. Any AI model can follow skill workflows by reading SKILL.md files directly; the automation layer (hooks, plugin-channel agents under `plugins/*/agents/`, `/model`) is Claude Code-native and requires manual adaptation. FH's own agents are auto-loaded via the plugin channel when the plugin is enabled — `.claude/agents/` is the field-project override slot, not where FH ships its agents. Non-Claude runtimes use this `AGENTS.md`, `plugins/*/agents/*.md`, and `scripts/fh-run.sh` to apply the same methodology via adapter.
|
|
106
106
|
|
|
107
|
-
### Non-Claude runtimes:
|
|
107
|
+
### Non-Claude runtimes: four things CLAUDE.md holds that you will not auto-load
|
|
108
108
|
|
|
109
109
|
`.claude/rules/*.md` with `paths:` frontmatter is a **Claude Code platform feature** — those files are
|
|
110
110
|
auto-loaded into a Claude Code session when it reads a matching file, and **your runtime has no equivalent**.
|
|
111
|
-
So
|
|
111
|
+
So four things that govern behavior are not going to reach you on their own. Read them explicitly:
|
|
112
112
|
|
|
113
113
|
1. **FH asset changes run a mandatory 4-axis verification chain before the session's first commit.**
|
|
114
114
|
Detail (axis definitions · marker required fields · lightweight exception · substantive carve-out):
|
|
115
115
|
`.claude/rules/fh_4axis_gate.md` — **open it directly**; nothing will load it for you. The commit is
|
|
116
116
|
hard-blocked by `templates/.git-hooks/pre-commit` regardless of runtime, so skipping the read does not
|
|
117
117
|
skip the gate — it just means you meet the block without knowing what it wants.
|
|
118
|
+
⚠️ If you run `templates/regression_guard.sh` (Axis 1) yourself, **`exit 0` means PASS *or* SKIP** —
|
|
119
|
+
SKIP being "no staged file matched the gate's pathspec", which is *not checked*, not *checked and
|
|
120
|
+
clean*. Read stdout for `REGRESSION_GUARD_RESULT=skip` to tell them apart. Judging by exit code
|
|
121
|
+
alone lets an unexamined change report as a pass (measured 2026-07-22: that is exactly what the
|
|
122
|
+
commit hook did until it was fixed).
|
|
118
123
|
2. **Company residency is absolute** (CLAUDE.md §Field-Harness Diagnostic): raw company source, secrets,
|
|
119
124
|
hostnames, internal repo/asset names, stack traces, and unredacted findings **never leave the local
|
|
120
125
|
machine** — not to an external *or same-family* cloud model, not through a browser/API tool, not into a
|
|
@@ -132,6 +137,34 @@ So three things that govern behavior are not going to reach you on their own. Re
|
|
|
132
137
|
for you. Your runtime *can* run these lenses: substitute `Agent(subagent_type=...)` per §M2 above
|
|
133
138
|
(`fh-run`, or `codex exec` reading the agent spec). The lens returns evidence, never the verdict.
|
|
134
139
|
|
|
140
|
+
4. **General work is in scope here, and the mechanism for serving it is to marshal installed
|
|
141
|
+
capability.** CLAUDE.md §Intent Marshaling makes this the runtime default. It settles a *category*
|
|
142
|
+
question only — whether non-harness work belongs in this environment at all. Every ordinary check
|
|
143
|
+
about a specific request (is it safe, sensible, well-formed, worth doing) is yours and is unaffected.
|
|
144
|
+
|
|
145
|
+
The category answer is yes, for a concrete reason: the skill registry, the mapped field harnesses,
|
|
146
|
+
and the memory store exist **only** in this environment. So when the operator states a work intent in
|
|
147
|
+
plain language (write this doc, build this wiki page, organize this material — **any work-shaped ask,
|
|
148
|
+
not only harness building**), the scan below is what tells you whether capability for it is actually
|
|
149
|
+
present. An empty scan, reported with the scan cited, is a correct answer — see the third bullet.
|
|
150
|
+
|
|
151
|
+
Three constraints carry over unchanged to your runtime:
|
|
152
|
+
- **Enumerate rather than recall.** List the available skills, `LOCAL_SKILL_REGISTRY`, and the mapped
|
|
153
|
+
project assets. Recall under-reports what is installed, which is why the scan is a listing step.
|
|
154
|
+
- **Marshaling never upgrades a trust tier.** Run-first autonomy covers **FH-native capability whose
|
|
155
|
+
steps are per-action reversible**. A non-FH sibling capability stays at its registry `ask-tier`
|
|
156
|
+
(propose only), and an outward-mutating action (send · post · deploy · delete) keeps its own gate.
|
|
157
|
+
- **A capability gap is declared by citing the scan result**, not as a bare "nothing fits" — then
|
|
158
|
+
route at request scale (internal scan → external search → in-session synthesis). *Persist* routes
|
|
159
|
+
to the New-Skill gate; *install* routes to plugin-recommender's HITL. No new gates.
|
|
160
|
+
|
|
161
|
+
**This item exists because the triggering utterance is ordinary work language that names no skill and
|
|
162
|
+
no agent** — like item 3, no automatic trigger covers it; read it explicitly.
|
|
163
|
+
|
|
164
|
+
> **Detail**: See `knowledge/shared/harness-core/intent_marshaling_general_work.md` — the 5-step loop,
|
|
165
|
+
> the gate-routing table, the Sonnet-floor boundaries, and the origin defect — **open it directly**
|
|
166
|
+
> before applying the ladder or when a gap appears.
|
|
167
|
+
|
|
135
168
|
The irreversible-surface gates (Pre-Publish · Destructive-Op) likewise live in CLAUDE.md and fire on
|
|
136
169
|
**intent**, not on a file — read them before any publish, delete, or history-rewrite. `pre-push` enforces
|
|
137
170
|
the git-side destructive surface mechanically for every runtime.
|
package/CATALOG.md
CHANGED
|
@@ -8,6 +8,18 @@ AI reads this file first when searching past work. Open individual files for det
|
|
|
8
8
|
|
|
9
9
|
<!-- Add entries in reverse date order (newest at top) -->
|
|
10
10
|
|
|
11
|
+
### 2026-07-22 (2) | forge-harness · qasp · pmh | #weekly-audit, #entrypoint-drift, #gate-fail-open, #union-silent-drop, #instrument-attribution, #npm-release
|
|
12
|
+
**File:** tracks/_audit/weekly_audit_2026-07-22.md · AGENTS.md §Non-Claude runtimes item 4 · templates/regression_guard.sh · (qasp) src/api/ensemble.py · (pmh) AGENTS.md §Orchestration Gates
|
|
13
|
+
Weekly audit (07-15~07-22) plus the three cross-repo fixes it surfaced. **Audit's largest finding was a card claim that was false**: the session card's red-flag "frontier-digest job not running — zero logs, zero output" did not survive a hand check (14/14 launchd fires, 12/14 outputs, that day's digest present at 09:03). The real defect is a 14.3% output-miss whose two instances both die on `Connection closed mid-response`, and whose 07-18 retry+watchdog fix engaged **neither mechanism** on its first failure day — recorded as unfixed, root cause not isolated. Card-vs-reality drift reached the N=3 recurrence threshold, so the prescription is a mechanical probe rather than another habit rule. **Entry-point drift** closed in both harnesses (FH PR #163, field meta-harness PR #25): a runtime-default governor rule had landed only in the Claude-native entry point, invisible to every other runtime. The target-tier blind sim rejected the first port — the *wording*, carried over verbatim, read as coercive to a cold third-party reader and was reproduced 3/3, once escalating to "I would flag this to the repo owner". Rewritten as a scope statement; converged 2/2. **Gate fail-open** (PR #165): Axis 1's pathspec omitted three asset classes the canonical rule declares covered, and the resulting not-checked state rendered as a green PASS; adversarial review then caught the fix's own over-blocking (a one-word prose edit produced a hard block) before it could train `--no-verify`. **Field harness UNION** shipped a silent-drop path: two divergent fence-unwrap implementations meant a response accepted by the single backend was discarded whole by the ensemble — in a component whose entire justification is not discarding findings. Published `@chrono-meta/fh-gate@1.4.66`.
|
|
14
|
+
- Decision: port constraints across entry points, never wording — the audience's trust relationship changes with the location. Reversible surfaces report SKIP distinctly from PASS rather than switching to a blocking exit code. Company-derived doc conflicts resolve toward the operator-approved integration branch, never toward a feature branch's older state.
|
|
15
|
+
- Open: the failed single-vs-UNION detection ratio stays UNCALIBRATED — a demonstrated drop path and the "anchor absorbs the gain" hypothesis produce the same number, and no counter existed to separate them; re-measure with the new instrumentation. Skip-vs-pass distinction is wired into the commit hook only; three prose-level consumers still judge by exit code. Card-drift probe and the retry/watchdog reproduction harness remain unbuilt.
|
|
16
|
+
|
|
17
|
+
### 2026-07-22 | forge-harness | #intent-marshaling, #doctrine, #purpose-organization, #leader-briefing, #conference, #pre-registration
|
|
18
|
+
**File:** knowledge/shared/harness-core/intent_marshaling_general_work.md · CLAUDE.md §Intent Marshaling · (companion store) leader/TF briefing pair · handoff §5-§7
|
|
19
|
+
Two operator insights forged into doctrine. **Intent Marshaling** (PR #161, mirrored to the field meta-harness as its PR #23): the runtime twin of intent-machinization — a work-shaped request in plain language triggers a mechanical capability scan (trust tiers carried in scan output), a one-line compose proposal, then run-first execution; gap declarable only by citing the scan; no new gates (install/persist/outward actions route to existing ones). Verified by Sonnet known-pair sim (2/2 separated) + codex cross-family R1 4/4-confirmed findings (2 HIGH: non-FH ask-tier auto-run hole, per-action reversibility fail-open) fixed to R2 CONVERGED. **Leader-judgment briefing pair** (companion store, operator-approved): QA-team edition (4 judgment axes, measured/pending boundary, act-by-act glossary from operator definitions) + org-TF edition (domain-agnostic layers as protagonist, field harness as the n=1 evidence case, method-stack 8/8 as the domain-agnostic quantitative anchor) — both persona-audited (SHIP_AFTER_M, all findings applied; the audits caught the docs' own optimism twice, which became a self-evidencing section). Conference talk submitted (title A) with **metric pre-registration** pinned in the handoff (calibration / field / org metric sets + before-baseline warning + freeze-timeline insurance).
|
|
20
|
+
- Decision: marshaling autonomy covers FH-native per-action-reversible work only; non-FH registry hits keep ask-tier; specific initiative rows always outrank the fallback row. Briefing scope split two-audience (QA team vs org TF) rather than one doc.
|
|
21
|
+
- Open: marshaling operational track record starts at zero (manifest prediction pending); AGENTS.md port of the marshaling anchor = deferred drift candidate; handoff-reachability defect (untracked file referenced for remote verification) recorded as signal S-1 with a mechanical-check prescription.
|
|
22
|
+
|
|
11
23
|
> **Backfill note (2026-07-15):** the 07-12 / 07-13 / 07-14 entries below were reconstructed from git
|
|
12
24
|
> history + the session card's completion log during the 2026-07-15 harness-doctor run, which found that
|
|
13
25
|
> CATALOG had stopped at 07-10 while 30 FH-asset commits landed — i.e. 5 days of work were invisible to
|
package/CLAUDE.md
CHANGED
|
@@ -524,6 +524,7 @@ Proposal format: `"I see [X]. Want me to run /[skill] to [one-line description]?
|
|
|
524
524
|
| "help me write a prompt", "build a prompt", "improve this prompt", "prompt template" | `/meta-prompt-builder` |
|
|
525
525
|
| "/goal", "run this autonomously", "big multi-step task", "orchestrate this goal", or **any heavy autonomous/multi-agent run** (proactive — propose *before* running; it is expensive, so the proposal is mandatory, not the auto-run) | `/goal-quench` (budget gate + quality gate) |
|
|
526
526
|
| "I don't know what to build", "how should I approach this", "organize this for me", "clarify this", "정리해줘" (ambiguous request before dispatch) | `/deep-clarify` |
|
|
527
|
+
| **work-shaped request outside the harness domain** — "이 문서 만들어줘", "위키 페이지 써줘", "이 자료 표로 만들어줘", any general work ask no other row or skill catches (**fallback default** — a more specific row above/below always wins: 리서치→deep-research · ambiguous "정리해줘"→deep-clarify · heavy fleet→goal-quench) | **Intent-Marshaling loop** (§Intent Marshaling — mechanical capability scan → one-line compose proposal → run; gap → capability ladder) |
|
|
527
528
|
| "memory feels bloated", "clean up memory", "memory too large", "memory hygiene" | `/memory-hygiene` |
|
|
528
529
|
| "ready to PR", "about to push", "merge this", "PR 올려줘", FH asset changed in session | 4-axis auto-gate (see above — runs automatically, no proposal needed) |
|
|
529
530
|
| **field verdict/gate/safety/irreversible code changed** in a mapped project (function returning a verdict enum / gate exit code / safety-invariant · publish/delete/history path) — **proactive, before merge** | **Field-Harness Load-Bearing Change Gate** (see above → degrade-lint → cross-family review → converge; same rigor as FH assets, applied to field code) |
|
|
@@ -600,6 +601,29 @@ Simple file-lookup agents may omit. Agent dispatch works from any mapped project
|
|
|
600
601
|
|
|
601
602
|
---
|
|
602
603
|
|
|
604
|
+
## Intent Marshaling — General-Work Serving (runtime default)
|
|
605
|
+
|
|
606
|
+
FH/PMH is a **purpose organization**, not only a meta-harness: when the leader states a work intent in
|
|
607
|
+
plain language — wiki/document production, research-and-write, organizing, **any work-shaped ask, not
|
|
608
|
+
just harness building** — the session **marshals installed capability** (skills · agents · mapped
|
|
609
|
+
harnesses · memory) into a one-line composition proposal and runs it. "This is a harness hub, not for
|
|
610
|
+
that" is a forbidden deflection — serving general work is identity (the registry + mapped harnesses +
|
|
611
|
+
memory exist only here; a plain chatbot cannot marshal them). Marshal-by-feel is the defect this
|
|
612
|
+
replaces (same shape as pre-#158 lens selection): the capability scan is **mechanical** (skill list ·
|
|
613
|
+
`LOCAL_SKILL_REGISTRY` · mapped assets), never recall — and it **carries trust tiers**: run-first
|
|
614
|
+
autonomy covers **FH-native capability with per-action-reversible steps only**; a non-FH sibling hit
|
|
615
|
+
stays at its registry `ask-tier` (propose-only) and an outward-mutating action (send · post · deploy ·
|
|
616
|
+
delete) keeps its own gate — marshaling never upgrades either. Capability gap (declared only by citing
|
|
617
|
+
the scan result, never a bare "nothing fits") → the goal-quench Step C ladder semantics at request
|
|
618
|
+
scale (internal scan → external search → in-session synthesis; **persist** routes to the New-Skill
|
|
619
|
+
gate, **install** to plugin-recommender's HITL — no new gates).
|
|
620
|
+
|
|
621
|
+
> **Detail (read before applying the ladder or when a gap appears)**:
|
|
622
|
+
> `knowledge/shared/harness-core/intent_marshaling_general_work.md` — the 5-step loop, gate-routing
|
|
623
|
+
> table, Sonnet-floor boundaries, and the origin defect.
|
|
624
|
+
|
|
625
|
+
---
|
|
626
|
+
|
|
603
627
|
## Cross-Project Skill Bus (Active Throughout Session)
|
|
604
628
|
|
|
605
629
|
Based on LOCAL_SKILL_REGISTRY (Step 1-c), **propose and connect skills from other projects directly**. Proposal: *"{Project} has `{skill-name}`. Want me to dispatch it via Agent?"*
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Intent Marshaling — General-Work Serving (runtime twin of intent machinization)
|
|
2
|
+
|
|
3
|
+
> **Status**: doctrine (judgment-shaped, operator-forged 2026-07-22). Companion:
|
|
4
|
+
> `harness_incubator_doctrine.md` covers **forge time** (`intent → forge → agreement → machinery`);
|
|
5
|
+
> this file covers **run time** — what a mapped, skill-equipped environment does with a plain work
|
|
6
|
+
> request. Floor companion: `sonnet_floor_doctrine.md`.
|
|
7
|
+
|
|
8
|
+
## 1. Doctrine statement
|
|
9
|
+
|
|
10
|
+
At forge time a harness machinizes intent into new machinery. At **run time**, an environment with
|
|
11
|
+
installed skills, agents, mapped harnesses, and persistent memory is a **purpose organization**: the
|
|
12
|
+
leader states a work intent in plain language, and the session **marshals installed capability into a
|
|
13
|
+
composition and executes** — without the leader naming skills, agents, or files.
|
|
14
|
+
|
|
15
|
+
**Scope is general work, not only harness work.** Wiki/document production, research-and-write,
|
|
16
|
+
review, organizing, data shaping — any work-shaped request is in-scope. The environment moat is the
|
|
17
|
+
point: a capability registry + mapped harnesses + memory exist *here*, so a plain chatbot session
|
|
18
|
+
cannot marshal what it does not have. Serving general work is therefore **identity, not a favor** —
|
|
19
|
+
"this is a harness hub, not for wiki work" is a forbidden deflection.
|
|
20
|
+
|
|
21
|
+
## 2. Why doctrine, not mood (origin defect)
|
|
22
|
+
|
|
23
|
+
2026-07-21: a session marshaled sim/persona skills onto wiki-polishing work "by feel" and the effect
|
|
24
|
+
was large. That was orchestrator taste — the same failure shape lens selection had before the
|
|
25
|
+
Author-Exposure Table (PR #158: picked right 4/4, but by judgment-luck, not machine). Taste survives
|
|
26
|
+
only on strong tiers and good days; a Sonnet-tier session with the same assets would serve the same
|
|
27
|
+
request thinly and call it done. This doctrine converts the marshal decision from taste into a
|
|
28
|
+
mechanical default that survives at the Sonnet floor.
|
|
29
|
+
|
|
30
|
+
## 3. The marshaling loop (every step Sonnet-runnable)
|
|
31
|
+
|
|
32
|
+
| Step | Action | Mechanical form |
|
|
33
|
+
|---|---|---|
|
|
34
|
+
| **1 Intent read** | Restate the request as *deliverable + doneness* in one line. Genuinely ambiguous → the existing `/deep-clarify` route, not guessing. | one sentence, embedded in the compose proposal |
|
|
35
|
+
| **2 Capability scan** | Scan what is actually installed/mapped — never recall from memory: ① in-session skill list (description match) ② `LOCAL_SKILL_REGISTRY` / Cross-Project Skill Bus ③ the target project's mapped harness assets. **The scan carries each hit's trust tier with it** (FH-native · non-FH sibling `ask-tier` · external) — trust is scan output, not a later afterthought. | list/grep, not vibes |
|
|
36
|
+
| **3 Compose & run** | One-line composition proposal ("draft via X, then Y as the quality gate"), then **run-first, ask-last** — for **FH-native / session-installed capability whose actions are reversible**. A **non-FH sibling registry hit keeps its registry trust tier**: `ask-tier` = propose-only, never auto-run (`fh_detail_protocols.md` 1-c — sibling code is an injection surface). **Reversibility is judged per action, not per skill**: an installed skill whose step sends/posts/deploys/deletes outward hits that action's own gate (`mcp_tool_gating.md` ask-tier · the irreversibility gates) — marshaling never upgrades an ask-tier action to autonomous. | the one-liner IS the HITL surface for reversible work |
|
|
37
|
+
| **4 Gap → ladder** | Gap may be declared **only by citing the Step-2 scan result** ("scanned ①②③, nothing covers X") — never a bare "nothing fits"; a gap claim without a named scan is the under-serve degrade direction this doctrine exists to close. Then reuse the goal-quench Phase 1.5 Step C **ladder semantics** (order + trust-gating + degrade direction — NOT its max-mode `fit_score` trigger, which stays goal-quench-local): internal registry scan → external search (`plugin-recommender`) → **in-session synthesis** from existing meta-skills (composition, not persisted) → net-new skill only as last resort. | same ladder order, no new machinery |
|
|
38
|
+
| **5 Exposure check** | Deliverable is material (published · carries external claims · others rely on it) → the Author-Exposure Table (`agent-composer` §Author-Exposure) names the review pass before "done". | existing gate, unchanged |
|
|
39
|
+
|
|
40
|
+
## 4. Gates — reused, none new
|
|
41
|
+
|
|
42
|
+
| Surface | Gate |
|
|
43
|
+
|---|---|
|
|
44
|
+
| Scan · compose · run **FH-native** installed capability, **per-action reversible** | **none** — autonomous, one-line notice |
|
|
45
|
+
| Dispatching a **non-FH sibling/registry skill** | its **registry trust tier** — `ask-tier` = propose-only, never auto-run (injection surface) |
|
|
46
|
+
| An action that mutates **outward** (send · post · deploy · delete · payment — even via an installed skill) | that action's own gate (`mcp_tool_gating.md` ask-tier · irreversibility gates) — never converted to autonomous by marshaling |
|
|
47
|
+
| External plugin/skill **install** | `plugin-recommender`'s own install-HITL (environment mutation) |
|
|
48
|
+
| **Persisting** a synthesized skill | New-Skill Pre-Commit Gate + `asset-placement-gate` (ephemeral in-session composition needs neither) |
|
|
49
|
+
| Irreversible surfaces (publish · delete · heavy autonomous fleet) | existing gates unchanged (Pre-Publish · Destructive-Op · the goal-quench proposal row) |
|
|
50
|
+
|
|
51
|
+
## 5. Boundaries
|
|
52
|
+
|
|
53
|
+
- **Not a heavy-orchestration auto-runner**: a run that would spawn a large multi-agent fleet still
|
|
54
|
+
proposes `/goal-quench` first (existing row). Marshaling defaults to the **cheapest composition
|
|
55
|
+
that serves the intent** — one skill beats three when one suffices.
|
|
56
|
+
- **Sonnet floor**: every loop step is list/grep/one-liner/run — no depth-gated judgment on the
|
|
57
|
+
critical path. Depth escalation is dispatch (consent-gated), never substrate.
|
|
58
|
+
- **Company residency unchanged** — marshaling never widens what may leave the machine.
|
|
59
|
+
- **Operator-taste default**: tuning targets the operator's convenience (operator, 2026-07-22: "if
|
|
60
|
+
it's convenient for me, that's sufficient" — FH/PMH distributes *how the operator works well*).
|
|
61
|
+
Per-user adaptation is the UAP's layer, not this file's.
|
|
62
|
+
- **Honesty**: marshaling quality is bounded by what is actually installed — a thin environment
|
|
63
|
+
marshals thin. The scan reports what it found; it never inflates the roster.
|
|
64
|
+
|
|
65
|
+
## Done When (adoption, measured)
|
|
66
|
+
|
|
67
|
+
- A general work request in a mapped environment produces a one-line composition proposal grounded in
|
|
68
|
+
an actual capability scan (check class: **measured** — target-tier sim at Sonnet, known-pair: one
|
|
69
|
+
work-shaped positive must marshal, one trivial/out-of-scope negative must NOT add ceremony).
|
|
70
|
+
- No new gate machinery introduced; the mutation points (install · persist · non-FH dispatch ·
|
|
71
|
+
outward actions) route to existing gates (check class: **mandatory-pass** — grep this file for gate
|
|
72
|
+
names, confirm all resolve to pre-existing assets).
|
|
73
|
+
- Trust tiers survive marshaling: no path in this file lets a non-FH `ask-tier` hit or an outward
|
|
74
|
+
action run without its own gate (check class: **mandatory-pass** — cross-family verified 2026-07-22,
|
|
75
|
+
codex F1/F2 closed).
|
|
@@ -106,6 +106,14 @@ If `steel-quench`/`phantom-quench` are unavailable in the routine session, note
|
|
|
106
106
|
`Axis N: skipped (skill unavailable)` — Axis 1 PASS alone unblocks a *draft* PR (Axes 2–3 are the
|
|
107
107
|
operator's residual at merge review).
|
|
108
108
|
|
|
109
|
+
> ⚠️ **"Axis 1 PASS" 는 종료코드로 판정하지 마라.** `regression_guard.sh` 의 `exit 0` 은
|
|
110
|
+
> **PASS 와 SKIP 을 둘 다** 뜻한다 — SKIP 은 "게이트 pathspec 에 걸린 파일이 없었다"이지
|
|
111
|
+
> "검사했고 괜찮다"가 아니다. 무인 루틴이 종료코드만 보면 **미검사가 draft PR 을 unblock 한다.**
|
|
112
|
+
> 구분: stdout 에 `REGRESSION_GUARD_RESULT=skip` 이 있으면 SKIP 이다 — 그 경우 Axis 1 은
|
|
113
|
+
> *통과가 아니라 미실행*이므로 Axes 2–3 과 같은 운영자 잔여로 올려라.
|
|
114
|
+
> (2026-07-22 실측: `pre-commit` 이 정확히 이 혼동을 일으켜 AGENTS.md 변경이 `✅ PASS` 를
|
|
115
|
+
> 받고 지나갔다. `pre-commit` 은 배선 완료 · 이 루틴을 포함한 나머지 소비자는 **미배선 잔여**.)
|
|
116
|
+
|
|
109
117
|
**Skip-visibility at the handoff (load-bearing for honest HITL escalation).** When Axis 2
|
|
110
118
|
(challenger / steel-quench) is skipped, the adversarial check did not run autonomously — it becomes
|
|
111
119
|
the *merger's* responsibility. An intelligent hand-off must make that visible at the hand-off point,
|
package/package.json
CHANGED