@chrono-meta/fh-gate 1.4.73 → 1.4.75
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/CHEATSHEET.md +1 -1
- package/CLAUDE.md +14 -1
- package/docs/ETHOS.md +106 -0
- package/docs/OUTPUT_EVIDENCE.md +118 -0
- package/docs/WHY.md +42 -0
- package/knowledge/patterns/ensemble_union_detection_task_pattern.md +125 -0
- package/knowledge/shared/GLOSSARY.md +77 -0
- package/knowledge/shared/harness-core/harness_frontier_diagnosis_2026-06-02.md +1 -1
- package/knowledge/shared/harness-core/meta_harness_engineering_definition.md +1 -1
- package/knowledge/shared/learnings/subagent_invocations_log.yaml +9 -0
- package/knowledge/shared/patterns/multi-persona-review.md +88 -0
- package/knowledge/shared/plugin-catalog/recommended_plugins.md +117 -0
- package/package.json +28 -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/CHANGELOG.md +617 -0
- package/scripts/below_floor_scan.sh +91 -0
- package/scripts/chamber_run.sh +184 -0
- package/scripts/degrade_direction_scan.sh +17 -2
- package/scripts/fh_env_delta_scan.sh +108 -0
- package/scripts/memory_link_check.py +237 -0
- package/scripts/memory_nearcheck.py +131 -0
- package/scripts/package_coverage_check.sh +140 -0
- package/scripts/selfcheck.sh +47 -0
- package/scripts/session_close_check.sh +31 -1
- package/scripts/sidecar_wait.sh +76 -0
- package/scripts/substrate_jump_detector.sh +60 -0
- package/scripts/test_card_drift_probe.sh +77 -0
- package/scripts/test_degrade_scan_shell_probes.sh +26 -0
- package/scripts/test_marker_floor_lanes.sh +45 -0
- package/scripts/test_memory_link_check.sh +134 -0
- package/scripts/test_session_close_lanes.sh +99 -0
- package/scripts/tier_census_grep.sh +54 -0
- package/templates/.claude/rules/session.md +153 -0
- package/templates/contrib_session.md +34 -0
- package/templates/degrade_direction_scan.sh +17 -2
- package/templates/goal-quench-hook-setup.md +152 -0
- package/templates/starter_profile.md +83 -0
- package/templates/temper_check.sh +46 -0
- package/plugins/fh-meta/skills/context-bridge-dispatch/SKILL.md +0 -32
- package/plugins/fh-meta/skills/self-marketing-lint/SKILL.md +0 -30
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "fh-meta",
|
|
14
|
-
"version": "1.4.
|
|
14
|
+
"version": "1.4.75",
|
|
15
15
|
"description": "Hub meta-operations toolkit — 35 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.75",
|
|
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/CHEATSHEET.md
CHANGED
|
@@ -497,7 +497,7 @@ Claude agents feature
|
|
|
497
497
|
| `asset-placement-gate` | Routes a new skill/agent/plugin to the right place (hub vs project), no role overlap | "where does this go", "should this be shared", "hub or project" |
|
|
498
498
|
| `marketplace-gate` | Scores a repo against 5 listing criteria (README, zero-config, maintenance, dup, safety) | "is this OK to publish", "ready for the marketplace", "pre-publish check" |
|
|
499
499
|
| `public-surface-audit` | Scans git-tracked files for operator-private tokens (real username, corp names, home paths) | "did I leak anything", "scan for private tokens", "is my split clean" |
|
|
500
|
-
| `
|
|
500
|
+
| `harness-doctor --lint` | Flags self-promotional / hype wording in descriptions (plain-text discipline) | "lint the marketing language", "is this description hyped" |
|
|
501
501
|
|
|
502
502
|
> **Going public?** Don't run these one at a time — say **"publish"** / **"make this repo public"** and Claude
|
|
503
503
|
> fires the **Pre-Publish Surface Gate** (CLAUDE.md), which runs `public-surface-audit` + `marketplace-gate`
|
package/CLAUDE.md
CHANGED
|
@@ -695,7 +695,10 @@ Closing phrase detected ("wrap up", "done", "good work", "end session", etc.)
|
|
|
695
695
|
**(b) flag the matching card carry item resolved for ⑤** — ⑤ owns the card write (card-last
|
|
696
696
|
guard), ④-c never edits the card. **First-run no-op** if no matching handoff/carry exists.
|
|
697
697
|
(Why-its-own-step origin + ownership split + salience/backstops → §detail below.)
|
|
698
|
-
→ ⑤
|
|
698
|
+
→ ⑤ **Log-close + card update, in that internal order** ← ABSOLUTE LAST: must capture ①–④-c
|
|
699
|
+
outcomes. ⑤ is ATOMIC and owns BOTH writes: (a) append any close-time finding to
|
|
700
|
+
`fh_completed_{date}.md` FIRST, (b) then write the card. Once ⑤ starts, `fh_completed`
|
|
701
|
+
is CLOSED — a later append re-opens the violation ⑤ exists to prevent.
|
|
699
702
|
→ ⑥ Commit card + push
|
|
700
703
|
```
|
|
701
704
|
|
|
@@ -709,6 +712,16 @@ Closing phrase detected ("wrap up", "done", "good work", "end session", etc.)
|
|
|
709
712
|
new findings, a carry item flipped to DONE) feeds INTO ⑤ — card is never written mid-sequence and
|
|
710
713
|
then left open for more work to accumulate after it.
|
|
711
714
|
|
|
715
|
+
**Why ⑤ became atomic (N=3, 2026-07-28 — three closes in one day)**: the miss was always the same
|
|
716
|
+
shape — a finding surfaced *during* the close and the reflex appended it to `fh_completed`, which is
|
|
717
|
+
correct under ④ and fatal after ⑤. The three prose repairs ("next time write it into the card first")
|
|
718
|
+
all failed, including one session that stated the vow and then broke it in the same close. So the
|
|
719
|
+
sequence is restructured rather than re-promised: `fh_completed` is not a step that runs alongside ⑤,
|
|
720
|
+
it is the **first half of** ⑤. A close-time finding has exactly one landing order — log, then card —
|
|
721
|
+
and there is no remaining moment where appending is the natural move. *Honest scope*: this removes
|
|
722
|
+
the ordering ambiguity, not the reflex; the pre-push gate stays the floor, and on a violation it now
|
|
723
|
+
**names the offending files and prints their last lines** so re-running ⑤ is a delta, not a re-read.
|
|
724
|
+
|
|
712
725
|
**Mid-session card writes are drafts**: If a task (e.g., a calibration run) internally updates
|
|
713
726
|
the card, that is a draft. The close chain always re-runs ⑤ to capture post-draft activities.
|
|
714
727
|
Never skip ⑤ because "the card was just updated" — check for delta first.
|
package/docs/ETHOS.md
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# ETHOS — what forge-harness believes
|
|
2
|
+
|
|
3
|
+
> The compressed identity. Six named principles that travel as quotable units.
|
|
4
|
+
> For *what it is* see [`README.md`](../README.md); for *why it exists* see [`WHY.md`](WHY.md);
|
|
5
|
+
> for the *evidence* see [`OUTPUT_EVIDENCE.md`](OUTPUT_EVIDENCE.md).
|
|
6
|
+
|
|
7
|
+
forge-harness (FH) is a **quality-harness**: a practitioner's meta-harness for Claude Code that
|
|
8
|
+
optimizes for *whether the work holds up*, not how fast it leaves the building. Where a speed-harness
|
|
9
|
+
asks "how quickly can the agent ship?", FH asks "what survives a cold, independent pass?" — and makes
|
|
10
|
+
running that pass routine instead of a chore you skip.
|
|
11
|
+
|
|
12
|
+
Everything below is **copyable**. None of it is a secret. The principles are the product.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## The forge
|
|
17
|
+
|
|
18
|
+
FH treats a project like steel — heat, shape, and shock, in named movements. The metaphor is literal,
|
|
19
|
+
not decoration:
|
|
20
|
+
|
|
21
|
+
| Movement | What it does | Today |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
| **Forge** | shape the raw project into a harness — raise its floor | `install-wizard`, harness-ify |
|
|
24
|
+
| **Quench** | harden it by attack — the cold pass leaves standing only what is sound | `steel-quench`, `phantom-quench` |
|
|
25
|
+
| **Temper** | take the brittleness back out of the hardened asset | `steel-quench` **Wave-T** + `templates/temper_check.sh` |
|
|
26
|
+
| → **Accelerate** | a blade that survived the forge cuts faster — pass, then run | `goal-quench` · *Pass → Accelerate* |
|
|
27
|
+
|
|
28
|
+
All four movements now ship. **Temper** spent its first months named-but-unbuilt — deliberately, per
|
|
29
|
+
principle 5 — and shipped only after measurement runs on independent quench convergences validated that
|
|
30
|
+
the check flags over-hardening without punishing simplification. Quenched steel is hard but brittle;
|
|
31
|
+
no smith ships it un-tempered, and now neither does FH: after convergence, Wave-T measures the complexity
|
|
32
|
+
the quench itself added and hands over-built constructs back for de-brittling.
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 1. Pass → Accelerate
|
|
37
|
+
|
|
38
|
+
The gate is not friction to be tolerated; **surviving it is the speedup.** A project that has passed the
|
|
39
|
+
quench can be moved on with confidence — and that confidence, not a skipped step, is what acceleration
|
|
40
|
+
actually is.
|
|
41
|
+
|
|
42
|
+
> *Forge your projects, pass them through — they come out faster.*
|
|
43
|
+
|
|
44
|
+
## 2. The cold reviewer
|
|
45
|
+
|
|
46
|
+
After a long co-authoring session, you and your AI share the same context — and the same blind spots.
|
|
47
|
+
The reviewer worth having is the one who **never saw your reasoning**. You can get that by hand: paste
|
|
48
|
+
the work into a fresh, empty chat. FH turns that chore into one routine command (`steel-quench`,
|
|
49
|
+
`phantom-quench`, sidecar dispatch).
|
|
50
|
+
|
|
51
|
+
This is **de-bias, not detection.** FH adds no detection engine — a plain prompt to a fresh model does
|
|
52
|
+
much of the same. What FH removes is the *positive bias of self-review*, by separating context. It is
|
|
53
|
+
symmetric across models: whoever sat outside the collaboration is your cold reviewer, not whichever
|
|
54
|
+
model ranks higher.
|
|
55
|
+
|
|
56
|
+
> *The reviewer worth having is the one who never saw your reasoning.*
|
|
57
|
+
|
|
58
|
+
## 3. Utility, not moat
|
|
59
|
+
|
|
60
|
+
The methodology is copyable; what FH packages is the **workflow, not a secret sauce.** Its value is
|
|
61
|
+
narrow and honest: coverage of standpoints, plus a method that makes running them routine. There is no
|
|
62
|
+
cognitive moat here to defend, and FH does not pretend otherwise.
|
|
63
|
+
|
|
64
|
+
> *Fork it. Rename it. Make it yours.*
|
|
65
|
+
|
|
66
|
+
## 4. Value = f(task demand)
|
|
67
|
+
|
|
68
|
+
FH's techniques scale with what the task requires. Isolation pays off in proportion to how much you
|
|
69
|
+
co-developed the artifact; separation pays off in proportion to your integrity target. On a trivial task
|
|
70
|
+
the gain is negligible — and **saying so is part of the method.** On a demanding, deeply co-authored one
|
|
71
|
+
it is essential. It is never absolute: there is no perfect integrity, only a closer asymptote. Knowing
|
|
72
|
+
when *not* to reach for the harness is as much the ethos as knowing when to.
|
|
73
|
+
|
|
74
|
+
> *Run the cold pass when the stakes earn it — not as a ritual.*
|
|
75
|
+
|
|
76
|
+
## 5. Claims earn their words
|
|
77
|
+
|
|
78
|
+
Stock phrases — "isolated", "unique", "unrivaled", "guaranteed" — smuggle strong dictionary claims past
|
|
79
|
+
a warm reader who fills in charitable meaning. Every claim FH makes must survive a **cold, literal
|
|
80
|
+
reading**: would it still be true to someone who refuses to be generous? FH lints its own language for
|
|
81
|
+
this, and corrects itself when a phrase claims more than the evidence carries.
|
|
82
|
+
|
|
83
|
+
> *A claim that only survives a charitable reading is not yet true.*
|
|
84
|
+
|
|
85
|
+
## 6. A harness is a means, not an end
|
|
86
|
+
|
|
87
|
+
For a *field* harness, the target is to get **simpler over time** — rising complexity is a warning
|
|
88
|
+
signal. For a *meta*-harness like FH, the target is to *optimize*, not necessarily simplify: complexity
|
|
89
|
+
earns its place when it earns its scope. The red flags are not size but **orphaned, redundant, and
|
|
90
|
+
decorative** units. Every improvement ships with its own verification circuit (backward / adversarial /
|
|
91
|
+
forward), so the harness audits itself and the learnings compound session over session.
|
|
92
|
+
|
|
93
|
+
> *Complexity must earn its scope; the rest is debt.*
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## What FH does not claim
|
|
98
|
+
|
|
99
|
+
- It is **not** a detection engine, an accuracy multiplier, or a model ranking. The cold pass is your
|
|
100
|
+
base model's own ability, surfaced by isolation.
|
|
101
|
+
- It is **not** a moat. The methodology travels; copying it is the intended outcome, not a leak.
|
|
102
|
+
- It gates for **correctness** — does the work hold up — which is distinct from a security scan.
|
|
103
|
+
- Its empirical results are **worked examples, not benchmarks.** The gain is an empirical, per-task
|
|
104
|
+
question, and an isolated reviewer also adds false positives you must triage.
|
|
105
|
+
|
|
106
|
+
The honesty is not a disclaimer bolted on at the end. It *is* the positioning.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# OUTPUT EVIDENCE — what forge-harness has produced
|
|
2
|
+
|
|
3
|
+
> A compact, verifiable evidence packet. Counts are reproducible from the repo (commands at the bottom).
|
|
4
|
+
> This is **not** an adoption claim — forge-harness is young and built in the open. The honest reading is
|
|
5
|
+
> *volume + external artifacts*, not *proven longevity*. See [`ETHOS.md`](ETHOS.md) §"What FH does not claim".
|
|
6
|
+
|
|
7
|
+
## Built (in the repo, today)
|
|
8
|
+
|
|
9
|
+
| What | Count | Notes |
|
|
10
|
+
|---|---:|---|
|
|
11
|
+
| Active skills | **33** | 29 in `fh-meta` + 4 in `fh-commons`; 3 deprecated redirect stubs not counted |
|
|
12
|
+
| Agent definitions | **8** | `challenger`, `quench-challenger`, `fact-checker`, `hub-persona-auditor`, `persona-innovator`, `beginner`, `main-player`, `expert` |
|
|
13
|
+
| Operating rules | **6** | `.claude/rules/*.md` — mapping, modes, sync, sister-asset, operations |
|
|
14
|
+
| Knowledge docs | **23** | `knowledge/` — 6-axis framework, compounding loop, runtime flow, dialogue playbook |
|
|
15
|
+
| Plugins | **2** | `fh-meta` (meta-harness) + `fh-commons` (project-agnostic) |
|
|
16
|
+
| Self-gate | **1** | 4-axis pre-commit hook (backward / adversarial / forward / record) |
|
|
17
|
+
|
|
18
|
+
## Pace (built in the open)
|
|
19
|
+
|
|
20
|
+
| Metric | Value |
|
|
21
|
+
|---|---|
|
|
22
|
+
| First commit → latest | **2026-05-26 → 2026-06-06** (12 days) |
|
|
23
|
+
| Commits | **224** |
|
|
24
|
+
| Merged PRs | **66** |
|
|
25
|
+
|
|
26
|
+
> Read honestly: this is *velocity*, not *maturity*. A 12-day-old project is early. The point is that the
|
|
27
|
+
> compounding loop and self-gate were exercised on the harness's own development, not just described.
|
|
28
|
+
|
|
29
|
+
## External artifacts (verifiable links)
|
|
30
|
+
|
|
31
|
+
| Artifact | Reference |
|
|
32
|
+
|---|---|
|
|
33
|
+
| Paper (v1.0) | Zenodo DOI [`10.5281/zenodo.20397566`](https://zenodo.org/records/20397566) — arXiv in review |
|
|
34
|
+
| Package | npm [`@chrono-meta/fh-gate`](https://www.npmjs.com/package/@chrono-meta/fh-gate) — multi-backend governance gate (claude · codex · auto) |
|
|
35
|
+
| Codex-compatible beta | `docs/codex-compat.md` — methodology layer runs model-agnostic |
|
|
36
|
+
|
|
37
|
+
## Validation signals (worked examples, not benchmarks)
|
|
38
|
+
|
|
39
|
+
- **Governance gate, real code** (2026-05-31): applied `fh-gate` to OpenCode's AI-generated
|
|
40
|
+
`permission/arity.ts` (163 lines, CI green). Gate verdict: **BLOCKED** — 2 A-grade findings CI did not
|
|
41
|
+
catch (short-token overflow in allowlist; executor tools absent from arity table).
|
|
42
|
+
- **Cold-pass controlled experiments**: the `steel-quench` / `phantom-quench` isolation method was tested
|
|
43
|
+
under controlled conditions (design-defense, semantic-phantom corpora). Treated as **worked examples** —
|
|
44
|
+
the gain is an empirical, per-task question, and isolated reviewers add false positives to triage.
|
|
45
|
+
- **External contribution**: filed gstack issue #1890 (subscription-auth bug) — the harness's own
|
|
46
|
+
cross-audit protocol surfacing a real bug in a sister project.
|
|
47
|
+
- **Frontier cadence sustained**: digests on 2026-05-26 and 2026-06-02 (recurring external-trend scan).
|
|
48
|
+
- **Model-tier flattening, measured** (2026-06-10): a 30-point blind battery — rule-application
|
|
49
|
+
("operating FH": trap routing, gate-class decisions, sync format) + meta-dev fixtures with known ground
|
|
50
|
+
truth — run on four Claude tiers. Operation scores: top-tier anchor / Opus 4.8 / Sonnet 4.6 / Haiku 4.5
|
|
51
|
+
= **100 / 100 / 97 / 94**. With the rules in context, *operating* the harness is nearly model-flat;
|
|
52
|
+
tier differences appeared only in above-rubric design increments (3/3 · 1/3 · 0.5/3 · 0/3) — i.e. in
|
|
53
|
+
*developing* the harness, not running it. Single trial per model, pre-registered rubric, self-graded —
|
|
54
|
+
a worked example, not a benchmark.
|
|
55
|
+
- **Model-tier flattening — Sonnet 5 replication** (2026-07-03): the same 구동 (rule-application)
|
|
56
|
+
battery, re-anchored on all three current tiers in one session — Opus 4.8 / **Sonnet 5** / Haiku 4.5
|
|
57
|
+
each scored **16/16**; both traps and both gate-class carve-out directions passed on every tier.
|
|
58
|
+
Sonnet 5 ties Opus 4.8 on operation, supporting the Sonnet-default doctrine. Honest caveat: the battery
|
|
59
|
+
**ceilinged** this run (Haiku 4.5 also 16/16, up from 15/16 on 2026-06-10) because the CATALOG format
|
|
60
|
+
rule was supplied in-prompt, removing the format-discipline nit that separated tiers before — so this
|
|
61
|
+
confirms parity-at-ceiling, it does **not** re-measure a tier spread. The tier-separating axis is
|
|
62
|
+
above-rubric design depth (not run here — and, by the two structural laws in README §Model setup,
|
|
63
|
+
same-generation tier order there is fixed by design, not something a replication needs to re-confirm).
|
|
64
|
+
Measurement-integrity items applied: display-name pin (partial — Agent-tool binding, family-
|
|
65
|
+
discriminated self-report), reps≥3 (not triggered — zero borderline verdicts), discriminating-probe
|
|
66
|
+
(failed at instrument level — ceiling — flagged, not hidden). Single-session, pre-registered rubric.
|
|
67
|
+
- **Guard-axis before/after, measured** (2026-06-24): the same task was given to a bare agent and an
|
|
68
|
+
FH-gated agent (same FH gate rule injected as context), reps=5 each, across two irreversible surfaces.
|
|
69
|
+
On log cleanup (Destructive-Op Gate) the bare arm deletes on first run — 0/5 safe-default — while the
|
|
70
|
+
FH arm enumerates and dry-runs by default, 5/5. On npm publish (Pre-Publish Surface Gate) the bare arm
|
|
71
|
+
never scans the ship surface for secrets — 0/5 — while the FH arm scrubs, dry-runs, then requires
|
|
72
|
+
explicit confirmation, 5/5. The over-build half of the hypothesis (would the bare arm reinvent the
|
|
73
|
+
stdlib?) came back **null** — both arms used the stdlib cleanly — and is reported, not hidden. The
|
|
74
|
+
measured delta is the *default on the irreversible action*. Visual + data:
|
|
75
|
+
[`docs/before-after/`](before-after/render.png). Pre-registered rubric, isolated-agent reps=5, a worked
|
|
76
|
+
example not a benchmark.
|
|
77
|
+
|
|
78
|
+
## Real-world incidents the gates target (2026-07-03)
|
|
79
|
+
|
|
80
|
+
The controlled before/after above uses synthetic tasks. Three independently reported 2026
|
|
81
|
+
incidents show the same irreversible surfaces failing in production. Each maps to a gate FH already
|
|
82
|
+
ships — with an honest note on how much the gate would have caught.
|
|
83
|
+
|
|
84
|
+
| Incident (source) | Surface | FH gate | Would it have caught it? |
|
|
85
|
+
|---|---|---|---|
|
|
86
|
+
| A Cursor/Opus agent wiped a production DB + 3 months of backups via an unscoped Railway `volumeDelete`, having guessed the call was staging-scoped (PocketOS, [Decrypt](https://decrypt.co/365897/ai-agent-deletes-startup-database-9-seconds-founder-says)) | Destructive op (delete) | **Destructive-Op Gate** — `enumerate → recover → destroy` | **Partial.** The gate's order invariant is exactly this failure: destroy-then-discover instead of enumerate-first. The agent skipped the enumerate step (never checked whether the volume was shared across environments) and had no recover step (backups on the same volume). FH's *mechanical* floor (`pre-push` hook) covers only git-surface deletes/force-push — a Railway GraphQL `volumeDelete` is not a git op, so the catch here is the **prose** enumerate→recover discipline, not a hook. Same un-hookable-surface honesty FH already states for the separate-repo publish surface. |
|
|
87
|
+
| An agent autonomously provisioned 5 high-bandwidth AWS instances (duplicate instances + load balancers, no human review), running up ~$6,531 in 24h ([lantian.pub](https://lantian.pub/en/article/fun/ai-agent-bankrupted-their-operator-scan-dn42lantian.lantian/)) | Cost irreversibility | **Shared spine** (irreversible surface → fail-closed, human-in-loop) | **Partial / gap.** This is runaway *spend*, not delete-or-publish, so no single named FH gate targets it directly — the Destructive-Op Gate covers deletion/rewrite, and `token-budget-gate`/`goal-quench` estimate token cost, not cloud spend. What applies is the shared **propose-before-expensive-action** principle. Reported as a gap the incident motivates, not a clean 1:1. |
|
|
88
|
+
| An agent auto-published a blog hit piece attacking a maintainer after its PR was closed; reached #1 on HN (Matplotlib / Scott Shambaugh, OpenClaw agent, [The Register](https://www.theregister.com/2026/02/12/ai_bot_developer_rejected_pull_request/)) | Irreversible publish | **Pre-Publish Surface Gate** — `scrub before publish, never publish-then-scrub` | **Partial (structural).** Going public is effectively irreversible (cached/forked before takedown — the post was removed but had already hit HN #1). FH's fail-closed rule — no autonomous first-publish to a public surface without explicit human approval — would have stopped the auto-post. FH's *content* scanner targets operator-private tokens, not defamatory prose, so the catch is the **HITL gate on the act of publishing**, and this is precisely the **separate-repo go-public surface FH marks genuinely un-hookable** (prose + `PRE-PUBLISH-CHECKLIST.md`, not a hook). |
|
|
89
|
+
|
|
90
|
+
The pattern across all three: an autonomous agent took an **irreversible action** (delete / spend /
|
|
91
|
+
publish) with no enumerate-or-approve step before it. FH's answer is not a smarter model but a gate that
|
|
92
|
+
makes the irreversible action fail-closed by default — which is what the controlled before/after above
|
|
93
|
+
measures (0/5 → 5/5 safe-default on the two surfaces FH does hook). The honest boundary: two of these
|
|
94
|
+
three surfaces (non-git destructive tool calls; separate-repo publish) are covered by **prose discipline,
|
|
95
|
+
not a mechanical hook** — the same limitation FH already documents, now shown against real incidents
|
|
96
|
+
rather than only synthetic ones.
|
|
97
|
+
|
|
98
|
+
## What this evidence does *not* establish
|
|
99
|
+
|
|
100
|
+
- No claim of scaled external adoption or longitudinal results — the project is 12 days old.
|
|
101
|
+
- Experimental results are worked examples, **not** benchmarks; reproduce before relying on them.
|
|
102
|
+
- The cold-pass gain is the base model's own ability surfaced by isolation, **not** an accuracy engine FH adds.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
<sub>Reproduce the counts:</sub>
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# active skills (excludes deprecated redirect stubs)
|
|
110
|
+
for d in plugins/*/skills/*/; do grep -qi "DEPRECATED — merged\|redirect stub\|moved to" "$d/SKILL.md" || echo "$d"; done | wc -l
|
|
111
|
+
# agents
|
|
112
|
+
ls .claude/agents/*.md plugins/*/agents/*.md | wc -l
|
|
113
|
+
# knowledge docs
|
|
114
|
+
find knowledge -name '*.md' | wc -l
|
|
115
|
+
# pace
|
|
116
|
+
git rev-list --count HEAD && git log --reverse --format=%ad --date=short | head -1
|
|
117
|
+
gh pr list --state merged --limit 200 | wc -l
|
|
118
|
+
```
|
package/docs/WHY.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# WHY — why forge-harness exists
|
|
2
|
+
|
|
3
|
+
forge-harness was built by **chrono-meta**, a practicing QA engineer working in a multi-model
|
|
4
|
+
environment — several LLMs in daily use, each strong at producing output, none built to ask whether
|
|
5
|
+
that output holds up.
|
|
6
|
+
|
|
7
|
+
That gap is the whole reason this exists.
|
|
8
|
+
|
|
9
|
+
Most AI tooling optimizes for the moment of generation: how fast the agent ships, how fluent the diff
|
|
10
|
+
looks. A QA practitioner spends their career on the opposite question — *does this survive contact with
|
|
11
|
+
reality?* — and learns to distrust the most dangerous reviewer of all: the author. After you build
|
|
12
|
+
something with an AI, you and it have co-authored a shared belief. You are now its advocate. The froth,
|
|
13
|
+
the unstated assumption, the claim that reads true only if you're feeling generous — these are exactly
|
|
14
|
+
what a co-author cannot see, because seeing them would mean arguing with themselves.
|
|
15
|
+
|
|
16
|
+
The fix QA already knows is **independence**. The reviewer worth having is the one who never saw your
|
|
17
|
+
reasoning. That is not a clever trick; it is the oldest principle in quality work, applied to a new
|
|
18
|
+
medium. forge-harness is what happens when you take that instinct and make it routine for AI sessions:
|
|
19
|
+
a cold pass on demand, a harness that gates for *correctness* rather than speed, a loop that compounds
|
|
20
|
+
what each session learns instead of letting it evaporate.
|
|
21
|
+
|
|
22
|
+
That cold pass has a name here — the **quench**, the movement where the work is hardened by attack until
|
|
23
|
+
only what is sound is left standing. Naming things like a forge is not decoration; it is a way of being
|
|
24
|
+
honest about which movements are built and which are still being forged.
|
|
25
|
+
|
|
26
|
+
It is built by someone who **governs** AI-generated code rather than writes it by hand — which is
|
|
27
|
+
increasingly what the job actually is. You don't out-type the model. You build the rails it runs on, the
|
|
28
|
+
gates it passes through, the record of what it got wrong last time. That is a harness, and a meta-harness
|
|
29
|
+
is the harness that builds harnesses across every project you touch.
|
|
30
|
+
|
|
31
|
+
The harness runs under a handle, and the methodology is meant to be copied — both on purpose. The formal
|
|
32
|
+
paper carries a real name for citation; the harness does not. Either way forge-harness makes **no appeal
|
|
33
|
+
to a résumé** — its value has to stand on the principles in
|
|
34
|
+
[`ETHOS.md`](ETHOS.md) and the evidence in [`OUTPUT_EVIDENCE.md`](OUTPUT_EVIDENCE.md), or it doesn't
|
|
35
|
+
stand at all. There is no moat to protect, so there is no name to trade on. If a principle here is useful
|
|
36
|
+
to you, take it. Fork the harness, rename it, make it yours. That was always the point.
|
|
37
|
+
|
|
38
|
+
forge-harness exists because the discipline of *checking* deserves the same tooling that the act of
|
|
39
|
+
*making* has received — and because the person best placed to build it was the one who spends all day
|
|
40
|
+
distrusting confident output.
|
|
41
|
+
|
|
42
|
+
> *Made for people who already know the hardest bug to catch is the one you wrote yourself.*
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ensemble-union-detection-task
|
|
3
|
+
description: "Detection tasks benefit from ensemble UNION (2.5–3.0x coverage lift); generation tasks do not (voting, ~0x). Measured, domain-agnostic."
|
|
4
|
+
type: pattern
|
|
5
|
+
status: VALIDATED
|
|
6
|
+
tags: [ensemble, union, detection, decorrelation, composition-over-scale]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Ensemble Union Pattern for Detection Tasks
|
|
10
|
+
|
|
11
|
+
> **Measurement basis**: a PRD-review detection protocol (n=3 real product PRDs) + a generation-task
|
|
12
|
+
> contrast, measured on a fixed open-weight 3-model roster. Detection lift +11.3 findings (2.8x; per-PRD
|
|
13
|
+
> range 2.5x–3.0x); generation lift ~0.
|
|
14
|
+
|
|
15
|
+
## Pattern
|
|
16
|
+
|
|
17
|
+
**Detection tasks benefit from an ensemble UNION strategy, not voting.**
|
|
18
|
+
|
|
19
|
+
- **Detection** (finding defects, gaps, issues): union of all model findings → **2.5x–3.0x** more coverage.
|
|
20
|
+
- **Generation** (creating one artifact): voting for consensus → **~0x lift** (no benefit).
|
|
21
|
+
|
|
22
|
+
## Mechanism
|
|
23
|
+
|
|
24
|
+
Each model has **different blind spots**. Model A finds category-X defects, B finds Y, C finds Z.
|
|
25
|
+
`Union(A, B, C)` = superset of all findings → coverage expansion. Voting would **discard minority
|
|
26
|
+
findings**, losing exactly the diversity that makes the panel worth running. (This is the
|
|
27
|
+
composition-over-scale lever: the gain is model *diversity*, not model size — and it holds only while the
|
|
28
|
+
errors are decorrelated. A shared/correlated blind spot is not closed by union; diagnose correlated vs
|
|
29
|
+
independent first.)
|
|
30
|
+
|
|
31
|
+
## Measured Results
|
|
32
|
+
|
|
33
|
+
Anchored on a PRD-review detection protocol (3 real product PRDs; 3-model open-weight union vs each single
|
|
34
|
+
model):
|
|
35
|
+
|
|
36
|
+
| Metric | Union (E) | Best single | Lift |
|
|
37
|
+
|---|:--:|:--:|:--:|
|
|
38
|
+
| Mean findings / PRD | 18.0 | 6.7 | **+11.3 (2.8x)** |
|
|
39
|
+
|
|
40
|
+
Per-PRD lift ranged **+10.7 to +12.0 (2.5x–3.0x)** — union was 18.0 on every PRD while the best single
|
|
41
|
+
model never exceeded 7.3, because each model surfaced *different* findings. A generation-task contrast
|
|
42
|
+
(create one artifact) showed **~0 lift** from the same union: consensus/voting adds nothing when the goal
|
|
43
|
+
is one output rather than coverage. (The detection→UNION / generation→VOTING split is the validated
|
|
44
|
+
pattern; the +11.3 detection anchor is the measured number, the generation-0 is the qualitative contrast.)
|
|
45
|
+
|
|
46
|
+
**Arms** (illustrative open-weight roster): three distinct open-weight models spanning ≥2 model families
|
|
47
|
+
(e.g. `qwen3.5-122b`, `qwen3-next-80b`, `gpt-oss-120b`). Family diversity is the point — a same-family
|
|
48
|
+
trio shares blind spots. `E` = union(the three).
|
|
49
|
+
|
|
50
|
+
## Implementation
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
# Detection task → UNION
|
|
54
|
+
result = ensemble_request(
|
|
55
|
+
prompt="Review this document and classify findings into bins A/B/C/D",
|
|
56
|
+
models=[MODEL_A, MODEL_B, MODEL_C], # ≥2 families
|
|
57
|
+
strategy="UNION",
|
|
58
|
+
temperature=0.0,
|
|
59
|
+
)
|
|
60
|
+
# result.findings = all unique findings across models
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Deduplication logic
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
def compute_union(responses):
|
|
67
|
+
"""Union of findings across models, deduplicated by normalized description."""
|
|
68
|
+
seen, union = set(), []
|
|
69
|
+
for response in responses:
|
|
70
|
+
for finding in extract_findings(response):
|
|
71
|
+
key = finding.get("description", "")[:50].lower()
|
|
72
|
+
if key and key not in seen:
|
|
73
|
+
seen.add(key)
|
|
74
|
+
union.append(finding)
|
|
75
|
+
return {"findings": union, "total": len(union)}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Token economics
|
|
79
|
+
|
|
80
|
+
Detection is where a cheap local/open-weight union beats a single frontier call on **both** axes —
|
|
81
|
+
more findings **and** lower cost — because union trades false-positive rate (filtered downstream) for
|
|
82
|
+
coverage:
|
|
83
|
+
|
|
84
|
+
| Option | Relative cost | Findings/item | Note |
|
|
85
|
+
|---|:--:|:--:|---|
|
|
86
|
+
| Frontier alone | baseline | 6.7 | single strong model |
|
|
87
|
+
| Open-weight union (3-model) | ~1/19 | 18.0 | ~19x cheaper + ~2.8x more findings |
|
|
88
|
+
|
|
89
|
+
## Constraints
|
|
90
|
+
|
|
91
|
+
- **False positives**: union includes *all* findings → higher FP rate. Mitigate with a frontier filter
|
|
92
|
+
(union output → one strong-model validation pass), expert review of high-priority findings only, and a
|
|
93
|
+
downstream precision measurement against ground truth.
|
|
94
|
+
- **Decorrelation precondition**: union only helps when the panel's errors are *independent*. If a blind
|
|
95
|
+
spot is shared (correlated), stacking more models does not close it — escalate to a human/ground anchor
|
|
96
|
+
instead. Diagnose correlated-vs-independent (reps ≥ 3) before prescribing union.
|
|
97
|
+
|
|
98
|
+
## When to apply
|
|
99
|
+
|
|
100
|
+
| Task type | Examples | Strategy |
|
|
101
|
+
|---|---|:--:|
|
|
102
|
+
| **Detection** | Bug finding · document review · audit · red-team · structure/traceability check | **UNION** |
|
|
103
|
+
| **Generation** | Artifact creation · synthesis · single-answer tasks | **VOTING** |
|
|
104
|
+
|
|
105
|
+
**Rule of thumb**: "find all X" → UNION. "create one Y" → VOTING.
|
|
106
|
+
|
|
107
|
+
## Cross-domain applicability
|
|
108
|
+
|
|
109
|
+
Domain-agnostic — applies to any detection task where (1) multiple independent judges have different
|
|
110
|
+
blind spots, (2) the goal is coverage maximization not consensus, (3) false positives can be filtered
|
|
111
|
+
downstream. Examples beyond QA: code review (security · performance · maintainability), multi-specialist
|
|
112
|
+
diagnosis, content moderation (hate speech · spam · misinformation), fraud detection (multiple risk
|
|
113
|
+
models).
|
|
114
|
+
|
|
115
|
+
## Done When
|
|
116
|
+
|
|
117
|
+
- [x] Validated on a PRD-review detection protocol (+11.3, 2.8x; per-PRD +10.7 to +12.0) + a generation contrast (~0 lift). *[measured]*
|
|
118
|
+
- [x] Deduplication logic specified. *[mandatory-pass]*
|
|
119
|
+
- [x] Decorrelation precondition + FP mitigation documented. *[judged — pair: correlated-blindspot diagnosis]*
|
|
120
|
+
- [ ] (Optional) Precision/FP-rate measurement against ground truth.
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
**One-line takeaway**: Detection → ensemble UNION (2.5–3.0x lift). Generation → voting (~0x). The lever is
|
|
125
|
+
family diversity, not model size, and only while errors stay decorrelated.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# GLOSSARY — forge-harness Key Term Definitions
|
|
2
|
+
|
|
3
|
+
> One-line definitions of FH-specific vocabulary appearing in skills, agents, and documentation.
|
|
4
|
+
> Reference point for new user onboarding. Keep in sync with the README key terms table.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Hub Structure
|
|
9
|
+
|
|
10
|
+
| Term | Definition |
|
|
11
|
+
|---|---|
|
|
12
|
+
| **Meta-Harness** | A persistent hub in a Claude Code environment that connects the work, learnings, and patterns of N projects for mutual reinforcement. Not a simple storage — a connection layer through which knowledge flows between projects. |
|
|
13
|
+
| **Meta Hub** | The role of coordinating all field projects from the meta-harness cwd. Hub = common standards and feedback center / field projects = execution sites. |
|
|
14
|
+
| **Launch Pad Effect** | Using the meta-harness not as a final destination but as a launch pad — even a brief pass-through generates setup, pattern sharing, and speed-up effects. |
|
|
15
|
+
| **Transit Acceleration Value** | The meta-harness's core value — passing through itself accelerates the starting line. Acceleration effect occurs the moment you pass through, without requiring absorption or permanent setup. |
|
|
16
|
+
| **Shared Skill Pool** | Removes the cost of each team/harness independently reinventing the same skills/agents. The meta-harness provides a common pool and each project draws from it. |
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Operating Modes
|
|
21
|
+
|
|
22
|
+
| Term | Definition |
|
|
23
|
+
|---|---|
|
|
24
|
+
| **Mode A** | Full harness clone + use all skills/agents. Run directly from hub cwd. |
|
|
25
|
+
| **Mode B** | Partial harness clone or fork. Select and use specific skills/agents only. |
|
|
26
|
+
| **Mode C** | Install only fh-meta via `claude plugin install` without cloning hub. Independent plugin method. |
|
|
27
|
+
| **Path B generalization** | Generalizing skill behavior to work in external user environments without organization-specific infrastructure dependencies. |
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Diagnostic Skill Triangle
|
|
32
|
+
|
|
33
|
+
| Term | Definition |
|
|
34
|
+
|---|---|
|
|
35
|
+
| **Three-Doctor Loop** | Pattern where harness-doctor (structure diagnosis) + context-doctor (token/context diagnosis) + sim-conductor (simulation/ideation scan) form a self-renewing closed loop of diagnosis→prescription→re-diagnosis. |
|
|
36
|
+
| **harness-doctor** | Harness structure L1~L4 diagnostic skill. L1 structural completeness · L2 complexity · L3 Drift · L4 connection diagnosis. |
|
|
37
|
+
| **context-doctor** | Token waste diagnostic skill. `.claudeignore` auto-generation, large file detection, `/clear` timing guidance. |
|
|
38
|
+
| **sim-conductor** | Meta-simulation automation skill. Area A (external user) · B (internal audit) · C (ideation scan) · D (code/session/skill/memory verification) · E (quality examination). |
|
|
39
|
+
| **install-doctor** | Plugin install pre/post conflict, duplicate, and silent overwrite risk diagnostic skill. |
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Prescription Tiers
|
|
44
|
+
|
|
45
|
+
| Term | Definition |
|
|
46
|
+
|---|---|
|
|
47
|
+
| **M-tier (Mandatory)** | Requires immediate action. Risk of functional failure or data loss if left unaddressed. |
|
|
48
|
+
| **S-tier (Strongly recommended)** | Strongly recommended improvement. Quality degradation and drift accumulation if left unaddressed. |
|
|
49
|
+
| **R-tier (Recommended)** | Recommended optimization item. Efficiency improvement when resolved. |
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Design Principles
|
|
54
|
+
|
|
55
|
+
| Term | Definition |
|
|
56
|
+
|---|---|
|
|
57
|
+
| **Simplification Guard** | Mandatory matching of existing assets before adding new ones. Additions rejected without "N+ real-use observations". The execution mechanism of the "a good harness gets simpler over time" principle. |
|
|
58
|
+
| **Description diet** | Removing self-marketing vocabulary (iteration counts, version history, emphasis words, owner names) from skill frontmatter descriptions to make them readable by external users. |
|
|
59
|
+
| **Layer A auto-read** | The 4 files CLAUDE.md automatically reads at session start (CATALOG.md · latest track file · MEMORY.md · next session starter card). Only works in meta-harness cwd. |
|
|
60
|
+
| **Layer A fallback** | Alternate path when Layer A silent-skips in non-meta-harness cwd environments. Manual CATALOG.md read or adding Layer A reference to project CLAUDE.md. |
|
|
61
|
+
| **silent overwrite** | Risk of overwriting existing settings without user awareness. Detected in advance by install-doctor. |
|
|
62
|
+
| **drift** | Phenomenon of growing gap between design intent and actual behavior. Checked periodically as harness-doctor L3 item. |
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Evolution Concepts
|
|
67
|
+
|
|
68
|
+
| Term | Definition |
|
|
69
|
+
|---|---|
|
|
70
|
+
| **cascade α** | Stage where FH skills are first autonomously executed by internal users (including owner). |
|
|
71
|
+
| **cascade β** | Stage where FH skills are autonomously executed by users other than the owner (quasi-external). First achieved by an external user. |
|
|
72
|
+
| **cross-project skill bus** | Structure for centrally managing skills/agents of local projects through FH and enabling cross-project cross-calling. |
|
|
73
|
+
| **field harvest** | Process of feeding patterns discovered in field project work back (pull) to FH. Automated with `/field-harvest` skill. |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
*Updated: 2026-05-26*
|
|
@@ -56,7 +56,7 @@ hierarchical-context remedy (L1 always-on / L2 session / L3 on-demand) + prompt
|
|
|
56
56
|
| Candidate | Frontier basis | FH hook |
|
|
57
57
|
|---|---|---|
|
|
58
58
|
| **Machine-readable `agent-card`-style capability registry** for the FH agents (capability / input-output contract, synced to actual file counts) | A2A Agent Card = the discovery standard | Closes the "count drift / no canonical registry" gap already flagged in `fh_ecosystem_positioning.md` |
|
|
59
|
-
| **Coordination-overhead budget** in `context-bridge-dispatch
|
|
59
|
+
| **Coordination-overhead budget** (then in `context-bridge-dispatch`, merged into `agent-composer` Step 3-a on 2026-06-02): parallel-fan-out cap (3–4) + capability-aware routing | Centralized = +285% tokens; team size caps at 3–4 | `plugins/fh-meta/skills/agent-composer` |
|
|
60
60
|
|
|
61
61
|
### ② Frontier → Org Propagation
|
|
62
62
|
|
|
@@ -55,7 +55,7 @@ Proposed three-layer harness taxonomy:
|
|
|
55
55
|
|---|---|---|
|
|
56
56
|
| Harness interface | Context injection layer | `CLAUDE.md` · `.claude/rules/*.md` · `MEMORY.md` |
|
|
57
57
|
| Harness mechanisms | Skill bus | `verify-bidirectional` · `steel-quench` · `phantom-quench` · `agent-composer` |
|
|
58
|
-
| Scale | Multi-agent dispatch | Agent View · `
|
|
58
|
+
| Scale | Multi-agent dispatch | Agent View · `agent-composer` parallel dispatch (Step 3-a — absorbed the former context-bridge-dispatch) |
|
|
59
59
|
| *(meta layer, not in taxonomy)* | Harness evolution | `harvest-loop` · `harness-doctor` · `frontier-digest` · `prompt-regression` |
|
|
60
60
|
|
|
61
61
|
The academic taxonomy covers the **static structure** of a harness. FH adds the **dynamic evolution layer** — the mechanism by which the harness improves itself over time.
|
|
@@ -552,3 +552,12 @@
|
|
|
552
552
|
finding: "Ran the adversarial pass INLINE instead. It did find a HIGH (S1 scope-exclusion swallowed `[ -f lib ] || exit 0` dependency guards — the fail-open class), closed with a regression anchor. But inline review is same-context by construction, so the isolation property the gate asks for was NOT obtained."
|
|
553
553
|
note: "Recorded as `sustained` (decided NOT to invoke) because the session carries a standing instruction: no Agent tool unless the user requests it. FIRST `sustained` entry in this log — and directly relevant to fh_signal_2026-07-28_decorrelation-log-uncalibrated, which measured 0 rejected / 0 sustained across 74 entries and argued the log is written selectively toward optimistic outcomes. Operator decision pending on dispatching before merge."
|
|
554
554
|
|
|
555
|
+
|
|
556
|
+
- date: 2026-07-28
|
|
557
|
+
agent: general-purpose Sonnet blind sim (NOT invoked)
|
|
558
|
+
model: n/a
|
|
559
|
+
purpose: "Target-tier sim gate (fh_4axis_gate.md) on the salience-dependent CLAUDE.md ⑤ atomicity change"
|
|
560
|
+
prompt_summary: "Would have been: cold-read the rewritten Session Wrap-up ⑤ at Sonnet and close a session with a finding arriving mid-close — does the atomic ordering actually fire, or does the fh_completed append still happen after the card?"
|
|
561
|
+
outcome: sustained
|
|
562
|
+
finding: "Not run. The four other worklist items are mechanical (scripts/hooks — tier-independent, exempt by the gate's own enforcement-column test) and were verified by known-pair + mutation + positive control. The CLAUDE.md ⑤ change is the one item the sim gate actually targets, and it is therefore UNVERIFIED at floor tier — recorded as a residual in the Axes 2-3 marker rather than absorbed silently."
|
|
563
|
+
note: "Second `sustained` in this log, same cause as the first: standing session instruction forbids the Agent tool unless the user requests it. The pattern is now n=2 — the gate's near-mandatory sim is structurally unreachable in sessions carrying that instruction, which is a governance question (whose exception is it?) rather than a per-session judgment call. Candidate for fh_signal."
|