@chrono-meta/fh-gate 1.4.67 → 1.4.69

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.67",
14
+ "version": "1.4.69",
15
15
  "description": "Hub meta-operations toolkit — 34 skills + 7 agents. New in 1.4.53: `fh-codex-doctor` (npm bin) — Codex adapter drift scanner; reads the documented M1/M2/M3 skill tier map + skill/agent source and reports codex-native/adapter-required/claude-native/unclassified per unit, wired into `npm test`/`prepublishOnly` (fail-closed on unclassified Claude-native primitives). New in 1.4.49: steel-quench gains Step 0.6 Verdict-Invariance Probe (groundedness axis — a load-bearing judged gate's verdict must track behavior, not rubric phrasing; measured flip-count over cross-family paraphrases; arXiv:2605.06161 Policy Invariance anchor); multi_model_sidecar_strategy §Vendor-native harness (a model is strongest in its own vendor CLI — Claude/CC, GPT/codex, Gemini/Antigravity; a universal router degrades all of them, so it stays an autocomplete/QA sidecar, never orchestration); predelete_check.sh fail-closed rewrite; memory-hygiene A-TMA anchor. New in 1.4.48: phantom-quench + steel-quench gain external frontier anchors (arXiv:2607.02052 package-hallucination; arXiv:2607.02057 prompt-coverage-adequacy); README model-flat claim reframed from a per-release point-curve to structural invariants (operation flattens across tiers; depth tier-order fixed within a generation). New in 1.4.47: onboarding step ① surfaces the Mode D companion-store session-start load in the auto-read salience anchor (previously only in the local binding + rules, so a greeting could skip the load). New in 1.4.46: context-doctor command-output axis (route to rtk/proxy for verbose CLI stdout, complementing .claudeignore; risk-gated to token-scarce envs). New in 1.4.41: context-doctor 2026 trigger vocab (context engineering/rot/collapse) + phantom-citation hardening; hub measurement-integrity-checklist (cross-model measurement pre-flight: display-name pin/reps≥3/discriminating probe). New in 1.4.40: install-wizard queryable-wiki scaffold (INDEX + session-start read + R/W/C ingest). New in 1.4.39: auto-decorrelation (cross-family verifier sidecar recruitment) + video-ingest (capability-routed video ingestion). New in 1.4.x: verify-axis check-class taxonomy (mandatory-pass/measured/judged), no-reinvention Tier-0 inventory, 7-class failure taxonomy, Destructive-Op Gate, Wave-T (Temper), tier-floor governance, Mode D Model Notice, FC consent lane, default-Sonnet guidance. New in 1.3.0: public-surface-audit, field-harvest Mode B auto-trigger, 4-axis gate scope ext. Validated cross-CLI: Claude Code, Codex, Gemini.",
16
16
  "source": "./plugins/fh-meta"
17
17
  },
18
18
  {
19
19
  "name": "fh-commons",
20
- "version": "1.4.67",
20
+ "version": "1.4.69",
21
21
  "description": "Project-agnostic utility skills — 4 skills (convergence-loop · deliberation · mcp-circuit-breaker · token-budget-gate) + 1 agent (quench-challenger). Domain-independent utilities transplantable into any project.",
22
22
  "source": "./plugins/fh-commons"
23
23
  }
package/AGENTS.md CHANGED
@@ -117,7 +117,9 @@ So four things that govern behavior are not going to reach you on their own. Rea
117
117
  skip the gate — it just means you meet the block without knowing what it wants.
118
118
  ⚠️ If you run `templates/regression_guard.sh` (Axis 1) yourself, **`exit 0` means PASS *or* SKIP** —
119
119
  SKIP being "no staged file matched the gate's pathspec", which is *not checked*, not *checked and
120
- clean*. Read stdout for `REGRESSION_GUARD_RESULT=skip` to tell them apart. Judging by exit code
120
+ clean*. Prefer the typed file channel set `REGRESSION_GUARD_RESULT_FILE=<path>` and read
121
+ `result=pass|review|block|skip|error` from that file (stdout's `REGRESSION_GUARD_RESULT=` line is
122
+ the no-env fallback). Judging by exit code
121
123
  alone lets an unexamined change report as a pass (measured 2026-07-22: that is exactly what the
122
124
  commit hook did until it was fixed).
123
125
  2. **Company residency is absolute** (CLAUDE.md §Field-Harness Diagnostic): raw company source, secrets,
package/CATALOG.md CHANGED
@@ -8,6 +8,18 @@ AI reads this file first when searching past work. Open individual files for det
8
8
 
9
9
  <!-- Add entries in reverse date order (newest at top) -->
10
10
 
11
+ ### 2026-07-24 (2) | forge-harness · forge-wiki · llmwiki-template | #sister-links, #full-gate, #frontier-digest-angle-rule, #query-refresh, #mapping, #light-harness, #graph-engineering
12
+ **File:** knowledge/shared/dialogue/memory_intent_recall.md · knowledge/shared/harness-core/field_harness_diagnostic.md · knowledge/shared/harness-core/multi_model_sidecar_strategy.md · plugins/fh-meta/skills/harness-doctor/SKILL.md · plugins/fh-meta/skills/frontier-digest/SKILL_detail.md · tracks/forge-wiki/ · tracks/llmwiki-template/
13
+ Second half of the 07-24 hub session (PR #174 + two field repos). **Sister anchors executed under the full 4-axis gate** (the four links #173 deferred): GRACE into memory_intent_recall (instruction-graph boundary spelled out) and harness-doctor Step 2-E (C-layer maintenance-path ledger, ETCLOVG-style anchor-only), the 7-criteria rubric as a considered-and-held note with two re-check triggers in field_harness_diagnostic, and the wsff RL-incentive causal anchor ("maintainability has no fast oracle") beside the harness-ceiling principle in multi_model_sidecar_strategy. **frontier-digest repaired on two axes**: the stale arXiv canonical query replaced ("AI software testing"→"LLM agent evaluation", refresh criterion written down) and an Angle rule added to the synthesis prompt closing the methodology-angle silent drop (fh_signal 07-24 #3) — verified by a blind Sonnet known-pair sim (dual-angle item surfaced, single-angle item not forced) plus a quench-challenger pass (HIGH 0 · MED 2 · LOW 3; MED+2 LOW repaired in-branch). **Two sibling repos mapped and light-harnessed** (forge-wiki = chamber run #9's first EMIT, public; llmwiki-template = its company-side private twin): tracks/ dirs, session rules, .claudeignore — env card and MCP gating skipped by judgment (residency / no external mount); both merged (forge-wiki #4, llmwiki-template #2), llmwiki's CLAUDE.md kept operator-local. Positioning decision recorded in both tracks: **a wiki that sits under the harness** (Harness ⊃ context/knowledge component) — "wiki" is the outward word, "harness knowledge layer" the architecture coordinate.
14
+ - Decision: first live measurement of the Angle rule and the new query is the next 09:00 digest run — manifest predictions pinned; npm republish proposed at close rather than auto-published; forge-wiki merged its hub-linked CLAUDE.md publicly by operator approval.
15
+ - Open: ETCLOVG citation's operator-local label retrofit; wsff follow-up (design FH's own deep-clarify before/after measurement) unstarted; Graph-layer chamber candidate maturing with multi-source anchors; company handoff (qasp-preflight→mate PR workflow, 07-25) carried to next session.
16
+
17
+ ### 2026-07-24 | forge-harness | #sister-asset, #grace, #context-quality-rubric, #graph-engineering, #judged-vs-measured, #frontier-digest
18
+ **File:** tracks/_audit/session_2026_07_24_grace-context-rubric.md · tracks/_meta/fh_signal_2026-07-24_frontier-digest.md
19
+ Bundled sister-asset triage closing the 10-day GRACE execution lag, plus the 07-24 digest chain. **GRACE (arXiv:2607.09175)** registered as an A-tier sister: typed-semantic-graph context maintenance with scoped verification (validate only the local typed neighborhood of modified nodes). Import candidates: neighborhood-first consistency checking for memory-hygiene/verify-bidirectional (a cost ceiling on the "re-grep everything" propagation rule), and the checkpoint-incremental-reconstruction shape as an external anchor for delta-update discipline. Category boundary held explicitly: GRACE's instruction graph ≠ the execution-orchestration Graph layer (chamber candidate) ≠ the memory recall graph — three different categories, not one "graph" asset. **Context-quality 7-criteria rubric (arXiv:2607.14275)** verdict: HOLD — scoring runs on ProofAgent-Harness multi-juror consensus, i.e. judged-not-mechanical, failing the digest's stated adoption precondition (mechanically scoreable on a known pair); re-check triggers named (deterministic rubric ships, or token-efficiency/tool-schema subset proves mechanizable). **Graph engineering** upgraded from n=1 video to multi-source convergence (AI Builder Club 4-question graph-vs-loop discriminator · TrueFoundry 7 governance requirements — delta for FH is typed run-identifier propagation only). **wsff.md (humanlayer, Dex) triaged same-pass** after full read: the digest's claimed absorbable unit — a "review burden hours→minutes measurement design" — does **not exist in the source** (its quantified content is the Faros AI correlation dataset, self-caveated by the author as "correlation signal, not smoking gun"; the front-loading benefit is an unmeasured personal assertion), so the import downgrades to motivation for FH to design its own deep-clarify before/after measurement. Its floor-vs-ceiling thesis dedups against the existing harness-ceiling principle; the genuinely new increments are the RL-incentive causal argument ("maintainability has no fast oracle, so RL cannot reward it" — the sharpest external anchor for why the HITL floor is structural, not transitional) and the Faros correlation numbers with caveat inherited.
20
+ - Decision: rubric lens NOT adopted (judge-only as shipped); wsff absorbed as two anchors, not doctrine (digest overclaim corrected in the audit record); knowledge/-file sister links deferred to a full-gate Mode D session (citation tokens trigger the substantive carve-out); effort A/B Window-2 resumption deferred to post-Saturday by operator.
21
+ - Open: 4 sister cross-links pending (memory_intent_recall · field_harness_diagnostic · harness-doctor 2-E · harness-ceiling anchor); digest→execution return-path gap still open as signal; GRACE ships no code — mechanism anchor only.
22
+
11
23
  ### 2026-07-22 (2) | forge-harness · qasp · pmh | #weekly-audit, #entrypoint-drift, #gate-fail-open, #union-silent-drop, #instrument-attribution, #npm-release
12
24
  **File:** tracks/_audit/weekly_audit_2026-07-22.md · AGENTS.md §Non-Claude runtimes item 4 · templates/regression_guard.sh · (qasp) src/api/ensemble.py · (pmh) AGENTS.md §Orchestration Gates
13
25
  Weekly audit (07-15~07-22) plus the three cross-repo fixes it surfaced. **Audit's largest finding was a card claim that was false**: the session card's red-flag "frontier-digest job not running — zero logs, zero output" did not survive a hand check (14/14 launchd fires, 12/14 outputs, that day's digest present at 09:03). The real defect is a 14.3% output-miss whose two instances both die on `Connection closed mid-response`, and whose 07-18 retry+watchdog fix engaged **neither mechanism** on its first failure day — recorded as unfixed, root cause not isolated. Card-vs-reality drift reached the N=3 recurrence threshold, so the prescription is a mechanical probe rather than another habit rule. **Entry-point drift** closed in both harnesses (FH PR #163, field meta-harness PR #25): a runtime-default governor rule had landed only in the Claude-native entry point, invisible to every other runtime. The target-tier blind sim rejected the first port — the *wording*, carried over verbatim, read as coercive to a cold third-party reader and was reproduced 3/3, once escalating to "I would flag this to the repo owner". Rewritten as a scope statement; converged 2/2. **Gate fail-open** (PR #165): Axis 1's pathspec omitted three asset classes the canonical rule declares covered, and the resulting not-checked state rendered as a green PASS; adversarial review then caught the fix's own over-blocking (a one-word prose edit produced a hard block) before it could train `--no-verify`. **Field harness UNION** shipped a silent-drop path: two divergent fence-unwrap implementations meant a response accepted by the single backend was discarded whole by the ensemble — in a component whose entire justification is not discarding findings. Published `@chrono-meta/fh-gate@1.4.66`.
@@ -207,3 +207,4 @@ constellations + the convergent/divergent split — all at prose scale, no new s
207
207
  - `memory-hygiene` (skill) — staleness pass; link-evolution (A-MEM) and the §D.8 store-side injection filter live here
208
208
  - `plugins/fh-meta/agents/persona-innovator` (the fh-meta agent) — the divergent-mode consumer this substrate unlocks
209
209
  - `knowledge/shared/rules/operational_adaptation.md` — the UAP is itself intent-recalled; shared tier-dependence rationale
210
+ - GRACE (arXiv:2607.09175) — external sister, *update-side* counterpart to this doc's recall-side 1-hop traversal: maintains agent instructions as a typed semantic graph and verifies edits **only within the modified node's local typed neighborhood** (instruction-graph substrate — mechanism-level analogy, not this memory graph). Mechanism anchor only (no code shipped); cross-audit: `tracks/_audit/session_2026_07_24_grace-context-rubric.md` (operator-local record)
@@ -23,6 +23,14 @@ is HITL — the diagnostic **proposes**, never auto-edits.
23
23
  | **Verdict/gate degrade** | `scripts/degrade_direction_scan.sh` | a field verdict/gate helper that degrades toward permissive (advisory pre-screen) |
24
24
  | **Loop-readiness** (황민호 loop-eng 5-question lens, 2026-07-10 — detail home: `loop_engineering.md`, incl. the FH loop inventory + design-time discipline) | *Loop-runtime axis — net-new vs Structure* (harness-doctor scans static form; this scans whether the path closes a loop). **Mechanical grep**: `/goal-quench`·`/loop` wiring present · check-class token declared. **Judged**: is the persisted state (card/handoff/memory) actually reloaded · is the declared check-class anchored, not judged-only · does the path halt. Done-When *presence* → see Structure row (no double-grep). **Adversarial pair** (for the judged sub-checks — decorrelated, behavior-vs-checklist): a target-tier blind sim that *runs* the path and observes whether it halts + persists, rather than re-checklisting it (the harness litmus shares this lens's axis, so it is a co-lens, not the adversary). | an agent path that *runs but doesn't loop*: no completion criterion (Done-When absent), judged-only validation with no anchor, no halt/budget guard (runaway/cost), or no state carried to the next run — the 5 questions (initiate · complete · validate · halt · persist) with 0 answers |
25
25
 
26
+ > **Considered-and-held, 7th-lens candidate (2026-07-24)**: the context-quality 7-criteria rubric
27
+ > (arXiv:2607.14275 — role clarity · guardrail coverage · instruction consistency · tool schema ·
28
+ > grounding sufficiency · injection hardening · token efficiency) is **not** adopted as a lens: its
29
+ > shipped scoring is ProofAgent-Harness multi-juror consensus — judge-only, failing the measured bar
30
+ > this table holds. Re-check triggers: ⓐ a deterministic scoring rubric ships upstream, or ⓑ the
31
+ > token-efficiency / tool-schema subset proves mechanically scoreable on a known pair. Do not
32
+ > re-propose without one of the two. Cross-audit: `tracks/_audit/session_2026_07_24_grace-context-rubric.md` (operator-local record).
33
+
26
34
  ## Output
27
35
 
28
36
  One ranked list, `M` (must-fix) / `S` (should-fix) / `R` (recommended) — same tiering as
@@ -136,6 +136,11 @@ FH is a **multi-runtime harness with explicit runtime authority**, not Claude-on
136
136
 
137
137
  A sidecar is recruited where it adds *decorrelated* value; its ceiling is still set by the governor — the
138
138
  harness lifts a model to its own ceiling, it does not move it ([[feedback_harness_ceiling_principle]]).
139
+ External causal anchor for *why* the ceiling sits in the weights (wsff.md, HumanLayer
140
+ `advanced-context-engineering-for-coding-agents` repo, Dex 2026, triaged 2026-07-24): RL rewards are pass/fail in seconds while architectural-decay costs surface over
141
+ weeks — *"maintainability has no fast oracle, so we can't reward for it during RL"* — hence the
142
+ human-review floor is structural, not a transitional patch. (Its Faros AI numbers are correlation-only;
143
+ the author's own caveat travels with any citation.)
139
144
  "Aggressive" Codex/Gemini use is bounded by the fit task-class above, never a blanket main-seat swap.
140
145
 
141
146
  ### Vendor-native harness — the main layer stays multi-CLI, never Copilot-consolidated
@@ -109,7 +109,9 @@ operator's residual at merge review).
109
109
  > ⚠️ **"Axis 1 PASS" 는 종료코드로 판정하지 마라.** `regression_guard.sh` 의 `exit 0` 은
110
110
  > **PASS 와 SKIP 을 둘 다** 뜻한다 — SKIP 은 "게이트 pathspec 에 걸린 파일이 없었다"이지
111
111
  > "검사했고 괜찮다"가 아니다. 무인 루틴이 종료코드만 보면 **미검사가 draft PR 을 unblock 한다.**
112
- > 구분: stdout 에 `REGRESSION_GUARD_RESULT=skip` 있으면 SKIP 이다 경우 Axis 1 은
112
+ > 구분: `REGRESSION_GUARD_RESULT_FILE=<path>` 설정하고 파일의 `result=` 읽어라
113
+ > typed 채널이 정본이고 stdout `REGRESSION_GUARD_RESULT=` 줄은 env 를 못 쓸 때 폴백이다.
114
+ > `result=skip` 이면 SKIP — 그 경우 Axis 1 은
113
115
  > *통과가 아니라 미실행*이므로 Axes 2–3 과 같은 운영자 잔여로 올려라.
114
116
  > (2026-07-22 실측: `pre-commit` 이 정확히 이 혼동을 일으켜 AGENTS.md 변경이 `✅ PASS` 를
115
117
  > 받고 지나갔다. `pre-commit` 은 배선 완료 · 이 루틴을 포함한 나머지 소비자는 **미배선 잔여**.)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chrono-meta/fh-gate",
3
- "version": "1.4.67",
3
+ "version": "1.4.69",
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.67",
3
+ "version": "1.4.69",
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.67",
3
+ "version": "1.4.69",
4
4
  "engines": {
5
5
  "claudeCode": ">=1.0.0"
6
6
  },
@@ -26,7 +26,10 @@ Collection criteria: score > 10, keyword-relevant items only. Max 15 items.
26
26
  ### arxiv
27
27
 
28
28
  ```bash
29
- for Q in "multi-agent LLM" "AI software testing" "context engineering agents"; do
29
+ # query refresh 2026-07-24: "AI software testing" (exact-phrase) went stale — newest hit was Sept 2024
30
+ # (07-24 run instrument note). Replaced with "LLM agent evaluation"; refresh again when a query's
31
+ # newest hit is >6 months old two runs in a row.
32
+ for Q in "multi-agent LLM" "LLM agent evaluation" "context engineering agents"; do
30
33
  curl -s --max-time 8 \
31
34
  "https://export.arxiv.org/api/query?search_query=all:${Q// /+}&max_results=2&sortBy=submittedDate&sortOrder=descending"
32
35
  done
@@ -75,6 +78,10 @@ Resolve a *video-harvest* capability via the Sidecar Engine Resolution Protocol
75
78
 
76
79
  ## §Synthesis-Prompt
77
80
 
81
+ > Angle-rule provenance: added 2026-07-24 (fh_signal 07-24 #3 — Bun-Rust methodology-angle silent
82
+ > drop; scope limited to collection-filtered items per Axis-2 challenger cost finding). Provenance
83
+ > lives here, outside the fenced prompt — the synthesis model gets only the bare rule.
84
+
78
85
  ### With Anthropic API
79
86
 
80
87
  ```
@@ -91,6 +98,12 @@ FH Context:
91
98
 
92
99
  [Insert collected data]
93
100
 
101
+ Angle rule: an item you reject on its primary angle (e.g. substrate/model/runtime news),
102
+ if it passed collection filtering, gets ONE explicit second look before discarding: does it
103
+ carry a separate methodology/harness angle (orchestration pattern, workflow scale,
104
+ operational practice)? If yes, judge that angle on its own merits; if no, discard silently —
105
+ no output line about the discard, and never force an angle that isn't there.
106
+
94
107
  Output format:
95
108
  ## This Week's Frontier Highlights (max 3)
96
109
  **[Title]** — FH connection point in one sentence
@@ -49,6 +49,12 @@ coverage lens** — not the paper's scoring model. A **coverage checklist, not a
49
49
  harness needs all seven (a read-only doc harness needs no Execution or Governance). For each layer ask
50
50
  "is there an asset covering it?"; surface gaps, let the human judge if each is real for *this* harness.
51
51
 
52
+ > **Orthogonal-sister ledger (same adoption rule — anchor only, no scoring model imported)**:
53
+ > GRACE (arXiv:2607.09175, cross-audit `tracks/_audit/session_2026_07_24_grace-context-rubric.md`,
54
+ > operator-local record) — typed-semantic-graph **scoped verification** for the **C (Context) layer's
55
+ > maintenance path**: edits validated only within the modified node's local typed neighborhood. Cite
56
+ > when a C-layer gap involves *how context updates are verified*, not just whether context assets exist.
57
+
52
58
  | Layer | Covers | Typical FH asset | If the gap is judged real → priority hint |
53
59
  |---|---|---|---|
54
60
  | **E** Execution | isolated/reproducible env, bounded autonomy | Agent-dispatch isolation · goal-quench budget | advisory |
@@ -115,7 +121,6 @@ size instrument* is read. The footprint rows below apply to **both** scopes and
115
121
  | **Pointer-illusion**: a CLAUDE.md "detail/detailed procedure" pointer whose target is itself an always-loaded `.claude/rules/*.md` | S-tier — the split saves zero context (rules/ auto-loads regardless); move the target out of auto-load, keep the pointer |
116
122
  | weekly_audit 14~30 days elapsed | S-tier |
117
123
  | weekly_audit 30+ days elapsed | M-tier |
118
- | `tracks/_meta/*.md` **reference assets** (excluding dated chronological records — `fh_completed_*` · `fh_signal_*` · `frontier_digest_*` · `session_*` · `weekly_audit_*` · `*_log_*`, whose date lives in the filename by design) missing **both** a role/type tag and a version/date stamp | R-tier — taxonomy gap, not urgent. ⚠️ **Measured FP rate before you act on this**: run against FH itself 2026-07-21 it flagged **99/161 (61%)** un-narrowed and **19/26 (73%)** after narrowing — a row that flags most of a directory is noise, not signal. ⚠️ **No consumer**: grep found **no skill that reads `role`/`type` from these files**. Until one exists this is taxonomy for taxonomy's sake — treat as an inventory observation, never escalate |
119
124
 
120
125
  **Per-unit ≠ aggregate — do not slide between them.** "Every section earns its scope" (the per-unit
121
126
  doctrine test) and "the always-loaded total is affordable" (the budget test) are **different questions, and
@@ -230,51 +235,11 @@ FAIL, the safe direction); and the scope test reads directory *existence*, so th
230
235
  field→meta (acceptable: the operator names the target, and the footprint rows apply to **both** scopes
231
236
  regardless — but it does skip the field-only line rows).
232
237
 
233
- **Context-File Taxonomy check** (mechanical grep, R-tier only a coverage lens, not a mandate): L1 (Step 2)
234
- checks `CLAUDE.md` / `.claudeignore` / `.claude/` existence, but nothing checks `tracks/_meta/*.md` context-file
235
- existence or taxonomy this adds both. Note: `tpa_schema.md` classifies this file class (`session_card`) as
236
- **low** risk / "ephemeral state, low blast radius" most `tracks/_meta/*.md` files are untagged by design, and
237
- that is expected, not a defect. This check surfaces untagged files for optional triage on the subset that
238
- function as durable references (e.g. `reference_next_session_starter.md`); it is not a mandate that every file
239
- in the directory carry a tag.
240
-
241
- Scan for two markers per file — a role/type tag (`role:` or `type:` in frontmatter, or a leading `# Role:`
242
- line) and a version/date stamp (a `YYYY-MM-DD` date or a `version:` frontmatter key, either in the first 10
243
- lines). A file missing either marker is untagged — report the file list and count; do not escalate past R
244
- without a human judging whether the specific file's staleness is actually a problem.
245
-
246
- ```bash
247
- # find | while, not a glob — same reason as the always-loaded footprint scan above: an unmatched
248
- # glob aborts under zsh, and a silent zero-match run must still report, not disappear.
249
- TARGET="${1:?pass the target root explicitly — cwd is not the target}"
250
- total=0; untagged=0
251
- while IFS= read -r f; do
252
- [ -n "$f" ] || continue
253
- total=$((total + 1))
254
- # 연대기 기록물은 파일명에 날짜가 있는 것이 설계다 — taxonomy 대상이 아니다(FP 원인의 78/99)
255
- case "$(basename "$f")" in fh_completed_*|fh_signal_*|frontier_digest_*|session_*|weekly_audit_*|*_log_*) continue ;; esac
256
- grep -qE '^(role|type):|^# ?Role:' "$f" && tag=yes || tag=no
257
- head -10 "$f" | grep -qE '[0-9]{4}-[0-9]{2}-[0-9]{2}|^version:' && stamp=yes || stamp=no
258
- if [ "$tag" = no ] || [ "$stamp" = no ]; then
259
- untagged=$((untagged + 1))
260
- echo "UNTAGGED: $f (role-tag=$tag version-stamp=$stamp)"
261
- fi
262
- done < <(find "$TARGET/tracks/_meta" -maxdepth 1 -name '*.md' 2>/dev/null)
263
- echo "context-file-taxonomy: $untagged untagged of $total files"
264
- ```
265
-
266
- **Named residuals of this scan**: `head -10` can miss a stamp in unusually long frontmatter; `^type:` is not
267
- fence-scoped, so a stray body line starting `type:` outside frontmatter false-positives `tag=yes` — both push
268
- toward under-reporting, not over-reporting.
269
-
270
- Origin (2026-07-20, frontier-auto): surfaced via [Frontier Digest 2026-07-14](https://github.com/chrono-meta/forge-harness/issues/102#issuecomment-4964058520),
271
- which described a durable-context-file pattern (role-tagged, versioned files shared across 50+ specialized
272
- agents) citing `aimultiple.com/llm-orchestration` as its source. A `/phantom-quench` pass on 2026-07-20 found
273
- that page's retrievable content does not actually discuss this pattern — the digest's citation is mis-attributed
274
- and no verified primary source has been located. The qualitative taxonomy idea (role/version tagging on context
275
- files) is adopted here on the digest's description alone and is `SPECULATIVE` per H1/H1-b until a verified
276
- primary source is found; the "40% fewer tool calls" figure the digest also reported is not cited anywhere in
277
- this check for the same reason.
238
+ <!-- Context-File Taxonomy check removed 2026-07-22/23 (#153 weekly-audit #6 decision): consumer
239
+ re-measure = 0 skills read role:/type: from these files; measured FP 99/161 (61%) un-narrowed,
240
+ 19/26 (73%) after narrowing; origin citation was mis-attributed (SPECULATIVE, no primary source).
241
+ Decorative unit per doctrine FP figures preserved in the removal commit message as the
242
+ regression anchor. Re-adding requires a named consumer first. -->
278
243
 
279
244
  ### Step 3-L. Language Lint (`--lint` mode only)
280
245
 
@@ -466,9 +431,13 @@ Verifies that prescription application didn't strip operational content. Run aft
466
431
  | F6 Line reduction ≥30% | S |
467
432
  | F7 Bash block syntax (bash -n parse) | M if net increase in bad blocks |
468
433
 
469
- Verdict: ✅ PASS (0M 0S) · ⚠️ REVIEW (0M 1+S) · ❌ BLOCK (1+M).
434
+ Verdict: ✅ PASS (0M 0S) · ⚠️ REVIEW (0M 1+S) · ❌ BLOCK (1+M) · ⏭️ SKIP (검사 대상 0 — **PASS 가 아니다**).
470
435
 
471
436
  Implementation: `bash templates/regression_guard.sh` (compare vs main) or `bash templates/regression_guard.sh BASE HEAD`.
437
+ **Verdict 는 종료코드가 아니라 typed 채널로 읽어라** — `exit 0` 은 pass 와 skip 둘 다다(2026-07-23):
438
+ `REGRESSION_GUARD_RESULT_FILE=/tmp/rg.$$ bash templates/regression_guard.sh …` 후 파일의
439
+ `result=pass|review|block|skip` 를 판정에 쓴다. `skip` = 미검사 — PASS 로 보고하지 말고 "Axis 1
440
+ 해당 없음(대상 파일 0)" 으로 보고한다.
472
441
 
473
442
  > **Detail**: See `SKILL_detail.md §Step-1-3` — bash scripts for Steps 1~6 (L1~L4 diagnostics) — read when running the diagnostic commands.
474
443
 
@@ -120,6 +120,11 @@ All 5 Steps completed
120
120
  ```
121
121
 
122
122
  **→ Mandatory when PR contains SKILL.md / rules / templates changes: `bash templates/regression_guard.sh`** — run Axis 1 (backward check) before merge recommendation is issued. If regression_guard exits with M-tier block, merge recommendation must change to ❌ regardless of other checks.
123
+ **Read the verdict from the typed channel, not the exit code** — `exit 0` means pass **or** skip
124
+ (not-checked). Run with `REGRESSION_GUARD_RESULT_FILE=/tmp/rg.$$` and read `result=` from that file:
125
+ `skip` means Axis 1 **did not examine** this PR (no matching file) — record it as "Axis 1 N/A", never
126
+ as a green check. A merge recommendation that cites an unexamined Axis 1 as PASS is the 2026-07-22
127
+ fail-open class.
123
128
 
124
129
  ## References
125
130