@chrono-meta/fh-gate 1.4.82 → 1.4.83

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.
@@ -11,13 +11,13 @@
11
11
  "plugins": [
12
12
  {
13
13
  "name": "fh-meta",
14
- "version": "1.4.82",
14
+ "version": "1.4.83",
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.82",
20
+ "version": "1.4.83",
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/CLAUDE.md CHANGED
@@ -728,6 +728,10 @@ it is the **first half of** ⑤. A close-time finding has exactly one landing or
728
728
  and there is no remaining moment where appending is the natural move. *Honest scope*: this removes
729
729
  the ordering ambiguity, not the reflex; the pre-push gate stays the floor, and on a violation it now
730
730
  **names the offending files and prints their last lines** so re-running ⑤ is a delta, not a re-read.
731
+ The check also carries a **⑤-b card-drift probe** (advisory, never blocks): it cross-checks the
732
+ card's *absence claims* against on-disk reality (`session_close_check.sh` ⑤-b block) — surfaced
733
+ here because an implemented-and-lane-tested step that no spec document names is exactly the
734
+ orphan-implementation class the 2026-08-01 reverse-verification pilot flagged (P2-08).
731
735
 
732
736
  **Mid-session card writes are drafts**: If a task (e.g., a calibration run) internally updates
733
737
  the card, that is a draft. The close chain always re-runs ⑤ to capture post-draft activities.
@@ -303,7 +303,11 @@ command -v gh >/dev/null 2>&1 && gh copilot --help >/dev/null 2>&1 && echo "tier
303
303
  # model-selectable, so pick a non-Claude model from a Claude host for genuine diversity)
304
304
 
305
305
  # Tier 2 — native API key (pay-per-use; only if no Tier-1 CLI)
306
- for k in GEMINI_API_KEY OPENAI_API_KEY ANTHROPIC_API_KEY; do
306
+ # OpenRouter is a VERIFIED Tier-2 route (2026-08-01: a GPT-family audit leg ran 4 calls to
307
+ # completion when the codex CLI was quota-exhausted — same model, API-shaped). Discipline when
308
+ # it binds: record the response's model-echo header PER CALL (server-side proof of which model
309
+ # answered — slug typos silently reroute, the measured agy failure mode; self-report is not it).
310
+ for k in GEMINI_API_KEY OPENAI_API_KEY ANTHROPIC_API_KEY OPENROUTER_API_KEY; do
307
311
  [ -n "${!k:-}" ] && echo "tier2:$k"
308
312
  done
309
313
 
@@ -608,3 +608,17 @@
608
608
  outcome: accepted
609
609
  evidence: "Guard R1: 7 bypass + 3 FP classes, JSON-contract violations 0; 3 findings overlapped challenger = independent convergence; 1 suggestion (start-anchoring) refuted with recorded reason, later PARTIALLY vindicated by live prose FPs — resolved with leading-separator class instead of command-position anchor. qasp R1: HIGH status-enum hole independently converged with governor read; core_override_flag requiredness grounded in contract §105 before acting. R2: 5/5 CLOSED, CONVERGED."
610
610
  note: "codex unavailable (~8/6); agy carried the cross-family leg for both FH and qasp reviews, mirroring the 07-31 panel precedent."
611
+ - date: 2026-08-01
612
+ agent: headless claude -p (scratchpad cwd — context-decorrelated audit leg)
613
+ task: "qasp reverse-verification Run #1: Protocol #2/#4/#5 audit of FH guard+close-chain slice, 21 black-box TCs executed"
614
+ mode: headless -p, workspace-confined, FH CLAUDE.md not loaded (decorrelation by cwd)
615
+ outcome: accepted
616
+ evidence: "CALIBRATED (KP4 re-derived AND executed via TC-DG-03; known-negative FP 0; self-FP-tagged 1). 10 findings -> governor source-ground: 7 novel-grounded (3 S fixed same-evening 2711e0a), 2 rejected as governor corpus-feeding artifacts (agent itself marked both 미확인 — honest). Dynamic leg 17/21 PASS."
617
+ note: "First field->meta reverse verification. Rejection cause was the governor's slice construction, not the instrument — lesson registered in run report."
618
+ - date: 2026-08-01
619
+ agent: fh-meta:challenger (in-session isolated)
620
+ task: "Axis-2 adversarial pass on spec-sync diff (3 fixes from Run #1)"
621
+ mode: sync Agent dispatch, read-only, 4 attack angles
622
+ outcome: accepted
623
+ evidence: "M0/S1/R3. S = same-class stale phrasing in destructive_pre_gate.sh:63 usage comment ('single command') that the diff itself existed to eliminate — fixed same branch. All 4 angles returned evidence, not assertion (grep :83, 3 suite counter prints, JSON tool, ⑤-b never-FAIL)."
624
+ note: "Angle ④ surfaced an accepted trade: count-free refs lose lane-deletion detection — mechanical suite-internal floor named as the right home if wanted."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chrono-meta/fh-gate",
3
- "version": "1.4.82",
3
+ "version": "1.4.83",
4
4
  "description": "FH runtime adapters — run FH governance, skills, and agents via Claude or Codex with machine-parseable gates.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fh-commons",
3
- "version": "1.4.82",
3
+ "version": "1.4.83",
4
4
  "engines": {
5
5
  "claudeCode": ">=1.0.0"
6
6
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fh-meta",
3
- "version": "1.4.82",
3
+ "version": "1.4.83",
4
4
  "engines": {
5
5
  "claudeCode": ">=1.0.0"
6
6
  },
@@ -60,7 +60,8 @@
60
60
  # Usage:
61
61
  # hook: PreToolUse matcher "Bash" → bash scripts/destructive_pre_gate.sh
62
62
  # test: printf '%s' "<command>" | bash scripts/destructive_pre_gate.sh --stdin-raw
63
- # Opt out on a single command with a trailing `# noqa: destructive-op`.
63
+ # Opt out with `# noqa: destructive-op` exempts the ENTIRE Bash payload (whole-command match,
64
+ # see PRECISION OVER RECALL above), not a single line.
64
65
 
65
66
  set -u
66
67
 
@@ -26,7 +26,7 @@
26
26
  "one, keyed by script name.",
27
27
  "",
28
28
  "Verify after wiring (known pair, both directions):",
29
- " bash scripts/test_pipe_verdict_guard_lanes.sh # 15 pairs, expect all hold",
29
+ " bash scripts/test_pipe_verdict_guard_lanes.sh # expect: all known pairs hold (count is self-reported by the suite — do not pin it here, it rots)",
30
30
  " printf '%s' '{\"tool_name\":\"Bash\",\"tool_input\":{\"command\":\"g.sh | tail; rc=$?\"}}' \\",
31
31
  " | bash scripts/pipe_verdict_guard.sh # expect a PIPE-VERDICT R2 warning",
32
32
  "",
@@ -38,9 +38,11 @@
38
38
  "counterweight is mechanical. Net-new coverage is the LOCAL destructive ops no git hook sees;",
39
39
  "the pre-push hook remains the hard floor for the push-time surface (role deconfliction in the",
40
40
  "script header). Advisory by design, same contract as pipe_verdict_guard (additionalContext +",
41
- "systemMessage, no permissionDecision); escalate with FH_DESTRUCTIVE_BLOCK=1. Opt out per",
42
- "command with `# noqa: destructive-op`.",
43
- " bash scripts/test_destructive_pre_gate_lanes.sh # 99 pairs, expect all hold",
41
+ "systemMessage, no permissionDecision); escalate with FH_DESTRUCTIVE_BLOCK=1. Opt out with",
42
+ "`# noqa: destructive-op` — the opt-out exempts the ENTIRE Bash payload (whole-command match),",
43
+ "not a single line: a multi-statement payload with a destructive line 1 and a noqa on line 2 is",
44
+ "fully exempt (accepted advisory-surface residual — see the script header's PRECISION OVER RECALL list).",
45
+ " bash scripts/test_destructive_pre_gate_lanes.sh # expect: all known pairs hold (count self-reported)",
44
46
  "",
45
47
  "THIRD GUARD, Write matcher — stale_clone_guard.sh (added 2026-08-01, fh_signal_2026-07-31):",
46
48
  "advisory when a NEW file is created inside a git clone that is behind its upstream (fetch +",
@@ -48,7 +50,7 @@
48
50
  "built on a 46-PR-behind clone and manufactured a duplicate of an upstream lane. found→extend",
49
51
  "applies at repo level; this is its mechanical layer. Same advisory contract; fail-open on",
50
52
  "every uncertainty (non-repo, no upstream, fetch failure).",
51
- " bash scripts/test_stale_clone_guard_lanes.sh # 10 pairs, expect all hold"
53
+ " bash scripts/test_stale_clone_guard_lanes.sh # expect: all known pairs hold (count self-reported)"
52
54
  ],
53
55
  "project_settings_json": {
54
56
  "hooks": {