@chrono-meta/fh-gate 3.2.0 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/registry/agent_cards.json +1 -1
- package/.claude/rules/fh_4axis_gate.md +25 -0
- package/.claude-plugin/marketplace.json +9 -3
- package/AGENTS.md +2 -2
- package/CATALOG.md +4 -4
- package/CHEATSHEET.md +1 -1
- package/CLAUDE.md +4 -4
- package/README.md +2 -2
- package/docs/OUTPUT_EVIDENCE.md +1 -1
- package/docs/STANDARDS_ALIGNMENT.md +1 -1
- package/docs/codex-compat.md +2 -2
- package/knowledge/shared/harness-core/agents_md_runtime_details.md +2 -2
- package/knowledge/shared/harness-core/field_verdict_crossfamily_gate.md +30 -3
- package/knowledge/shared/harness-core/iso_ai_standards_crosswalk.md +1 -1
- package/knowledge/shared/harness-core/skill_quality_rubric.md +1 -1
- package/knowledge/shared/learnings/subagent_invocations_log.yaml +120 -4
- package/knowledge/shared/rules/modes_and_value.md +2 -2
- package/package.json +9 -1
- package/plugins/fh-commons/.claude-plugin/plugin.json +2 -2
- package/plugins/fh-commons/README.md +38 -0
- package/plugins/fh-meta/.claude-plugin/plugin.json +1 -1
- package/plugins/fh-meta/CHANGELOG.md +117 -0
- package/plugins/fh-meta/skills/agent-composer/SKILL.md +2 -2
- package/plugins/fh-meta/skills/auto-decorrelation/SKILL.md +40 -0
- package/plugins/fh-meta/skills/frontier-digest/SKILL.md +1 -1
- package/plugins/fh-meta/skills/frontier-digest/SKILL_detail.md +43 -5
- package/plugins/fh-meta/skills/{hub-cc-pr-reviewer → harness-pr-reviewer}/SKILL.md +75 -3
- package/plugins/fh-meta/skills/{hub-cc-pr-reviewer → harness-pr-reviewer}/SKILL_detail.md +2 -2
- package/plugins/fh-meta/skills/harvest-loop/SKILL_detail.md +2 -2
- package/plugins/fh-meta/skills/install-doctor/SKILL.md +1 -1
- package/plugins/fh-meta/skills/install-wizard/SKILL.md +1 -1
- package/plugins/fh-meta/skills/meta-prompt-builder/SKILL.md +1 -1
- package/plugins/fh-meta/skills/pipeline-conductor/SKILL.md +1 -1
- package/plugins/fh-meta/skills/plugin-recommender/SKILL.md +1 -1
- package/plugins/fh-meta/skills/sim-conductor/SKILL.md +1 -1
- package/plugins/fh-preprep/.claude-plugin/plugin.json +22 -0
- package/plugins/fh-preprep/README.md +24 -0
- package/plugins/{fh-commons → fh-preprep}/skills/preprep/SKILL.md +75 -3
- package/plugins/{fh-commons → fh-preprep}/skills/preprep/fixtures/mk_slide_fixtures.py +152 -1
- package/plugins/fh-preprep/skills/preprep/lane_attr_consistency.py +370 -0
- package/plugins/fh-preprep/skills/preprep/lane_geometry.py +339 -0
- package/plugins/fh-preprep/skills/preprep/lane_screen_parity.py +232 -0
- package/plugins/fh-preprep/skills/preprep/oox.py +305 -0
- package/plugins/{fh-commons → fh-preprep}/skills/preprep/preprep.py +52 -4
- package/plugins/fh-preprep/skills/preprep/safe_install.py +369 -0
- package/plugins/{fh-commons → fh-preprep}/skills/preprep/surfaces.example.yaml +29 -0
- package/plugins/fh-preprep/skills/preprep/test_preprep_lanes_rp.py +1417 -0
- package/plugins/fh-preprep/skills/preprep/usage_ledger.py +191 -0
- package/plugins/fh-qp/.claude-plugin/plugin.json +1 -1
- package/scripts/fh-run.sh +13 -0
- package/scripts/field_canon_preload.sh +1 -1
- package/scripts/finding_fleet.sh +391 -13
- package/scripts/finding_pipeline.sh +370 -11
- package/scripts/finding_verifier.sh +31 -2
- package/scripts/finding_verify.py +198 -13
- package/scripts/frontier_digest_autopilot.sh +3 -3
- package/scripts/gate_shape_scan.sh +16 -2
- package/scripts/selfcheck.sh +12 -8
- package/scripts/test_fh_run_resolver_lanes.sh +116 -0
- package/scripts/test_files_manifest_shipping_lanes.sh +31 -0
- package/scripts/test_finding_pipeline_lanes.sh +1556 -4
- package/scripts/test_gate_shape_scan_lanes.sh +11 -0
- package/scripts/test_marker_crossfamily_lanes.sh +75 -3
- package/scripts/test_marker_standpoint_lanes.sh +31 -6
- package/scripts/test_preprep_adjacent_dup_lanes.sh +1 -1
- package/scripts/test_preprep_diagram_lanes.sh +1 -1
- package/scripts/test_preprep_drift_anchor.sh +27 -12
- package/scripts/test_preprep_drift_anchor_lanes.sh +4 -2
- package/scripts/test_preprep_font_lanes.sh +7 -7
- package/scripts/test_preprep_progression_lanes.sh +1 -1
- package/scripts/test_preprep_promise_lanes.sh +1 -1
- package/scripts/test_preprep_retired_lanes.sh +45 -2
- package/scripts/test_preprep_slide_refs_lanes.sh +5 -5
- package/scripts/test_usage_ledger_lanes.sh +243 -0
- package/scripts/usage_report.py +211 -0
- package/templates/.git-hooks/pre-commit +152 -6
- package/templates/local_fh_context.md +1 -1
- package/templates/regression_guard.sh +1 -1
- package/plugins/fh-commons/skills/preprep/lane_geometry.py +0 -181
- package/plugins/fh-commons/skills/preprep/test_preprep_lanes_rp.py +0 -184
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/README.md +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/canon_terms.example.yaml +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/diagram_from_json.py +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/fixtures/adjdup_known_negative.md +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/fixtures/adjdup_known_positive.md +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/fixtures/fixture_R3_negative.pptx +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/fixtures/fixture_R3_positive.pptx +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/fixtures/font_revert_probe.py +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/fixtures/progression_known_negative.md +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/fixtures/progression_known_positive.md +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/fixtures/promise_known_negative.md +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/fixtures/promise_known_positive.md +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/interslide_deps.py +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/jargon_terms.example.yaml +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/lane_adjacent_dup.py +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/lane_diagram.py +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/lane_font.py +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/lane_progression.py +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/lane_promise.py +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/lane_slide_refs.py +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/lane_slide_relations.py +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/ooxml/c1_baseline.txt +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/ooxml/gate.py +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/preprep_wire.py +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/presentation_checklist.md +0 -0
- /package/plugins/{fh-commons → fh-preprep}/skills/preprep/test_lane_font.py +0 -0
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"file": "plugins/fh-meta/agents/hub-persona-auditor.md",
|
|
51
51
|
"role": "Pre-publication audit of external-facing assets — 3+ persona simulation, 4-axis review (resonance/confusion/resistance/supplement), 3-tier revision proposals",
|
|
52
52
|
"allowed_tools": ["Read", "Grep", "Glob"],
|
|
53
|
-
"invoked_by": ["
|
|
53
|
+
"invoked_by": ["harness-pr-reviewer", "sim-conductor", "direct"],
|
|
54
54
|
"writes": false
|
|
55
55
|
},
|
|
56
56
|
{
|
|
@@ -87,6 +87,31 @@ FH asset modified → Axis 1 (templates/regression_guard.sh --pr {BRANCH})
|
|
|
87
87
|
(`residency=(CLEAN|TAINTED|NOT_SCANNED)(...)`), and BLOCKS a `panel(...)` line that co-carries
|
|
88
88
|
`residency=TAINTED(` or `residency=NOT_SCANNED(` — a sent payload and an unscreened/tainted
|
|
89
89
|
one cannot both be true on the same line. Same fixtures file, cases `r1`–`r13`;
|
|
90
|
+
🟥 **since 2026-09-12 (`EVIDENCE_TOKEN_GRACE_DATE`, no retroactivity), a `panel(<families>)`
|
|
91
|
+
value ALSO requires an `evidence=` token in the same grounds** — a closed set of three:
|
|
92
|
+
`evidence=SHARED(<what every family read>)` · `evidence=INDEPENDENT(<what each got separately>)` ·
|
|
93
|
+
`evidence=MIXED(<which member got which>)`. e.g.
|
|
94
|
+
`crossfamily: panel(codex) — residency=CLEAN(files=3) · evidence=SHARED(same staged diff to both) · R1, 3 findings`.
|
|
95
|
+
**Why**: `arXiv:2609.10969` separated the two decorrelation axes at a fixed call budget
|
|
96
|
+
(48 templates, 2,880 scenarios) and a cross-model vote over SHARED evidence approved **62.9 %**
|
|
97
|
+
of unsafe proposals against **22.9 %** with an independent source — source effect **40.9 pp**
|
|
98
|
+
vs **11.3 pp** for model diversity. A `panel(codex, gemini)` that read the *same diff* is that
|
|
99
|
+
62.9 % arm while recording as this enum's strongest value; the token makes the distinction
|
|
100
|
+
sayable. 🟥 **`SHARED` is legal and common — it is not a failure.** What is blocked is a
|
|
101
|
+
`panel(...)` that does not say which it was, a value outside the three, a malformed/duplicated
|
|
102
|
+
token, and a vacuous body on `SHARED`/`MIXED` (those two are the values whose whole content is
|
|
103
|
+
*which* evidence was shared; `INDEPENDENT` is self-describing and is not body-checked, because
|
|
104
|
+
over-blocking the honest answer trains the override). Same fixtures file, cases `e1`–`e10`;
|
|
105
|
+
🟥 **`standpoint:`'s `tier2`+ grounds check BLOCKS since 2026-09-12**
|
|
106
|
+
(`STANDPOINT_GROUNDS_GRACE_DATE`, no retroactivity) — it printed `⚠️` and returned 0 before.
|
|
107
|
+
`tier2`/`tier2b`/`tier3` assert code RAN in the target, so the grounds must **name the command
|
|
108
|
+
and the output** (`ran \`bash scripts/x.sh\` there, output: 30/30 PASS`); if you only read
|
|
109
|
+
files the honest rung is `tier1b`, which is not grounds-checked. Same external number is the
|
|
110
|
+
reason: leaving the STRONGER axis advisory while hard-blocking the weaker one was not a
|
|
111
|
+
balance. Fixtures `scripts/test_marker_standpoint_lanes.sh` `N8`(blocks) / `N8b`(named command
|
|
112
|
+
passes) / `N8c`(tier1b exempt) / `N8d`(pre-grace still advisory). 🟥 Both changes gate the
|
|
113
|
+
**shape of the record**, never whether the run was real — §Mechanization Boundary's deliberate
|
|
114
|
+
residual is untouched;
|
|
90
115
|
**recorded-by-convention, validated by nothing**: `axis2-rounds` (per-round yield vector) —
|
|
91
116
|
steel-quench §Convergence Criteria consumes it, and a hook check for it was built and then
|
|
92
117
|
REMOVED the same day for firing on 100% of markers. The convergence claim it supports is
|
|
@@ -11,21 +11,27 @@
|
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
13
13
|
"name": "fh-meta",
|
|
14
|
-
"version": "3.
|
|
14
|
+
"version": "3.5.0",
|
|
15
15
|
"description": "New in 2.2.0: BREAKING (gate): chamber step 6 now reads ACTUAL.md, not BUDGET.md — an in-flight chamber run whose actual cost sits in BUDGET.md blocks until the ACTUAL: line moves to tracks/_chamber/<slug>/ACTUAL.md (the runner prints the path). Why: BUDGET.md's pre-verdict hash IS the ordering witness, and step 6 hard-blocked until that same file changed, so every run that reached COMPLETE necessarily mutated a witnessed artifact and verify returned TAMPERED — the chamber's promotion condition was unsatisfiable by construction, not by strictness. Two roles (immutable witness / post-verdict calibration sink) had collided in one file; each was correct alone, so neither side's code showed the conflict. Also: ko-tech-writer Step 2/4-b scans are now calibration-backed (known-pair fixtures + reproducible command, shipped) — discrimination is proven, 'zero residue' is explicitly NOT; chamber lane suite 12 -> 33 including the runner x witness seam no test covered; chamber_run.sh now teaches the two-commit discipline (gate hashes and verdict hash must land in separate commits/PRs — it previously advised the opposite). New in 2.1.0: BREAKING (gate): `crossfamily: declined` in an Axes 2-3 marker now requires grounds naming a record path that RESOLVES on disk — bare `declined`, and `declined` justified by author judgment, are blocked at commit. Remedy: cite where the operator decision lives (e.g. `.. — operator declined sidecars, per knowledge/shared/rules/operational_adaptation.md`), or use `DEGRADED_PANEL_UNUSED` if a panel was reachable and you chose not to recruit it — which is what author judgment actually is. `declined` was the only enum value with no grounds requirement; a cross-family review then broke the first (vocabulary-grep) fix three ways — self-validating on the value's own token, vacuous keyword passes, and over-blocking real declinations in natural prose — so the check asserts a resolvable record instead of words. Also: standpoint axis gains `tier1b` (a STATIC read of a target repo, executed nothing) plus a decide-in-order procedure, after blind floor-tier sims graded pure cold-reads as `tier2` three rounds running; steel-quench Wave 1's sixth angle (gate-locality) gains the output-template row it never had, so a mandatory angle stops being structurally unreportable; verify-bidirectional gains category 5 (prescriptive doctrine statement); Sister Asset Protocol gains an active-adoption trigger; new resident doctrine — Mechanization Boundary, Local Execution First, Skeleton-not-Muscle, Expedition track, and this package's versioning policy. Hub meta-operations toolkit — 35 skills + 7 agents. New in 2.0.1: harness-doctor cadence hook, portability lint wired into pre-commit, branch_claim.sh claim-count-vs-tree-count warning, louder confidentiality-scan fail-open notice, fh-gate.sh missing-package.json survival, identity ① reclassified 🟢 (cross-harness adapters + relay argument channel). 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": "3.
|
|
20
|
+
"version": "3.5.0",
|
|
21
21
|
"description": "Project-agnostic utility skills — 5 skills (convergence-loop · deliberation · mcp-circuit-breaker · token-budget-gate · ko-tech-writer) + 1 agent (quench-challenger). Domain-independent utilities transplantable into any project.",
|
|
22
22
|
"source": "./plugins/fh-commons"
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
25
|
"name": "fh-qp",
|
|
26
|
-
"version": "3.
|
|
26
|
+
"version": "3.5.0",
|
|
27
27
|
"description": "QP (Quality Platform) — the generic edition of a field QA harness's Prepare→Automation→Regression loop as an FH plugin: 4 skills (qp router · qp-plan · qp-run · qp-regress) + qp_tools.sh (target-class · adapter-probe · mask · surface-reach · mtm-check · run-verbs, typed exit codes) + a zero-domain-constant profile slot + 29 known-pair lanes. Drives web targets through the session's Playwright MCP and desktop targets through computer-use MCP (mobile deferred); calls a registered qasp typed capability when one exists (strictest-wins) — none is registered today, so the MCP fallback is the first edition. Verdict contract: a MACHINE closure requires a recorded assertion; a failed first step is attributed BLOCKED, not FAIL; surface_reach counts every TC in the denominator. Born as chamber run #18 (EMIT, 2026-09-05).",
|
|
28
28
|
"source": "./plugins/fh-qp"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "fh-preprep",
|
|
32
|
+
"version": "3.5.0",
|
|
33
|
+
"description": "preprep — a presentation-preparation harness. One CLI over 17 lanes (7 built-in + 10 module) that reads a declared surface manifest and checks a talk's assets against each other: canonical terms, jargon glosses, retired vocabulary, inter-slide dependencies, pacing, get/put round-trips, adjacent duplication, slide relations, geometry, attribute consistency, fonts, diagrams, slide refs, and screen-parity between manuscript and deck. Verdict contract: exit 0 pass / 1 findings / 2 cannot-judge — a surface that could not be read is UNMEASURED, never 0. Promoted out of fh-commons 2026-09-13 after the skill grew past one role (routing / lane modules / fixtures).",
|
|
34
|
+
"source": "./plugins/fh-preprep"
|
|
29
35
|
}
|
|
30
36
|
]
|
|
31
37
|
}
|
package/AGENTS.md
CHANGED
|
@@ -32,7 +32,7 @@ operations or steel-quench.
|
|
|
32
32
|
| `expert` | `plugins/fh-meta/agents/expert.md` | Web-grounded domain accuracy and current practice | `sim-conductor` Area E/D, paper review, direct |
|
|
33
33
|
| `challenger` | `plugins/fh-meta/agents/challenger.md` | Evidence-cited adversarial evaluation | `steel-quench`, `harvest-loop`, `sim-conductor`, direct |
|
|
34
34
|
| `fact-checker` | `plugins/fh-meta/agents/fact-checker.md` | Pre-recommendation duplicate and stale-fact search | Before new asset creation or recommendation |
|
|
35
|
-
| `hub-persona-auditor` | `plugins/fh-meta/agents/hub-persona-auditor.md` | External-facing pre-publication persona audit | `
|
|
35
|
+
| `hub-persona-auditor` | `plugins/fh-meta/agents/hub-persona-auditor.md` | External-facing pre-publication persona audit | `harness-pr-reviewer`, `sim-conductor`, direct |
|
|
36
36
|
| `quench-challenger` | `plugins/fh-commons/agents/quench-challenger.md` | Steel-quench attack plus concrete fix direction | `steel-quench` Wave 1, `install-doctor`, `marketplace-gate` |
|
|
37
37
|
| `persona-innovator` | `plugins/fh-meta/agents/persona-innovator.md` | Naming gaps, frame proposals, frontier signals | `sim-conductor` Area A, `harvest-loop`, direct |
|
|
38
38
|
|
|
@@ -274,7 +274,7 @@ control; FH supplies the quality gate after goal completion.
|
|
|
274
274
|
|---|---|---|
|
|
275
275
|
| **M1 — Full** | No Claude-native dependency | `token-budget-gate`, `asset-placement-gate`, `phantom-quench`, `deep-clarify`, `convergence-loop`, `ko-tech-writer` (visual-QA steps degrade to text-only) |
|
|
276
276
|
| **M2 — Partial** | Core works; native agent or slash-command steps need adaptation | `deliberation`, `steel-quench`, `harness-doctor`, `context-doctor`, `sim-conductor`, `harvest-loop` |
|
|
277
|
-
| **M3 — Claude-only** | Requires a Claude hook or session-scoped dispatch | `goal-quench`, `
|
|
277
|
+
| **M3 — Claude-only** | Requires a Claude hook or session-scoped dispatch | `goal-quench`, `harness-pr-reviewer`, `install-wizard` |
|
|
278
278
|
|
|
279
279
|
> **Detail**: See `knowledge/shared/harness-core/agents_md_runtime_details.md §Invocation-patterns`
|
|
280
280
|
> — single, parallel, and wave composition examples — read when choosing a dispatch shape.
|
package/CATALOG.md
CHANGED
|
@@ -742,8 +742,8 @@ FH 전체 지도(2026-09-05) — 5층: ① 무엇인가(문 → 3단 공정 →
|
|
|
742
742
|
- cross-family codex R1 21건(S2 = «막는다» 무조건 단정) → 수리 → R2 CONVERGED
|
|
743
743
|
|
|
744
744
|
**File:** plugins/fh-meta/.claude-plugin/plugin.json + .claude-plugin/marketplace.json
|
|
745
|
-
Hub meta operations tool bundle — 6 skills operation. harvest-loop path B generalization + verify-bidirectional path B generalization + frontier-digest path B generalization + cross-ecosystem-synergy-detection + plugin-recommender + **
|
|
746
|
-
- Decision:
|
|
745
|
+
Hub meta operations tool bundle — 6 skills operation. harvest-loop path B generalization + verify-bidirectional path B generalization + frontier-digest path B generalization + cross-ecosystem-synergy-detection + plugin-recommender + **harness-pr-reviewer** command tower gate operations rule automation (new). 2 agents (hub-persona-auditor + fact-checker). Beta operation — harness core principle *"beta + public release = practical capability obligation"* followed.
|
|
746
|
+
- Decision: harness-pr-reviewer skill newly created — command tower gate operations rule automation + PR lifecycle 4-run accumulated + explicit decision trigger
|
|
747
747
|
- Decision: plugin level v0.4.3 → v0.5.0 promoted — 6 skills operation baseline + path B generalization baseline followed
|
|
748
748
|
- Decision: 3 skills path B generalization — harvest-loop + verify-bidirectional + frontier-digest / external user environment adaptation path enhanced
|
|
749
749
|
- Note: audit-learnings deprecated from plugin (2026-05-xx) → transferred to hub-internal deprecated/; replaced by harvest-loop
|
|
@@ -763,8 +763,8 @@ Self-evolution pipeline — field-harvest → contention-layer → devil/innovat
|
|
|
763
763
|
Bidirectional self-verification pattern automation — when user's precision counter-argument manifests after AI recommendation/agreement persistence, baseline update channel 6-step processing.
|
|
764
764
|
- Decision: v0.5 official release — accumulated runs + mode C correction catch fully persisted
|
|
765
765
|
|
|
766
|
-
### 2026-05-08 | fh-meta |
|
|
767
|
-
**File:** plugins/fh-meta/skills/
|
|
766
|
+
### 2026-05-08 | fh-meta | harness-pr-reviewer, command-tower-gate-automation, baseline-coherence-check, layer-5-self-catch
|
|
767
|
+
**File:** plugins/fh-meta/skills/harness-pr-reviewer/SKILL.md
|
|
768
768
|
Command Tower Gate operations rule automation — on PR input, auto-generates baseline coherence check 8-matrix + Layer 5 self-catch matrix + review comment attachment + admin override merge recommendation.
|
|
769
769
|
- Decision: v0.1 newly created — PR lifecycle 4-run accumulated + explicit decision trigger met
|
|
770
770
|
|
package/CHEATSHEET.md
CHANGED
|
@@ -567,7 +567,7 @@ Claude agents feature
|
|
|
567
567
|
| Skill | What it does | Say this |
|
|
568
568
|
|---|---|---|
|
|
569
569
|
| `install-wizard` | First-install onboarding (zshrc, sentinels, the FH self-gate) | "first-time setup", "run the install wizard" |
|
|
570
|
-
| `
|
|
570
|
+
| `harness-pr-reviewer` | Reads a PR diff → 8-matrix baseline-consistency check → review comment + merge call | "review this PR", "check this diff" |
|
|
571
571
|
| `salience-splitter` | Splits an over-large SKILL.md that "does everything" into scoped files | "this skill is bloated", "SKILL.md too large", "split this skill" |
|
|
572
572
|
|
|
573
573
|
### Agents (sub-agents, dispatched — not slash commands)
|
package/CLAUDE.md
CHANGED
|
@@ -48,14 +48,14 @@ core invariants never melt). The nursery also **verifies what it births**: harne
|
|
|
48
48
|
> 등급표에서 **④** 다. 🟥 등급은 이 표가 아니라 `ship_readiness_gate.md` 가 정본이고, 이름도 거기가 정본이다.
|
|
49
49
|
|
|
50
50
|
|
|
51
|
-
> **3층 정본 — 공정 · 엔진 · 정체성**: FH 를 설명하는 뼈대는 세 층이고 셋의 관계가 정본으로 적혀 있다 — **3단 공정**(FH 의 모든 작업이 밟는 방법론 — 엔진을 벼릴 때도 같다: 초기 영혼 → 중간 **병렬 탈상관** 가속화(두 다이얼 — **탈상관**=사각 위험[모델 계열 ⓐ + 입장 ⓑ] · **병렬**=표면 크기. 곱하지 말고 골라라) → **마무리 6축 태우기**) → **4대 엔진**(영혼·품질게이트·질문하기·맥락유지) → **정체성**(방법론과 코어가 맞물려 나타나는 능력 — 5대는 단련된 실물과 등급을 가진 안정 정체성, 그 외는 방향·레버에 따라 나타나고 사라지는 면모; 운영자 정식화 2026-09-05). 기억용 형태는 **3단 공정 · 4대 엔진 · 5대 정체성 · 6축 검증**이나 🟥 **6축은 네 번째 층이 아니다** — 3단 공정 ③단계가 무엇으로 이루어지는지다. **Read `knowledge/shared/harness-core/fh_three_layer_canon.md`** before naming, re-scoping, or citing any of the three — it also defines the **6 verification axes** (ⓐ계열 · ⓑ입장 · ⓒ격리 그라운딩 · ⓓ3자대면 · ⓔ첫실사용 · ⓕ되돌림; §1-a 가 최초 4축, §1-a-2 가 2026-08-16 확장) that the third stage actually consists of, and states why the three are *not* a clean stack. 🟥 **축은 «얼마나 적대적인가»가 아니라 «무엇을 받았는가»로 갈린다** — 받는 것이 같으면 리뷰어를 몇 명 붙여도 같은 사각이 남는다. 🟥 **명칭 충돌 — 이 파일 안에 「4축」이 두 개다.** §FH Improvement **4-Axis Auto-Gate** 의 4축(Axis 1 회귀 · 2 적대 · 3 팬텀 · 4 매니페스트)은 **커밋 게이트**이고, 여기 6축은 **검증 축**이다. 부분적으로만 겹치고(Axis 1·4 는 ⓐ~ⓕ 에 대응이 없다) **서로 대체하지 않는다**. 그래서 6축은 「6축 게이트」가 아니라 「**6축 검증**」으로 부른다. Grade table stays canonical in `ship_readiness_gate.md`; this pointer never carries grades.
|
|
51
|
+
> **3층 정본 — 공정 · 엔진 · 정체성**: FH 를 설명하는 뼈대는 세 층이고 셋의 관계가 정본으로 적혀 있다 — **3단 공정**(FH 의 모든 작업이 밟는 방법론 — 엔진을 벼릴 때도 같다: 초기 영혼 → 중간 **병렬 탈상관** 가속화(두 다이얼 — **탈상관**=사각 위험[모델 계열 ⓐ + 입장 ⓑ] · **병렬**=표면 크기. 곱하지 말고 골라라) → **마무리 6축 태우기**) → **4대 엔진**(영혼·품질게이트·질문하기·맥락유지) → **정체성**(방법론과 코어가 맞물려 나타나는 능력 — 5대는 단련된 실물과 등급을 가진 안정 정체성, 그 외는 방향·레버에 따라 나타나고 사라지는 면모; 운영자 정식화 2026-09-05). 기억용 형태는 **3단 공정 · 4대 엔진 · 5대 정체성 · 6축 검증**이나 🟥 **6축은 네 번째 층이 아니다** — 3단 공정 ③단계가 무엇으로 이루어지는지다. **Read `knowledge/shared/harness-core/fh_three_layer_canon.md`** before naming, re-scoping, or citing any of the three — it also defines the **6 verification axes** (ⓐ계열 · ⓑ입장 · ⓒ격리 그라운딩 · ⓓ3자대면 · ⓔ첫실사용 · ⓕ되돌림; §1-a 가 최초 4축, §1-a-2 가 2026-08-16 확장) that the third stage actually consists of, and states why the three are *not* a clean stack. 🟥 **축은 «얼마나 적대적인가»가 아니라 «무엇을 받았는가»로 갈린다** — 받는 것이 같으면 리뷰어를 몇 명 붙여도 같은 사각이 남는다. 🟢 **외부 수치가 생겼다(2026-09-12)**: `arXiv:2609.10969`(*Engineering Reliable Commit Gates for Agentic AI*, 2026-09-10)이 고정예산 2×2 로 **48 템플릿 · 2,880 시나리오**에서 두 축을 분리해 쟀다 — «**같은 증거를 읽는 교차-모델 투표**»는 위험 제안의 **62.9 %** 를 승인하고, «**독립 출처**»는 **22.9 %** 다. 출처 효과 **40.9 %p** vs 모델 다양성 효과 **11.3 %p** — **3.6 배**. 🟥 **그 수치를 읽고 바꿨다(같은 날)**: 강한 쪽(`standpoint:`)의 `tier2`+ grounds 검사가 **advisory 에서 차단으로** 올라갔고(`STANDPOINT_GROUNDS_GRACE_DATE=2026-09-12`, 소급 없음), `crossfamily:` 의 `panel(...)` 은 이제 **`evidence=SHARED|INDEPENDENT|MIXED`** 토큰을 요구한다 — «같은 diff 를 읽은 패널» 이 강한 값으로 기록되던 자리가 그 62.9 % 팔이다. 🟥 **닫힌 것은 여전히 형식이지 진위가 아니다** — 게임 가능성은 §Mechanization Boundary 가 사람에게 남긴 의도된 잔여다. 이 줄은 n=4+4 내부 관찰로 서 있었고 이제 외부 n=2,880 이 같은 방향을 가리킨다(숫자는 초록 직독으로 재확인, 2026-09-12). 🟥 **명칭 충돌 — 이 파일 안에 「4축」이 두 개다.** §FH Improvement **4-Axis Auto-Gate** 의 4축(Axis 1 회귀 · 2 적대 · 3 팬텀 · 4 매니페스트)은 **커밋 게이트**이고, 여기 6축은 **검증 축**이다. 부분적으로만 겹치고(Axis 1·4 는 ⓐ~ⓕ 에 대응이 없다) **서로 대체하지 않는다**. 그래서 6축은 「6축 게이트」가 아니라 「**6축 검증**」으로 부른다. Grade table stays canonical in `ship_readiness_gate.md`; this pointer never carries grades.
|
|
52
52
|
|
|
53
53
|
> **자기 대조는 상시 의무 — 트리거는 발화가 아니라 «지금 FH/PMH 자산을 건드리고 있다»**
|
|
54
54
|
> (운영자 결정 2026-08-09; 이 저장소든 **다른 사용자의 install 이든** 동일). §FH Improvement
|
|
55
55
|
> 4-Axis Auto-Gate 와 **같은 트리거**이므로 새 트리거도 새 파일도 만들지 않는다 — 기록 자리는
|
|
56
56
|
> **4축 마커의 기존 필드**(`axis2-*` · `axis3-*` · `residual`)다.
|
|
57
57
|
> **마커에 반드시 남는 3줄** ① **①영혼** — 설계 *전에* 쓴 «성공 정의 / 절대 안 함»(없으면 `없음`)
|
|
58
|
-
> · ② **돌린 축과 안 돌린 축을 각각 이름으로.** 마커 `axes-run` 은 **2026-08-17 부로 여섯 글자**를 요구한다 — **기호 키**(ⓐ계열 · ⓑ입장 · ⓒ격리 그라운딩 · ⓓ3자대면 · ⓔ첫실사용 · ⓕ되돌림). 그 전 날짜의 마커는 옛 **ASCII 네 글자**(a·b·c·d) 그대로다. 🟥 **두 배열은 같은 글자가 다른 축을 가리킨다** — 옛 `b`=첫실사용은 지금 **ⓔ**, 옛 `d`=되돌림은 지금 **ⓕ** 라서, 옛 줄을 그대로 옮기면 축 둘이 조용히 뒤바뀌고 아무 오류도 안 난다. **어느 배열인지는 마커 파일명의 날짜로 판별한다**(`< 2026-08-17` = 옛 4축). ⚠️ **표기법은 판별자가 아니다** — 초판이 «기호 키를 보면 6축인 줄 안다» 고 적었는데 **코퍼스 실측이 반증했다**: axes-run 보유 53건 중 기호 키가 4건인데 그중 **2건이 2026-08-10 자이면서 옛 4축 의미로 기호를 쓴다**(`ⓑ 첫실사용` · `ⓓ 되돌림` — 현 배열에선 각각 ⓔ·ⓕ), 혼용도 1건 있다. 훅은 그 셋을 안 읽으므로 커밋은 안 막지만 **감사자의 grep 은 거기서 틀린 답을 낸다**. ⓑ입장은 값을 여기 적지 않고 **`standpoint:` 자기 필드**를 가리킨다(`ⓑ=→standpoint`, 그 줄이 비면 죽은 포인터라 차단). 즉 산문 정본과 기계가 **축 개수로는 맞았고**, 남은 어긋남은 `standpoint:` 값의 **grounds** 한 칸이다. 🟥 **초판은 여기에 «값을 검증하는 코드가 아직 0줄»이라고 적었는데 그건 거짓이었다 — 2026-08-23 정정(RETRACTED).** 실측: `templates/.git-hooks/pre-commit` 의 `validate_standpoint_leg()` 는 **86줄**이고 `:1953` 에서 호출되어 `FAILED=1` 로 **커밋을 차단한다**(레인 = `scripts/test_marker_standpoint_lanes.sh`, 실재). 정확한 잔여는 「0줄」보다 훨씬 좁고, **그 구분을 접으면 안 된다**: ⓐ **enum 은 닫혀 있고 차단한다** — 함수 안 `return 1` **6개**(`standpoint:` 줄 부재 · 중복 `standpoint:` 줄 · enum 비-멤버 값 · `crossfamily:` 토큰 오염 · 근거 없는 `not-applicable` · 근거 없는 `DEGRADED_*`/`UNKNOWN`). ⓑ **`tier2`+ 의 «실행을 명명했는가» grounds
|
|
58
|
+
> · ② **돌린 축과 안 돌린 축을 각각 이름으로.** 마커 `axes-run` 은 **2026-08-17 부로 여섯 글자**를 요구한다 — **기호 키**(ⓐ계열 · ⓑ입장 · ⓒ격리 그라운딩 · ⓓ3자대면 · ⓔ첫실사용 · ⓕ되돌림). 그 전 날짜의 마커는 옛 **ASCII 네 글자**(a·b·c·d) 그대로다. 🟥 **두 배열은 같은 글자가 다른 축을 가리킨다** — 옛 `b`=첫실사용은 지금 **ⓔ**, 옛 `d`=되돌림은 지금 **ⓕ** 라서, 옛 줄을 그대로 옮기면 축 둘이 조용히 뒤바뀌고 아무 오류도 안 난다. **어느 배열인지는 마커 파일명의 날짜로 판별한다**(`< 2026-08-17` = 옛 4축). ⚠️ **표기법은 판별자가 아니다** — 초판이 «기호 키를 보면 6축인 줄 안다» 고 적었는데 **코퍼스 실측이 반증했다**: axes-run 보유 53건 중 기호 키가 4건인데 그중 **2건이 2026-08-10 자이면서 옛 4축 의미로 기호를 쓴다**(`ⓑ 첫실사용` · `ⓓ 되돌림` — 현 배열에선 각각 ⓔ·ⓕ), 혼용도 1건 있다. 훅은 그 셋을 안 읽으므로 커밋은 안 막지만 **감사자의 grep 은 거기서 틀린 답을 낸다**. ⓑ입장은 값을 여기 적지 않고 **`standpoint:` 자기 필드**를 가리킨다(`ⓑ=→standpoint`, 그 줄이 비면 죽은 포인터라 차단). 즉 산문 정본과 기계가 **축 개수로는 맞았고**, 남은 어긋남은 `standpoint:` 값의 **grounds** 한 칸이다. 🟥 **초판은 여기에 «값을 검증하는 코드가 아직 0줄»이라고 적었는데 그건 거짓이었다 — 2026-08-23 정정(RETRACTED).** 실측: `templates/.git-hooks/pre-commit` 의 `validate_standpoint_leg()` 는 **86줄**이고 `:1953` 에서 호출되어 `FAILED=1` 로 **커밋을 차단한다**(레인 = `scripts/test_marker_standpoint_lanes.sh`, 실재). 정확한 잔여는 「0줄」보다 훨씬 좁고, **그 구분을 접으면 안 된다**: ⓐ **enum 은 닫혀 있고 차단한다** — 함수 안 `return 1` **6개**(`standpoint:` 줄 부재 · 중복 `standpoint:` 줄 · enum 비-멤버 값 · `crossfamily:` 토큰 오염 · 근거 없는 `not-applicable` · 근거 없는 `DEGRADED_*`/`UNKNOWN`). ⓑ **`tier2`+ 의 «실행을 명명했는가» grounds 검사도 2026-09-12 부로 차단한다** — 그 전까지는 `⚠️` 만 찍고 `return 1` 을 안 했다(훅 스스로 *"Advisory by design"* 이라 적었다). 🟢 **바꾼 근거는 외부 실측이다**: `arXiv:2609.10969` 이 출처 축을 **40.9 %p**, 모델 축을 **11.3 %p** 로 재서(n=2,880 · 고정 호출예산) «강한 축의 grounds 를 advisory 로 두고 약한 축을 하드 차단» 이 균형이 아니게 됐다. grace date 로 소급하지 않으며(`< 2026-09-12` 마커는 종전 경고), 레인 = `test_marker_standpoint_lanes.sh` N8/N8b/N8c/N8d. 🟥 막는 것은 **기록의 형태**(명령과 출력을 명명했는가)이지 그 실행의 진위가 아니다. **왜 그렇게 적혔나**: 2026-08-20 정정이 «enum 은 닫혔고 grounds 는 advisory» 로 이미 들어왔는데(§Standpoint-Execution-Evidence 포인터 줄이 그대로 적고 있다) **이 줄만 옛 서술로 남았다** — 같은 파일이 자기 자신과 어긋난 반쪽-픽스 전파경계다(`[[feedback_half_fix_propagation_boundary]]`). 🟥 **이 문단의 논지는 바뀌지 않는다** — 닫힌 것은 여전히 **«형식»이지 «진위»가 아니고**, 자평·게임 가능성은 그대로 열려 있다. 오히려 좁아진 만큼 정확해졌다. 형식 정본 = `.claude/rules/fh_4axis_gate.md §Marker axis fields`
|
|
59
59
|
> · ③ **각 축의 컨트롤과 그 생사**. 축을 «돌렸다»의 **최소 증거 = 컨트롤이 살아 있는 실행 출력**
|
|
60
60
|
> 이다 — 안 고른 이유만 적은 것은 준수가 아니다.
|
|
61
61
|
> **비용 경계**: 넷을 매번 다 돌리지 않는다. 실패 모드에 맞춰 **고른다**.
|
|
@@ -972,7 +972,7 @@ Proposal format: `"I see [X]. Want me to run /[skill] to [one-line description]?
|
|
|
972
972
|
| "pull this into FH", "reverse-harvest", "worth keeping", "harvest pattern", "field pattern" | `/field-harvest` |
|
|
973
973
|
| **you installed or invoked an EXTERNAL asset (a tool, framework, or repo not ours) and ran it against something this hub owns** — `pip install`/`npm i` of an outside framework, cloning a peer repo to run it, adopting an upstream utility. Fires on the ACT, not on a keyword: the trigger is *"I reached outside because ours did not cover this"* | **Sister Asset Protocol** (`knowledge/shared/rules/sister_asset_protocol.md` §Active adoption) — record the resolution difference, list **items to import** AND **items the hub can propagate** (bidirectionality is a prohibition, not a nicety), and where there is no write access write a `tracks/_audit/proposal_*.md` so the operator can decide whether to contribute it upstream. 🟥 Missed 2026-08-16 on exactly this shape: an external red-team framework was installed, run against a field harness, found a real bypass — and was filed as a `type: reference` **tool pointer** with no sister audit at all |
|
|
974
974
|
| "용광로모드", "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) |
|
|
975
|
-
| "review this PR", "check diff", "code review" | code diff → built-in `/code-review`·`/review` · FH-asset coherence → `/
|
|
975
|
+
| "review this PR", "check diff", "code review" | code diff → built-in `/code-review`·`/review` · FH-asset coherence → `/harness-pr-reviewer` (role split) |
|
|
976
976
|
| "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 |
|
|
977
977
|
| "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. **Boundary («동향/trend»+«조사» in one utterance)**: decide by TOPIC, not verb — AI/harness-adjacent trend → `/frontier-digest`, anything else → the ladder (routing probe 2026-08-10 #8: the two vocabularies co-occur in real utterances). No-reinvention: FH routes, does not build a research engine. |
|
|
978
978
|
| "orchestrate agents", "parallel dispatch", "combine skills", "multiple agents" | `/agent-composer` |
|
|
@@ -1000,7 +1000,7 @@ Proposal format: `"I see [X]. Want me to run /[skill] to [one-line description]?
|
|
|
1000
1000
|
| **사람이 읽을 산출물이 나가기 직전** — README·가이드·리포트·장표·PR 본문 등 «독자가 여는» 것 (proactive; 코드가 옳아도 걸린다 — 이 행이 잡는 건 정확성이 아니라 **가독성**이다) | **독자로서 한 번 읽어라** — 첫 8줄에 결론이 있나 · 본문이 고정 템플릿에 덮이지 않나 · 마지막 인상이 무엇인가. 렌즈는 이미 있다: `/sim-conductor` A-1(`beginner` cold-read) 또는 직접 렌더해서 읽기. 🟥 **정적 검사는 「없는 것」을 잡고 「안 읽히는 것」은 못 잡는다** — 실측 2건이 독립 수렴했다(qasp 축: 지적 12건 중 스캐너 적발 0 · gstack 3자대면: 배포된 리포트 본문 3줄 vs 고정 템플릿 21줄). pre-commit 이 같은 상기를 advisory 로 낸다(차단 아님) |
|
|
1001
1001
|
| "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) |
|
|
1002
1002
|
| **field verdict/gate/safety/irreversible code changed** in a mapped project **— or a merge/landing verdict asked on any gate-shaped file, mapped or not** (function returning a verdict enum / gate exit code / safety-invariant · access-control / approval / auth / exposure boundary · publish/delete/history path; «gate-shaped» = the mechanical identifier test in §Field-Harness Load-Bearing Change Gate, not a feel) — **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) |
|
|
1003
|
-
| **a diff (yours or an unattended pipeline's) alters another harness's actual behavior, gate outcome, or interaction contract** — building automation that opens PRs autonomously, touching a synced/shared-body surface, or any change whose effect crosses a harness boundary (not merely a file-class match — most self-improvement is `not-applicable` here, which is the expected common case) — **proactive, before push, never as a post-PR comment** | **Standpoint axis** (`knowledge/shared/harness-core/field_verdict_crossfamily_gate.md §7` — orthogonal to `crossfamily:`; run the diff from the TARGET harness's own repo/standpoint via `tier2`/`tier2b`/`tier3`, or record `not-applicable`/`DEGRADED_*` on the closed enum. Missed once in-session while building `scripts/frontier_digest_autopilot.sh` 2026-08-15 — mis-routed to `fh-meta:
|
|
1003
|
+
| **a diff (yours or an unattended pipeline's) alters another harness's actual behavior, gate outcome, or interaction contract** — building automation that opens PRs autonomously, touching a synced/shared-body surface, or any change whose effect crosses a harness boundary (not merely a file-class match — most self-improvement is `not-applicable` here, which is the expected common case) — **proactive, before push, never as a post-PR comment** | **Standpoint axis** (`knowledge/shared/harness-core/field_verdict_crossfamily_gate.md §7` — orthogonal to `crossfamily:`; run the diff from the TARGET harness's own repo/standpoint via `tier2`/`tier2b`/`tier3`, or record `not-applicable`/`DEGRADED_*` on the closed enum. Missed once in-session while building `scripts/frontier_digest_autopilot.sh` 2026-08-15 — mis-routed to `fh-meta:harness-pr-reviewer` (same-repo self-consistency, a different lens) before the operator caught it; this row exists so the next session connects the trigger without two rounds of correction.) |
|
|
1004
1004
|
| **"진단해줘", "개선해줘", "diagnose this", "improve this harness", "check this project", "audit this project"** — said while working **in a mapped project** (not a single-file ask) | **Field-Harness Diagnostic** (see §Field-Harness Diagnostic above → compose existing checks into one ranked M/S/R list → HITL approval per item, nothing auto-fixed) |
|
|
1005
1005
|
| **"새 프로젝트", "하네스 작성해줘", "이 프로젝트 가속화", "harness-ify this", "accelerate this project"** — an onboarding/acceleration door (returning-menu ①②③) | **Onboarding / Acceleration Autopilot** (see §Onboarding / Acceleration Autopilot above → Phase 0 auto-discover + branch → innovator-centered recommend → ranked install plan → HITL per item, non-overwriting; "끝까지 자율로" → full-autonomy under /goal-quench gate) |
|
|
1006
1006
|
|
package/README.md
CHANGED
|
@@ -101,7 +101,7 @@ cd ~/projects/forge-harness && claude # then type a greeting: hi · 안
|
|
|
101
101
|
- You stop having to pick the check. The harness reads what you are about to do — publish, delete,
|
|
102
102
|
rewrite history, open a PR — and names the gate for that moment. ① is one command you remember; ②
|
|
103
103
|
is the layer that remembers for you.
|
|
104
|
-
- **
|
|
104
|
+
- **40 skills · 8 agents** you can call in plain language: diagnose a project, accelerate one, wire a
|
|
105
105
|
new one up.
|
|
106
106
|
- `tracks/` keeps what each session learned, so **session 2 starts where session 1 stopped**. This is
|
|
107
107
|
the part that compounds — and the part you cannot judge on day one.
|
|
@@ -382,7 +382,7 @@ sidecar posture: [`docs/MODEL_SETUP.md`](docs/MODEL_SETUP.md).
|
|
|
382
382
|
|
|
383
383
|
---
|
|
384
384
|
|
|
385
|
-
##
|
|
385
|
+
## 40 skills · 8 agents
|
|
386
386
|
|
|
387
387
|
Count = non-deprecated skills. Clustered as verification · orchestration · diagnosis · harvesting ·
|
|
388
388
|
gates · discovery · simulation · setup, plus 8 agents (`challenger` · `quench-challenger` · `beginner`
|
package/docs/OUTPUT_EVIDENCE.md
CHANGED
|
@@ -131,7 +131,7 @@ rather than only synthetic ones.
|
|
|
131
131
|
|
|
132
132
|
```bash
|
|
133
133
|
# active skills. NOTE: the old recipe here grepped each SKILL.md for "redirect stub"/"deprecated"
|
|
134
|
-
# and returned 38, because phantom-quench and
|
|
134
|
+
# and returned 38, because phantom-quench and harness-pr-reviewer — both live — merely MENTION those
|
|
135
135
|
# words in their prose. A body-text grep cannot tell "I am a stub" from "I detect stubs". There are
|
|
136
136
|
# currently zero stubs, so count the files and re-introduce an exclusion only when one exists, in
|
|
137
137
|
# frontmatter where it can be matched on a field rather than on a phrase.
|
|
@@ -41,7 +41,7 @@ to FH itself and to the field harnesses it emits.
|
|
|
41
41
|
| 42001 A.7 data (A.7.2–A.7.6) | acquisition, quality, provenance, preparation | FH holds no training data but does hold **evaluation data** (probes, corpora, transcripts, logs): provenance = sim header `corpus_head_date` · quality = known-pair calibration · preparation = residency strip · **company residency is absolute** | `probes_live.yaml`, `scripts/residency_closure_scan.py` | 🟡 provenance/preparation present; no written acquisition or quality criteria for evaluation data |
|
|
42
42
|
| ISO/IEC 5338 life cycle | define · control · execute · improve | incubator (chamber) → EMIT → field → harvest-loop compounding | `harness_incubator_doctrine.md`, `hub_compounding_loop.md` | ✅ |
|
|
43
43
|
| ISO/IEC 23894 risk management | identify · analyse · evaluate · treat | ship-readiness grades · Surface-Class Degrade Invariant (irreversible = fail-closed) | `ship_readiness_gate.md`, `CLAUDE.md §Irreversibility Gates` | ✅ partial |
|
|
44
|
-
| ISO/IEC 20246 reviews | work-product reviews | cross-family review · `/apex-review` · `
|
|
44
|
+
| ISO/IEC 20246 reviews | work-product reviews | cross-family review · `/apex-review` · `harness-pr-reviewer` · cold read (`beginner`) | `plugins/fh-meta/agents/` | ✅ |
|
|
45
45
|
|
|
46
46
|
## What a field harness inherits
|
|
47
47
|
A harness FH emits gets the same rows for free where it adopts the templates (`templates/.git-hooks/*`, the marker schema, the
|
package/docs/codex-compat.md
CHANGED
|
@@ -64,7 +64,7 @@ Resolution order:
|
|
|
64
64
|
|
|
65
65
|
| Unit type | Lookup |
|
|
66
66
|
|---|---|
|
|
67
|
-
| `--skill name` | `plugins/fh-meta/skills/name/SKILL.md`, then `plugins/fh-commons/skills/name/SKILL.md` |
|
|
67
|
+
| `--skill name` | `plugins/fh-meta/skills/name/SKILL.md`, then `plugins/fh-commons/skills/name/SKILL.md`, then **every other `plugins/*/skills/name/SKILL.md`** (alphabetical). Before 3.5.0 the search stopped after the first two, so skills in `fh-qp` and `fh-preprep` were unreachable by bare name. |
|
|
68
68
|
| `--agent name` | `.claude/agents/name.md`, then `plugins/fh-meta/agents/name.md`, then `plugins/fh-commons/agents/name.md` |
|
|
69
69
|
| `--agent plugin:name` | `plugins/plugin/agents/name.md` first |
|
|
70
70
|
| `--unit path` | explicit file path |
|
|
@@ -113,7 +113,7 @@ When `codex exec` runs **inside this repo**, FH's Claude-native git/Stop/PostToo
|
|
|
113
113
|
M2 skills (`deliberation`, `steel-quench`, `harness-doctor`, `context-doctor`, `sim-conductor`, `harvest-loop`) have a core workflow that runs under Codex, but any step that dispatches `Agent(subagent_type=...)` or a slash command must be replaced by `fh-run` or a direct `codex exec` call reading the sub-agent's `SKILL.md`/agent `.md` — same workflow, different runtime (the "M2 adaptation pattern" in `AGENTS.md`). Example: `steel-quench` Waves 1–3 run; the `quench-challenger` agent step becomes `fh-run --agent fh-commons:quench-challenger`.
|
|
114
114
|
|
|
115
115
|
### 3. M3 skills do not run automatically under Codex
|
|
116
|
-
M3 skills (`goal-quench` Phase-3 Stop hook, `
|
|
116
|
+
M3 skills (`goal-quench` Phase-3 Stop hook, `harness-pr-reviewer` CC session context, `install-wizard` settings.json write) require Claude-Code-native runtime and are **methodology reference only** under Codex unless a dedicated adapter exists. Use Codex's native goal/session features for goal control, and use `fh-gate` after completion for FH quality gating.
|
|
117
117
|
|
|
118
118
|
### 4. No token accounting
|
|
119
119
|
Codex token usage is billed in the Codex CLI quota and is **not** recorded in any FH session log or orchestrator measurement. Cross-family runs (Gemini/Codex) are invisible to FH's token-budget tooling by construction.
|
|
@@ -178,7 +178,7 @@ is not the headless substitute.
|
|
|
178
178
|
|---|---|---|
|
|
179
179
|
| **M1 — Full** | No Claude-native dependency | `token-budget-gate`, `asset-placement-gate`, `phantom-quench`, `deep-clarify`, `convergence-loop` |
|
|
180
180
|
| **M2 — Partial** | Core works; native agent/slash-command steps need adaptation | `deliberation`, `steel-quench`, `harness-doctor`, `context-doctor`, `sim-conductor`, `harvest-loop` |
|
|
181
|
-
| **M3 — Claude-only** | Requires a Claude hook or session-scoped dispatch | `goal-quench`, `
|
|
181
|
+
| **M3 — Claude-only** | Requires a Claude hook or session-scoped dispatch | `goal-quench`, `harness-pr-reviewer`, `install-wizard` |
|
|
182
182
|
|
|
183
183
|
**Which phase needs adapting** — the operative half of the M2/M3 rows. Without this a tier label
|
|
184
184
|
tells a non-Claude runtime that a skill is "partial" but not *where* to intervene, which is the only
|
|
@@ -191,7 +191,7 @@ move, these per-skill cues did not, and they existed in no other file.)
|
|
|
191
191
|
| `harvest-loop` | the git-scan phase | PR auto-proposal |
|
|
192
192
|
| `deliberation` | proposal/synthesis structure | Mediator and Jury agent steps |
|
|
193
193
|
| `goal-quench` (M3) | — | Phase 3 depends on a Claude Stop hook |
|
|
194
|
-
| `
|
|
194
|
+
| `harness-pr-reviewer` (M3) | — | needs Claude session context |
|
|
195
195
|
| `install-wizard` (M3) | — | writes `settings.json` |
|
|
196
196
|
|
|
197
197
|
For M2, replace `Agent(subagent_type=...)` and slash-command steps with `fh-run` or direct
|
|
@@ -93,6 +93,12 @@ it?) before acting — mechanical anchor over agreement.
|
|
|
93
93
|
2. **Cross-family adversarial review** — `auto-decorrelation` recruits ≥1 different-family auditor
|
|
94
94
|
(e.g. `codex` gpt-5.5 / high for repo-grounded verdict code). The same standing verifier the
|
|
95
95
|
4-axis gate uses for load-bearing FH assets, now applied to **field** load-bearing changes.
|
|
96
|
+
🟥 **Judgment-type questions need reps ≥ 3** (pmh-dev #76, 2026-09-11): the same «is this silent
|
|
97
|
+
fallback by-design or fail-open?» prompt at the same temperature returned DESIGN / DEFECT / DESIGN
|
|
98
|
+
across three runs of one auditor. A single run of a judgment question therefore cannot be recorded
|
|
99
|
+
as `panel(...)` CONCUR — run it ≥3×, report the split, and treat a split as *unresolved*, not as
|
|
100
|
+
whichever side came first. Fact-type questions (grep, existence, «does line N call X») are stable
|
|
101
|
+
across reps and families and need neither repetition nor a family change.
|
|
96
102
|
3. **Confirm → fix → re-verify loop** — iterate until the cross-family pass is **CONVERGED**: no
|
|
97
103
|
reachable false-PASS / false-CONFIRMED / masked-FAIL / crash-where-safe-fail-required. **Each fix
|
|
98
104
|
ships a mechanical regression test** reproducing the closed hole — a *required* convergence
|
|
@@ -213,6 +219,27 @@ changes which ground truth the review is checked against — they are orthogonal
|
|
|
213
219
|
that maxes out the first while leaving the second at zero has not raised its coverage of
|
|
214
220
|
standpoint-dependent defects at all.*
|
|
215
221
|
|
|
222
|
+
🟢 **External number, 2026-09-12 — and it is large.** `arXiv:2609.10969` (*Engineering Reliable
|
|
223
|
+
Commit Gates for Agentic AI: Cost-Aware Verification Portfolios under Common-Mode Data Failures*,
|
|
224
|
+
2026-09-10, cs.SE) built this comparison as a benchmark: 48 task templates → **2,880 scenarios**,
|
|
225
|
+
**fixed-call 2×2** so budget is held constant and the comparison is about the axis rather than about
|
|
226
|
+
spending more. Result: a **cross-model vote over shared evidence approves 62.9 % of unsafe proposals**,
|
|
227
|
+
versus **22.9 % with an independent source** — source effect **40.9 pp** against **11.3 pp** for model
|
|
228
|
+
diversity, i.e. **3.6×**. 🟥 **Read that against which axis FH mechanizes**: `crossfamily:` is a closed
|
|
229
|
+
enum with a hard commit block and a fixtures lane, while `standpoint:`'s grounds check — the axis the
|
|
230
|
+
number says carries 3.6× the effect — **was advisory by design until 2026-09-12**
|
|
231
|
+
(`validate_standpoint_leg()` printed `⚠️` and did not `return 1` on a `tier2` naming no command).
|
|
232
|
+
🟢 **Both gaps were closed the same day this number landed**: the `tier2`+ grounds check now
|
|
233
|
+
**blocks** (`STANDPOINT_GROUNDS_GRACE_DATE=2026-09-12`, no retro-blocking — lanes N8/N8b/N8c/N8d),
|
|
234
|
+
and `crossfamily:`'s `panel(...)` now requires an **`evidence=SHARED|INDEPENDENT|MIXED`** token in its
|
|
235
|
+
grounds (`EVIDENCE_TOKEN_GRACE_DATE=2026-09-12`, lanes e1–e10), because a cross-family panel reading
|
|
236
|
+
the **same diff** is, in their terms, the 62.9 % arm while recording as this enum's strong value.
|
|
237
|
+
🟥 `SHARED` stays a legal answer — the defect was that it was unsayable, not that it is wrong. Until 2026-09-12 this section rested on FH's own
|
|
238
|
+
n=4+4/4+8 observations; the direction is unchanged and the magnitude is now external.
|
|
239
|
+
⚠️ Scope: their unsafe-approval rates are from their fault-injection benchmark, not from FH's corpus —
|
|
240
|
+
cite the **asymmetry**, not the absolute percentages, as a property of FH's own gate.
|
|
241
|
+
(Numbers re-read off the abstract on 2026-09-12 rather than recalled — §Instrument Calibration.)
|
|
242
|
+
|
|
216
243
|
**Relationship to the isolation axis — standpoint is isolation whose scope moved up to the
|
|
217
244
|
harness (operator, 2026-08-18).** Operator wording: *"요는 이것도 '격리' 프레이밍이 하네스 단위로
|
|
218
245
|
확장되는 거지 … 그 하네스 자체의 입장을 돌리는 거니까 (하네스라는 껍질에 모델이라는 알맹이를
|
|
@@ -542,7 +569,7 @@ one variable at a time — `banana(qasp)` → **blocked (enum)** · `tier2` with
|
|
|
542
569
|
**passes**.
|
|
543
570
|
|
|
544
571
|
**What is actually true, stated at the right width**: the enum IS closed and enforced; the `tier2`+
|
|
545
|
-
execution grounds
|
|
572
|
+
execution grounds **blocked** from 2026-09-12 (before that a thin `tier2` recorded and warned); and nothing
|
|
546
573
|
checks whether the recorded value is *true*. The old sentence collapsed all three into "no validation",
|
|
547
574
|
which suppresses use of a control that exists — the quietest kind of drift, because it reads as
|
|
548
575
|
honest modesty.
|
|
@@ -573,7 +600,7 @@ grep the function name, not a line number) blocks on **six** distinct `return 1`
|
|
|
573
600
|
duplicated one, a value outside the closed enum, a `crossfamily:` token contaminating this axis, a
|
|
574
601
|
bare `not-applicable`, and a bare `DEGRADED_*`/`UNKNOWN`. Lanes: `scripts/test_marker_standpoint_lanes.sh`.
|
|
575
602
|
**What is actually reserved is one narrow slot**: for `tier2`+ the «did you name a command you ran»
|
|
576
|
-
grounds test
|
|
603
|
+
grounds test emitted `⚠️` and did **not** return 1 until 2026-09-12 (the hook labelled it *"Advisory by design"*); it now returns 1 for markers dated on/after `STANDPOINT_GROUNDS_GRACE_DATE`. So the
|
|
577
604
|
accurate three-way split is: **enum → blocked · non-vacuity of grounds → blocked · truth of the value,
|
|
578
605
|
and execution-naming on `tier2`+ → not checked.** Do not read this as "now mechanized"; read it as
|
|
579
606
|
**"the channel is checked in more places than this file used to admit, and the judgment is still not
|
|
@@ -916,7 +943,7 @@ time, because the first version of this correction varied two and mis-attributed
|
|
|
916
943
|
`banana(qasp)` → blocked (enum) · `tier2` without parens → blocked (enum) · `tier2(qasp)` with **no**
|
|
917
944
|
execution grounds → **passes with a warning** · with grounds → passes. 🟥 So the first fix's claim
|
|
918
945
|
that "grounds are non-empty" are checked **over-shot, and a different-family reviewer caught it**:
|
|
919
|
-
the `tier2`+ execution grounds
|
|
946
|
+
the `tier2`+ execution grounds **block as of 2026-09-12** (they were advisory before). Two residuals remain and both are real — grounds are
|
|
920
947
|
not enforced, and whether `tier2` is *true* is still self-attested. What was wrong was only the claim
|
|
921
948
|
that nothing validated the field at all. Three artifacts, one carrying two
|
|
922
949
|
independent trials (forge-harness PR #368, a sibling field harness's PR #8 reps=3 and its
|
|
@@ -72,7 +72,7 @@ TS 8200), 위험 식별(42119-2 §6) — 이 정확히 **하네스 층**에 산
|
|
|
72
72
|
| 42001 A.10 3자 | 3자·고객 관계 | capability composition contract(strictest-wins) · 클러스터 노드 등록 | `capability_composition_contract.md` | 🟡 |
|
|
73
73
|
| 5338 수명주기 | 정의·통제·실행·개선 프로세스 | 인큐베이터(챔버 run) → EMIT → 필드 → harvest-loop 복리 | `harness_incubator_doctrine.md` · `hub_compounding_loop.md` | ✅ |
|
|
74
74
|
| 23894 위험관리 | 식별·분석·평가·처리 | 등급표(🔴🟡🔵🟢) · Surface-Class Degrade Invariant(비가역 = fail-closed) · «미측정≠0」 | `ship_readiness_gate.md` · `CLAUDE.md §Irreversibility Gates` | ✅ 부분 |
|
|
75
|
-
| 20246 리뷰 | 작업산출물 리뷰 프로세스 | cross-family 리뷰 · `/apex-review` · `
|
|
75
|
+
| 20246 리뷰 | 작업산출물 리뷰 프로세스 | cross-family 리뷰 · `/apex-review` · `harness-pr-reviewer` · 콜드리드(`beginner`) | `plugins/fh-meta/agents/*` | ✅ |
|
|
76
76
|
|
|
77
77
|
## 3. qasp crosswalk — QA 하네스에게 29119 는 «선택된 활동」 단위로 걸린다
|
|
78
78
|
|
|
@@ -20,7 +20,7 @@ refs:
|
|
|
20
20
|
"The ratio at which the result of executing a skill can be independently reproduced and verified by an external observer"
|
|
21
21
|
|
|
22
22
|
### Measurement targets (5 core skills — fixed denominator)
|
|
23
|
-
harness-doctor · verify-bidirectional ·
|
|
23
|
+
harness-doctor · verify-bidirectional · harness-pr-reviewer · context-doctor · sim-conductor
|
|
24
24
|
|
|
25
25
|
### Per-skill scoring criteria
|
|
26
26
|
|
|
@@ -2948,7 +2948,7 @@
|
|
|
2948
2948
|
다음번 처방: 병렬 디스패치는 **완료 알림을 받은 그 턴에** 한 줄이라도 적는다.
|
|
2949
2949
|
- date: 2026-09-01
|
|
2950
2950
|
agent: fh-meta:beginner / fh-meta:challenger / general-purpose(디자이너 렌즈)
|
|
2951
|
-
count:
|
|
2951
|
+
count: 5
|
|
2952
2952
|
context: >-
|
|
2953
2953
|
if(kakao) 덱 v1.1 비공개 사례 구간(68~75p) 재구축 직후 3렌즈 병렬 감사. 운영자가
|
|
2954
2954
|
«발표준비하네스 능력을 100% 활용해서 … 테크니컬라이터도 부르고 디자이너도 불러서» 로
|
|
@@ -2997,7 +2997,7 @@
|
|
|
2997
2997
|
신호: tracks/_meta/fh_signal_2026-09-02_dispatch-tally-attribution.md
|
|
2998
2998
|
- date: 2026-09-02
|
|
2999
2999
|
agent: general-purpose (2) + codex exec sidecar (1) — 프로 세션(Fable 5.1 거버너)
|
|
3000
|
-
count:
|
|
3000
|
+
count: 5
|
|
3001
3001
|
context: >-
|
|
3002
3002
|
운영자 «자체개발 거버너모드 · 병렬로». ⓐ ⑤ 증폭자 측정 사전등록 초안(블라인드) ⓑ 카드 미결 2건
|
|
3003
3003
|
(eligcheck _tsv_pipe fail-open · target_pin mtime 분기) 조사+패치 제안(패치는 텍스트로 회신,
|
|
@@ -3033,7 +3033,7 @@
|
|
|
3033
3033
|
같은 디렉터리에 있어 오염 → 폐기·재실행. 전 회신을 거버너가 실행으로 재현했고 codex 기각 5건은 소스 근거.
|
|
3034
3034
|
- date: 2026-09-03
|
|
3035
3035
|
agent: UNATTRIBUTED — 이 세션(forge-harness-d5, 프로)이 띄운 것이 아니다
|
|
3036
|
-
count:
|
|
3036
|
+
count: 5
|
|
3037
3037
|
context: >-
|
|
3038
3038
|
④-e 가 «오늘 디스패치 2 · 원장 0» 으로 ❌. 자정 이후 이 세션의 Agent 호출은 0 (도구 호출은 Bash·gh·npm 뿐).
|
|
3039
3039
|
tally 실물 `tracks/_meta/.subagent_dispatch_tally` 에 2026-09-03 두 줄. 같은 시각 이 머신에서 sim 추출기
|
|
@@ -3049,7 +3049,7 @@
|
|
|
3049
3049
|
agent: fh-meta:expert
|
|
3050
3050
|
invoker: forge-harness-27 (Fable 5.1 거버너, 야간 위임)
|
|
3051
3051
|
task: 웹 QA 에이전트 프런티어(2025-2026) ↔ qasp 1/2/3막 대응표 + 2주 내 비저자 첫 완주 델타 5
|
|
3052
|
-
count:
|
|
3052
|
+
count: 5
|
|
3053
3053
|
context: >-
|
|
3054
3054
|
운영자 «qasp 세계에 물어보고 개발 위탁, 다다음주 AX lobby QA 투입». 1차(기본 모델)는 API 529 로 조기 종료,
|
|
3055
3055
|
2차 sonnet 재시도 성공(검색 12·fetch 1·155,866 tokens). 읽기 전용, 회사 내부 정보 검색어 배제.
|
|
@@ -3575,7 +3575,61 @@
|
|
|
3575
3575
|
outcome: accepted
|
|
3576
3576
|
evidence: "① 델타 진술 + 제목 3 + thesis 2, 각각 defeater 동반 ② 외부 선행 11건(URL 열어 확인) + 미확인 4건 라벨 분리 ③ FH 결손 6건(G-1~G-6, 전부 기계화 가능). 🟥 G-4(finding_verify.py 의 자기검증 가드가 옵셔널 필드에 걸린 fail-open)는 내가 소스 확인 + 알려진 쌍 재현 후 **이 릴리스에서 닫았다**(PR #694). 사이드카 원 주장은 배선 경로도 뚫린다는 함의였는데 파이프라인이 라우팅을 거부하므로 좁혀서 채택 — 사이드카 발견은 «증거 후보» 이지 판정이 아니라는 규율대로"
|
|
3577
3577
|
residual: "🟥 자기보고 잔여를 스스로 6항 적어 왔다(EU AI Act 미열람 · preprint 자기보고 수치 · 우리 표의 커버리지 불일치). 그 정직성 자체가 채택 근거의 일부. 외부 인용은 **아직 재검증 안 함** — 논문에 싣기 전에 URL 을 내가 직접 연다"
|
|
3578
|
+
- date: 2026-09-10
|
|
3579
|
+
agent: sidecar-codex (gpt-6-astra high) + sidecar-agy (gemini-3.8-flash-high) + local ollama qwen3.8:27b@4090
|
|
3580
|
+
task: B-2 F_typed 팔 24런(+15 재실행) · F_gen 9런 · 채점 32+16+16+3 단위 · cross-family 수리 검토 1
|
|
3581
|
+
count: 37 (SubagentStop 집계) — 사이드카 CLI 호출은 별도(팔 ~140, 채점 ~70)
|
|
3582
|
+
outcome: accepted
|
|
3583
|
+
evidence: tracks/_meta/dominance_B2/RESULT_2026-09-10_scoring-calibration.md §1~§10 · fh_axes23_2026-09-10_verifier-roster.md · cross-family 6/6 실적발 전건 수리(L73~L78)
|
|
3584
|
+
cost: codex 577k(F_typed 리뷰) + 한도 3회 소진 · 로컬 4090 무료 · 거버너 UNMEASURED
|
|
3585
|
+
note: 통합 1항목. 사이드카는 auditor 로만(트리 쓰기 0). 자력 적발 0/6(cross-family) · 계기 축 자력 2(L72 · quota 오탐)
|
|
3586
|
+
- date: 2026-09-10
|
|
3587
|
+
agent: general-purpose ×5 (Claude, 로컬 격리 워크트리 · 사이드카 0 — residency)
|
|
3588
|
+
task: qasp-dev PR 스택 7건(#278–#284) 거버너 검증 — 레인 실행 · 되돌림 프로브 · 표본 손검증 · known-pair (#279 · #280+#281 · #282 · #283 · #284) + 거버너 직접 #278·스택 전수
|
|
3589
|
+
count: 5
|
|
3590
|
+
outcome: accepted
|
|
3591
|
+
evidence: tracks/_meta/field_gate_review_2026-09-10_qasp-stack7.md — #281 BLOCK(coverage.py:142 파생 fail-open 재현 + 정본 :41), 5건 A 소견 전부 file:line·재현 동반 · 스택 전수 4092/0
|
|
3592
|
+
cost: subagent_tokens 163k+184k+215k+200k+195k ≈ 957k · 거버너 UNMEASURED
|
|
3593
|
+
note: 통합 1항목. crossfamily=DEGRADED_SINGLE_FAMILY(corp-context 어휘 — residency). 자력(거버너) 적발 0 — 다섯 A 전부 에이전트 실행이 잡음; 저자 자기검토도 다섯 다 놓친 자리(«거버너 1종» 이 실제로 «기계 1종+의미 0종» 이라는 저자 정정은 채택)
|
|
3594
|
+
- date: 2026-09-12
|
|
3595
|
+
agent: general-purpose(sonnet) ×6 — persona-commons 1기 웹 리뷰 캐스트 첫 실사용(designer · ux-writer · fe-dev · be-dev · qa · a11y 렌즈, 격리·병렬)
|
|
3596
|
+
task: 공개 화면(FH 지도 페이지 캡처 33요소/5k자) 에 각 렌즈 파일+캡처만 주고 parallax 출력 + Unique-to-this-seat 자기 태그. 거버너가 렌즈별 고유 발견을 세어 장식 렌즈를 가른다(한계효용 정지)
|
|
3597
|
+
count: 6
|
|
3598
|
+
outcome: accepted
|
|
3599
|
+
evidence: 결과는 tracks/_meta/persona_cast_trial_2026-09-12.md 에 표로
|
|
3600
|
+
note: 렌즈 파일은 워크트리 초안(feat/persona-commons). 회사 데이터 0(공개 페이지)
|
|
3601
|
+
- date: 2026-09-12
|
|
3602
|
+
agent: codex sidecar(gpt-6-astra) — Axis 2 cross-family 감사, 짝지음 설계 diff 18,771 bytes
|
|
3603
|
+
task: finding_fleet.sh · finding_pipeline.sh · run_pair.sh 의 diff 를 읽고 결함 열거(S/A/B + 트리거 입력). «두 분기가 바이트 동일한 r1 을 먹어야 하고 드리프트는 크게 틀어져야 한다» 를 요구사항으로 명시
|
|
3604
|
+
count: 1
|
|
3605
|
+
outcome: accepted
|
|
3606
|
+
evidence: S 1건 적발 — `--r1-only` 이 빈 round-1 을 R1_ONLY(사용가능) 로 통과시키는 fail-OPEN(`grep -c . || echo 0` 이 "0\n0" 을 만들어 `[ -eq 0 ]` 이 구문오류로 거짓). 프로브 출력까지 받아 재현, 레인 L124 + fail-before 실행 증명으로 수리. 판정 원문 = tracks/_meta/dominance_B2/PREREG_ADDENDUM6_NOTE_2026-09-12.md
|
|
3607
|
+
cost: tokens 46,877 · 거버너 UNMEASURED
|
|
3608
|
+
note: 🟥 부분 완주 — 한도 소진으로 중단(리셋 15:44), 남은 표면(run_pair.sh phase2 동시성) 미검. 자력 적발 0 — 내가 20분 전에 쓴 코드였다. 회사 데이터 0(FH 자기 스크립트)
|
|
3578
3609
|
- date: 2026-09-11
|
|
3610
|
+
agent: general-purpose ×5 (Claude, 로컬) + sidecar-codex(gpt-6-astra high) ×7 호출(R3·R4×3·R5·R6×2·preprep R1 — 그중 REFUSED 1 · 한도 3)
|
|
3611
|
+
task: ① 3.2.0 발행 게이트 security-review(v3.1.4..main 18커밋, 출하 443파일) ② qasp-dev PR #286 루프 분모 게이트 검증(격리 워크트리·뮤턴트·합성 데이터) ③ PR #287 픽스처 상대시각(TZ×시각×지평 스윕 → 일중 뒤집힘 S 발견, BLOCK → 재검 승인) ④ PR #288 스탬프 이동(종료경로 전수·관통 프로브·합의 레인 단독 뮤턴트) ⑤ PR #289 머지 후 검증(실판정기 형제 오매치 S·준비점검 READY 무근거 S·장식 레인) · codex = finding 파이프라인 cross-family R3~R5(17+3건) + preprep 4 레인 감사 R1(S5·A9·B4)
|
|
3612
|
+
count: 5
|
|
3613
|
+
outcome: accepted
|
|
3614
|
+
evidence: security-review «No HIGH/MEDIUM»(후보 8 전부 «이미 닫힘» 기각) · #286 APPROVE + B1(규율 셋 잔여 2줄) · codex 라운드는 fh_axes23 마커 두 개(verifier-roster · preprep) 에 건별 기록
|
|
3615
|
+
cost: subagent_tokens 187k+181k · codex ≈ 116k(REFUSED)+130k(한도)+60k(한도)+116k+88k+… · 거버너 UNMEASURED
|
|
3616
|
+
note: 통합 1항목. 🟥 codex 사이버 필터가 «attack/spoof/bypass» 어휘 프롬프트를 116k 소모 후 거부 — REFUSED 는 0건이 아니다. 어휘 치환 후 같은 diff 로 8건 실적발. 🟥 «순차» 를 어겨 codex 잡 둘을 동시에 돌렸다가 한도(07:41)로 둘 다 죽음 — 이후 preflight 사슬로 순차화. 🟥 대기 사슬이 자기 명령줄을 grep 으로 잡아 영원 대기(«codex exec … model_reasoning» 문자열이 zsh -c 인자에 있다) — 파일 존재/토큰으로 판별해야 한다
|
|
3617
|
+
- date: 2026-09-12
|
|
3618
|
+
agent: general-purpose(opus) ×1 — preprep R8 «Opus 팔» (탈상관 A/B 의 같은 계열 팔, 격리 워크트리 wt_r8 @4f738ad, 실행 허용)
|
|
3619
|
+
task: codex R8 과 같은 프롬프트로 5파일 적대 감사. 12 프로브 스크립트 실행(p1~p12), R7 수리 3건 재검(S2·A4·A5 건전) + 1S·4A·7B
|
|
3620
|
+
count: 1
|
|
3621
|
+
outcome: accepted
|
|
3622
|
+
evidence: 거버너가 12 스크립트 중 8개를 재실행해 S1(rc=1 인데 정본 교체+이전 바이트 폐기)·A2(shape_type NotImplementedError 교착)·A3(intended 원소형 TypeError 로 P4 전체 UNMEASURED)·A4(공백 경계·br 오탐, «1자@Nonept» 거짓 증거)·B6(빈 Choice 진리값)·B7·B11 전부 재현. 전건 수리 대상
|
|
3623
|
+
cost: subagent_tokens 251,268 · 15분 · codex 팔은 QUOTA_HIT(UNMEASURED, 03:55 재발송)
|
|
3624
|
+
residual: A/B 판정은 codex 팔이 와야 성립 — 지금 말할 수 있는 것은 «같은 계열 + 실행» 이 0 이 아니라는 것뿐. 자력 적발 0/12
|
|
3625
|
+
- date: 2026-09-12
|
|
3626
|
+
agent: general-purpose(opus) ×1 — O_nosent 산문 24런 → typed 주장 추출(부록4 봉인 규칙)
|
|
3627
|
+
task: 답변 본문에서 «위치+결함» 단언을 1건씩, quote 축자 ≥15자 필수, 반증조건·파이프라인 메타 제외, 빈 런은 empty 기록
|
|
3628
|
+
count: 1
|
|
3629
|
+
outcome: accepted
|
|
3630
|
+
evidence: 94 주장 + 빈 7런 · quote 축자 검증 0 실패(에이전트 자체 기계 검증) · 컨트롤(축② 판정 수 대조) |차|>2 = 3런(g03 r1 빈 답 · g04 r3 · h05 r1) → 손대조 대상으로 기록
|
|
3631
|
+
cost: subagent_tokens 183,138 · 5분
|
|
3632
|
+
residual: 추출은 판단이다(F_gen 은 파이프라인 typed) — O 유리 방향 비대칭을 부록 4 잔여로 명시. 추출자 결정 2건(위치별 분할 · 자기부정 항목 제외) 그대로 채택
|
|
3579
3633
|
agent: agy(gemini-3.1-pro-high · gemini-3.8-flash-high) · cross-family adversarial reviewer
|
|
3580
3634
|
mode: sidecar
|
|
3581
3635
|
context: "preprep L15 서체 일관성 레인 신설(PR #697, MERGED bffa1a0) 의 적대 검토. 4라운드 연속."
|
|
@@ -3616,3 +3670,65 @@
|
|
|
3616
3670
|
dispatch_count_measured: 위 2026-09-11 엔트리에 통합 (클래스 통합)
|
|
3617
3671
|
residual: "NOT-CONVERGED — 5라운드가 남았다"
|
|
3618
3672
|
notes: "🟥 이 엔트리가 따로 있는 이유는 세션이 자정을 넘겼기 때문이다. ④-e 는 «오늘» 기준으로 세므로, 날짜 경계를 넘긴 세션은 양쪽 날짜에 기록이 필요하다 — 원장을 하루 단위로 읽는 계기의 성질이고, 통합 서술만 두면 오늘 자가 0 으로 보인다"
|
|
3673
|
+
|
|
3674
|
+
- date: 2026-09-12
|
|
3675
|
+
agent: Explore ×2 (local Claude) · general-purpose ×1 (local Claude) · agy(gemini) ×2 CLI
|
|
3676
|
+
mode: sidecar
|
|
3677
|
+
context: "clawd-on-desk «destructive-action reminder» PR — 필드 게이트 ②단(cross-family + 독립 출처)과 배선 지도"
|
|
3678
|
+
dispatched_by: governor
|
|
3679
|
+
outcome: accepted
|
|
3680
|
+
evidence: |
|
|
3681
|
+
🟥 **자력 적발 0. 두 축이 서로 다른 HIGH 를 잡았고 겹치지 않았다.**
|
|
3682
|
+
ⓐ **독립 출처 팔**(general-purpose, owner 사양만 주고 체크리스트를 먼저 쓰게 함, 내 diff 서술
|
|
3683
|
+
미제공) → **원격전용(버블 비활성) 경로가 통째로 스탬프 안 됨.** 알려진 짝으로 실측을 제시했고
|
|
3684
|
+
(`A 통상 stamp=hold` / `B 원격전용 stamp=undefined · sweep gate=true`), 내 «호출수 동일»
|
|
3685
|
+
불변식이 그 형태를 **구조적으로 못 본다**는 것까지 지목(둘 다 없으면 수가 같다).
|
|
3686
|
+
ⓑ **계열 팔**(agy) → **`execute_bash`·`powershell`·`run_shell_command` 가 자동승인 적격인데
|
|
3687
|
+
매처의 `SHELL_TOOLS` 에 없어 스캔 자체가 안 됨**(거버너가 3/3 재현). 추가로 과차단 3건
|
|
3688
|
+
(`--help` · `rm -rf dist/*` · automation-off 에서 거짓 «내가 멈췄다» 표시).
|
|
3689
|
+
ⓒ Explore ×2 → 설정 배선 6파일 순서·i18n 7로케일 패리티 테스트·라우트 테스트 헬퍼 지도.
|
|
3690
|
+
그중 «수락 기준과 똑같은 단언이 이미 레포에 있다」(`server-route-permission.test.js:353`)가
|
|
3691
|
+
테스트 설계를 바꿨다 — 새로 짓지 않고 그 형태를 재사용.
|
|
3692
|
+
tokens_subagent: "Explore 91,253 + 102,170 · general-purpose 211,666 · agy UNMEASURED · 거버너 UNMEASURED"
|
|
3693
|
+
dispatch_count_measured: 5 # 서브에이전트 3 + agy 2(1차는 print-timeout 5분에 절단 → --print-timeout 25m 재발주)
|
|
3694
|
+
residual: |
|
|
3695
|
+
🟥 **codex 는 한도 소진**(15:44 창을 F_pair 사전등록 실험이 선점) ⇒ 외부 계열은 **agy 단독**.
|
|
3696
|
+
그래서 `crossfamily: panel(gemini-agy) evidence=MIXED` 로 기록했다 — 계열은 SHARED(같은 diff),
|
|
3697
|
+
출처는 INDEPENDENT(사양만). arXiv:2609.10969 의 40.9%p vs 11.3%p 를 읽고 의도적으로 축을 갈랐고,
|
|
3698
|
+
**이번 실측이 그 방향과 일치한다**(출처 팔이 내 불변식의 사각을 잡았고 계열 팔이 매처의 사각을 잡았다).
|
|
3699
|
+
⚠️ n=1 PR 이므로 «출처 축이 더 세다» 로 일반화하지 않는다 — 겹침 0 이라는 사실만 기록한다.
|
|
3700
|
+
notes: "agy 1차는 기본 print-timeout 5분에 절단돼 출력 1줄이었다(메모리에 있던 함정 재현). `--print-timeout 25m` 로 해소. 모든 지적은 거버너가 소스에서 재현한 뒤 수용했고, 수리 11건 전부 fail-before 되돌림 프로브로 앵커 생존을 확인했다."
|
|
3701
|
+
|
|
3702
|
+
- date: 2026-09-13
|
|
3703
|
+
invoked_by: "FH 세션 773e7d1d (자율주행)"
|
|
3704
|
+
agent: "workflow: qasp-maturity-diagnostic (렌즈 9 + 건별 적대 반증)"
|
|
3705
|
+
purpose: |
|
|
3706
|
+
운영자 요청 «qasp dev 를 전체적으로 성숙화» → FH §Field-Harness Diagnostic 의 9 렌즈를
|
|
3707
|
+
워크플로로 팬아웃하고, 원시 발견마다 **반증 전용 팔 1개**를 붙여 살아남은 것만 랭크했다.
|
|
3708
|
+
🟥 전 에이전트에 «쓰기 금지 · 웹 금지 · 제한 환경 리터럴 반출 금지 · 벤더 경로 제외» 를 박았다(제한 환경 레포).
|
|
3709
|
+
outcome: accepted
|
|
3710
|
+
evidence: |
|
|
3711
|
+
렌즈 9(residency · split · salience · structure · degrade · loop · unwired · triad · reps)
|
|
3712
|
+
→ 원시 발견 83 → 적대 반증 → **생존 48(M 3 · S 25 · R 20) · 탈락 35(42 %)**.
|
|
3713
|
+
🟥 **M 3건이 서로 다른 렌즈에서 나왔고 겹치지 않았다**:
|
|
3714
|
+
ⓐ loop/residency — 무장된 가드 사본이 최신 보호경로 3건을 모른다(**유출 방향 fail-open, 현재 열림**).
|
|
3715
|
+
설치 스냅샷 38 vs 소스 41. 훅 자신의 drift 통지는 경고만 내고 차단하지 않는다(의도된 설계).
|
|
3716
|
+
ⓑ degrade — 회귀 판정이 부분집합 공집합을 `all([])=True` 로 접어 결함을 **거짓 CLOSED**.
|
|
3717
|
+
🟢 소비처가 이미 3값(`Optional[bool]`, None→보류)인데 호출부가 안 쓴다 = 순수 배선 결함.
|
|
3718
|
+
형제 드라이버에는 같은 가드가 주석까지 달려 있다 — **반쪽-픽스 미전파**.
|
|
3719
|
+
ⓒ structure — 스킬 1개 Done-When 부재(레포 10개 중 유일). 성문 기준상 자동 M.
|
|
3720
|
+
🟢 **탈락 35건의 이유를 전건 보존**했다 — 안 남기면 다음 진단이 같은 35건을 재발견으로 올린다.
|
|
3721
|
+
🟢 **미측정 1건을 그 자리에서 닫았다**: R 등급 «origin 공개 여부 미측정» → `gh repo view` 로
|
|
3722
|
+
**PRIVATE 실측**. 그 칸이 잔류 판정 전부를 떠받치고 있었고, 확인되자 내부 호스트 리터럴 96건이
|
|
3723
|
+
발견에서 빠졌다(설계상 정상). 🟥 렌즈의 처방(가시성을 fail-closed 게이트로)은 여전히 유효하다.
|
|
3724
|
+
tokens_subagent: "12,248,795 (92 에이전트 · tool_uses 483 · 벽시계 약 33분, 2회 실행)"
|
|
3725
|
+
dispatch_count_measured: 92
|
|
3726
|
+
residual: |
|
|
3727
|
+
🟥 **계열 축이 비어 있다** — 전 팔이 같은 계열(Claude)이다. 제한 환경 레포라 외부 계열로 못 보낸다(잔류).
|
|
3728
|
+
`[[feedback_decorrelation_axis_is_what_you_send]]` 기준으로 **탈상관은 «렌즈»(관점)로만 걸렸고
|
|
3729
|
+
«계열»로는 안 걸렸다.** 그래서 계열 공통 사각은 이 진단이 구조적으로 못 본다.
|
|
3730
|
+
🟥 **읽기 전용이라 「돌려보니」는 미측정**이다. M 중 둘(degrade·loop)은 실행 재현이 다음 단계다.
|
|
3731
|
+
🟥 **렌즈당 상한 14건** — 넘은 렌즈는 뒤가 잘렸다(기록에 표시). 잘린 것은 «없다» 가 아니다.
|
|
3732
|
+
⚠️ 1차 실행이 세션 한도로 27 검증 팔에서 죽었고 `resumeFromRunId` 로 재개했다 — 캐시 65 재생 + 27 재실행.
|
|
3733
|
+
**한도 소진이 「발견 0」으로 렌더될 수 있는 자리**였고, 워크플로가 failures 를 명시해서 갈렸다.
|
|
3734
|
+
notes: "발견은 전부 파일:줄로만 지목하고 제한 환경 값은 옮기지 않았다. 기록 = tracks/_meta/qasp_maturity_diagnostic_2026-09-13.md(gitignored). 아무것도 자동 수정하지 않았다 — 진단의 산출은 랭크된 목록이고 실행은 운영자 승인 뒤다."
|
|
@@ -125,7 +125,7 @@ The forge-harness bundles **rules, skills, and session protocols** into one envi
|
|
|
125
125
|
| `harvest-loop` | Weekly audit + self-evolution pipeline + Phase 2+ PR auto-proposal |
|
|
126
126
|
| `verify-bidirectional` | Bidirectional self-verification + user-AI baseline update circuit |
|
|
127
127
|
| `frontier-digest` | External-facing asset cross-ref + frontier trend + per-audience guide |
|
|
128
|
-
| `
|
|
128
|
+
| `harness-pr-reviewer` | PR diff → baseline coherence check → review comment auto-generation |
|
|
129
129
|
| `context-doctor` | `.claudeignore` auto-generation + large file detection + `/clear` timing guidance |
|
|
130
130
|
| `harness-doctor` | Harness structure L1~L4 diagnosis + M/S/R prescription |
|
|
131
131
|
| `sim-conductor` | External scenario/internal audit/ideation scan autonomous execution + M-tier auto PR |
|
|
@@ -156,7 +156,7 @@ The forge-harness bundles **rules, skills, and session protocols** into one envi
|
|
|
156
156
|
| "can I use what's in another project?", "what's available?" | Ecosystem synergy discovery | `cross-ecosystem-synergy-detection` |
|
|
157
157
|
| "manage my context", "want to save tokens" | Context optimization | `context-doctor` |
|
|
158
158
|
| "wrap up this week's work", "want to reflect" | Weekly audit | `harvest-loop` |
|
|
159
|
-
| "review my PR", "please review" | PR audit | `
|
|
159
|
+
| "review my PR", "please review" | PR audit | `harness-pr-reviewer` |
|
|
160
160
|
| "check harness structure", "confirm everything's running well" | Structure diagnosis | `harness-doctor` |
|
|
161
161
|
| "what are the latest AI tools?", "tell me about frontier trends" | External asset discovery | `frontier-digest` |
|
|
162
162
|
| "want to share this pattern", "can I post this here?" | Pattern harvesting | `field-harvest` |
|