@chrono-meta/fh-gate 1.4.15 → 1.4.17
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/CATALOG.md +1 -1
- package/CLAUDE.md +20 -3
- package/package.json +1 -1
- package/plugins/fh-meta/agents/expert.md +2 -2
- package/plugins/fh-meta/skills/context-doctor/SKILL.md +10 -96
- package/plugins/fh-meta/skills/context-doctor/SKILL_detail.md +114 -0
- package/plugins/fh-meta/skills/field-harvest/SKILL.md +23 -163
- package/plugins/fh-meta/skills/field-harvest/SKILL_detail.md +189 -0
- package/plugins/fh-meta/skills/frontier-digest/SKILL.md +23 -167
- package/plugins/fh-meta/skills/frontier-digest/SKILL_detail.md +177 -0
- package/plugins/fh-meta/skills/goal-quench/SKILL.md +42 -255
- package/plugins/fh-meta/skills/goal-quench/SKILL_detail.md +249 -0
- package/plugins/fh-meta/skills/hub-cc-pr-reviewer/SKILL.md +1 -1
- package/plugins/fh-meta/skills/install-wizard/SKILL.md +35 -420
- package/plugins/fh-meta/skills/install-wizard/SKILL_detail.md +432 -0
- package/plugins/fh-meta/skills/phantom-quench/SKILL.md +5 -3
- package/plugins/fh-meta/skills/pipeline-conductor/SKILL.md +19 -179
- package/plugins/fh-meta/skills/pipeline-conductor/SKILL_detail.md +149 -0
- package/scripts/selfcheck.sh +21 -0
- package/plugins/fh-meta/skills/source-grounding-audit/SKILL.md +0 -42
|
@@ -49,11 +49,7 @@ Basis: [one-line summary of deciding factor]
|
|
|
49
49
|
| `FAIL` | Blocking issue found | Halt chain, surface to user immediately |
|
|
50
50
|
| `ESCALATE` | Ambiguous state requiring human judgment | Pause chain, present three options to user |
|
|
51
51
|
|
|
52
|
-
`CONDITIONAL_PASS` means proceed, not skip
|
|
53
|
-
|
|
54
|
-
`FAIL` halts the chain. The user decides whether to fix-and-resume or abandon the sweep.
|
|
55
|
-
|
|
56
|
-
`ESCALATE` pauses the chain. The user chooses one of three paths — the chain resumes or closes based on their decision.
|
|
52
|
+
`CONDITIONAL_PASS` means proceed, not skip — captured items accumulate into the final report's Pending section and must be addressed before the sweep is considered clean. `FAIL` halts the chain (user decides fix-and-resume or abandon). `ESCALATE` pauses the chain pending the user's choice.
|
|
57
53
|
|
|
58
54
|
### ESCALATE Handling
|
|
59
55
|
|
|
@@ -72,21 +68,17 @@ When any step returns `ESCALATE`, present:
|
|
|
72
68
|
|
|
73
69
|
## Step 0. Scope, Mode, and Translation
|
|
74
70
|
|
|
75
|
-
Determine
|
|
71
|
+
Determine before running any pipeline step:
|
|
76
72
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
- Full harness: all assets under `plugins/` and `templates/`
|
|
73
|
+
1. **Scope**: single skill (path to `SKILL.md`) · specific asset (file/directory) · full harness (`plugins/` + `templates/`)
|
|
74
|
+
2. **Mode**: `--quick`, `--no-sim`, or `--full` (default)
|
|
75
|
+
3. **Branch**: current git branch (used for regression guard and report header)
|
|
81
76
|
|
|
82
|
-
|
|
77
|
+
If scope is not specified, ask: *"What should I sweep? (e.g., a specific skill path, a directory, or the full harness)"* **Do not infer scope** — a wrong scope produces misleading verdicts.
|
|
83
78
|
|
|
84
|
-
|
|
79
|
+
Output the sweep plan and get Y/N confirmation before running.
|
|
85
80
|
|
|
86
|
-
|
|
87
|
-
> "What should I sweep? (e.g., a specific skill path, a directory, or the full harness)"
|
|
88
|
-
|
|
89
|
-
Do not infer scope — a wrong scope produces misleading verdicts.
|
|
81
|
+
> **Detail**: See `SKILL_detail.md §Output-Formats` — sweep plan block, per-step verdict blocks, aggregated report template — read when emitting any step output.
|
|
90
82
|
|
|
91
83
|
### Scope Translation Table
|
|
92
84
|
|
|
@@ -98,19 +90,6 @@ The four constituent skills use heterogeneous scope models. Translate the pipeli
|
|
|
98
90
|
| Specific directory | Check session findings in this domain | Attack all SKILL.md files in directory | Back-trace all claims in directory | Area A + Area D on the domain |
|
|
99
91
|
| Full harness | Check all recent session findings | Attack all harness assets under scope | Back-trace all claims across harness | Area A + Area B + Area D |
|
|
100
92
|
|
|
101
|
-
### Step 0 Output
|
|
102
|
-
|
|
103
|
-
```
|
|
104
|
-
pipeline-conductor — Sweep Plan
|
|
105
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
106
|
-
Scope: {scope}
|
|
107
|
-
Mode: {--full / --quick / --no-sim}
|
|
108
|
-
Branch: {branch name}
|
|
109
|
-
Steps: {1 → 2 → 3 → 4 / 2 → 3 / 1 → 2 → 3}
|
|
110
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
111
|
-
Proceed? (Y: run / N: cancel)
|
|
112
|
-
```
|
|
113
|
-
|
|
114
93
|
---
|
|
115
94
|
|
|
116
95
|
## Step 0.5. return-path-gate — Pre-flight Chain Audit
|
|
@@ -125,21 +104,7 @@ Run `/return-path-gate --skill [scope]`.
|
|
|
125
104
|
| MEDIUM/LOW severity OPEN chains only | `CONDITIONAL_PASS` | Proceed; capture in Pending |
|
|
126
105
|
| 1+ HIGH severity OPEN chains | `FAIL` | **Halt sweep** — fix chains before running pipeline |
|
|
127
106
|
|
|
128
|
-
**
|
|
129
|
-
|
|
130
|
-
```
|
|
131
|
-
[Step 0.5 — return-path-gate]
|
|
132
|
-
Verdict: FAIL
|
|
133
|
-
Basis: HIGH severity OPEN chain(s) — inter-step verdicts unreliable with broken chains
|
|
134
|
-
Open: [list of OPEN chains with severity]
|
|
135
|
-
|
|
136
|
-
Fix OPEN chains then re-run pipeline-conductor.
|
|
137
|
-
Skip? (S: override gate — records as degraded, disqualifies CLEAN (--full) status)
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
`S` (skip) is available but must be declared explicitly. Skipping records as `degraded: return-path-gate (user override)` in the final report and the sweep cannot reach `CLEAN (--full)` status regardless of subsequent step verdicts.
|
|
141
|
-
|
|
142
|
-
**On CONDITIONAL_PASS (MEDIUM/LOW only)**: Capture OPEN chains in Pending. Continue to Step 1.
|
|
107
|
+
**Skip override rule**: `S` (skip on FAIL) is available but must be declared explicitly. Skipping records as `degraded: return-path-gate (user override)` in the final report and the sweep **cannot reach `CLEAN (--full)` status** regardless of subsequent step verdicts.
|
|
143
108
|
|
|
144
109
|
---
|
|
145
110
|
|
|
@@ -147,16 +112,7 @@ Skip? (S: override gate — records as degraded, disqualifies CLEAN (--full) sta
|
|
|
147
112
|
|
|
148
113
|
> Skipped in `--quick` mode.
|
|
149
114
|
|
|
150
|
-
Check for harvest-loop signals in the current session
|
|
151
|
-
|
|
152
|
-
**What it checks**: Whether recent session learnings have been absorbed, whether duplicate skill candidates are pending, whether knowledge loop integrity issues exist in the current session.
|
|
153
|
-
|
|
154
|
-
**Invocation path**:
|
|
155
|
-
- If harvest-loop ran in this session: read its output and incorporate findings.
|
|
156
|
-
- If harvest-loop did not run in this session: output `CONDITIONAL_PASS` — knowledge loop not validated in this sweep.
|
|
157
|
-
- If harvest-loop auto-skipped (fewer than 3 patterns found): output `CONDITIONAL_PASS` — sub-threshold, knowledge loop not validated.
|
|
158
|
-
|
|
159
|
-
**Verdict criteria**:
|
|
115
|
+
Check for harvest-loop signals in the current session — read session context rather than invoking harvest-loop directly (a mid-sweep invocation would conflict with the sweep's own pattern collection).
|
|
160
116
|
|
|
161
117
|
| harvest-loop result | pipeline-conductor verdict |
|
|
162
118
|
|---|---|
|
|
@@ -166,35 +122,19 @@ Check for harvest-loop signals in the current session. pipeline-conductor reads
|
|
|
166
122
|
| Did not run this session | `CONDITIONAL_PASS` — note: knowledge loop not validated |
|
|
167
123
|
| Auto-skipped (< 3 patterns) | `CONDITIONAL_PASS` — note: sub-threshold, not validated |
|
|
168
124
|
|
|
169
|
-
**
|
|
170
|
-
> "harvest-loop reported a blocking issue. Fix and re-run Step 1, or abort the sweep?"
|
|
171
|
-
|
|
172
|
-
**On CONDITIONAL_PASS**: Log all pending patterns or unvalidated notes. Continue to Step 2.
|
|
173
|
-
|
|
174
|
-
```
|
|
175
|
-
[Step 1 — harvest-loop]
|
|
176
|
-
Verdict: {verdict}
|
|
177
|
-
Basis: {one-line}
|
|
178
|
-
Pending: {list of items if CONDITIONAL_PASS, else "none"}
|
|
179
|
-
```
|
|
125
|
+
> **Detail**: See `SKILL_detail.md §Execution-Notes` — harvest-loop invocation path, per-step FAIL prompts, Area B cadence bash, what-each-step-checks reference — read when executing Steps 1–4.
|
|
180
126
|
|
|
181
127
|
---
|
|
182
128
|
|
|
183
129
|
## Step 2. steel-quench — Adversarial Verification
|
|
184
130
|
|
|
185
|
-
Run steel-quench against the target scope.
|
|
186
|
-
|
|
187
|
-
**What it checks**: Design attack surface, trigger phrase collisions, over-engineered steps, self-declaration language, structural flaws surfaced by devil-advocate rounds.
|
|
188
|
-
|
|
189
|
-
**Invocation**: Run steel-quench in its standard mode. For `--quick`, this is the first step.
|
|
131
|
+
Run steel-quench against the target scope (for `--quick`, this is the first step).
|
|
190
132
|
|
|
191
133
|
**steel-quench severity vocabulary** (S/A/B grade — not M/S/R):
|
|
192
134
|
- **S-grade**: Immediate blocker — must fix before proceeding
|
|
193
135
|
- **A-grade**: Required before deployment — fix before external release
|
|
194
136
|
- **B-grade**: Improvement recommended — non-blocking
|
|
195
137
|
|
|
196
|
-
**Verdict criteria**:
|
|
197
|
-
|
|
198
138
|
| steel-quench result | pipeline-conductor verdict |
|
|
199
139
|
|---|---|
|
|
200
140
|
| 0 S-grade findings | `PASS` |
|
|
@@ -202,42 +142,19 @@ Run steel-quench against the target scope.
|
|
|
202
142
|
| 1+ S-grade findings | `FAIL` |
|
|
203
143
|
| Wave 4 (Meta-Aware Adversary) surfaces structural ambiguity | `ESCALATE` |
|
|
204
144
|
|
|
205
|
-
**On FAIL**: Output S-grade finding(s) from steel-quench. Ask:
|
|
206
|
-
> "steel-quench found a blocking issue. Fix and re-run Step 2, or abort the sweep?"
|
|
207
|
-
|
|
208
|
-
**On CONDITIONAL_PASS**: Capture A-grade and B-grade findings. Continue to Step 3.
|
|
209
|
-
|
|
210
|
-
```
|
|
211
|
-
[Step 2 — steel-quench]
|
|
212
|
-
Verdict: {verdict}
|
|
213
|
-
Basis: {one-line}
|
|
214
|
-
Findings:
|
|
215
|
-
S-grade: {count} — {top item or "none"}
|
|
216
|
-
A-grade: {count} — {top item or "none"}
|
|
217
|
-
B-grade: {count} — {top item or "none"}
|
|
218
|
-
```
|
|
219
|
-
|
|
220
145
|
---
|
|
221
146
|
|
|
222
147
|
## Step 3. phantom-quench — Phantom Claim Detection
|
|
223
148
|
|
|
224
|
-
Run phantom-quench
|
|
149
|
+
Run phantom-quench scoped to the same target as Steps 1 and 2.
|
|
225
150
|
|
|
226
|
-
**
|
|
227
|
-
|
|
228
|
-
**Invocation**: Run phantom-quench scoped to the same target as Steps 1 and 2.
|
|
229
|
-
|
|
230
|
-
**Load-bearing Phantom** (binary test — apply mechanically):
|
|
231
|
-
|
|
232
|
-
A Phantom is load-bearing if it appears in any of:
|
|
151
|
+
**Load-bearing Phantom** (binary test — apply mechanically). A Phantom is load-bearing if it appears in any of:
|
|
233
152
|
- `§Done When` section of the skill under audit
|
|
234
153
|
- Any numbered `§Step N` execution body
|
|
235
154
|
- `§Chains` with mandatory dispatch language (`→ Mandatory next`)
|
|
236
155
|
|
|
237
156
|
All other locations (§Triggers, advisory §Chains language, frontmatter description) are non-load-bearing by definition.
|
|
238
157
|
|
|
239
|
-
**Verdict criteria**:
|
|
240
|
-
|
|
241
158
|
| phantom-quench result | pipeline-conductor verdict |
|
|
242
159
|
|---|---|
|
|
243
160
|
| 0 Phantoms, all claims grounded | `PASS` |
|
|
@@ -245,40 +162,15 @@ All other locations (§Triggers, advisory §Chains language, frontmatter descrip
|
|
|
245
162
|
| 1+ load-bearing Phantoms | `FAIL` |
|
|
246
163
|
| Grounding ambiguous (source file exists but content unclear) | `ESCALATE` |
|
|
247
164
|
|
|
248
|
-
**On FAIL**: Output the load-bearing Phantom(s). Ask:
|
|
249
|
-
> "phantom-quench found a load-bearing Phantom claim. Fix and re-run Step 3, or abort the sweep?"
|
|
250
|
-
|
|
251
|
-
**On CONDITIONAL_PASS**: Capture non-load-bearing Phantoms. Continue to Step 4.
|
|
252
|
-
|
|
253
|
-
```
|
|
254
|
-
[Step 3 — phantom-quench]
|
|
255
|
-
Verdict: {verdict}
|
|
256
|
-
Basis: {one-line}
|
|
257
|
-
Phantoms: {count} — {load-bearing: Y/N} — {top item or "none"}
|
|
258
|
-
```
|
|
259
|
-
|
|
260
165
|
---
|
|
261
166
|
|
|
262
167
|
## Step 4. sim-conductor — Pre-Deploy Simulation
|
|
263
168
|
|
|
264
169
|
> Skipped in `--quick` and `--no-sim` modes.
|
|
265
170
|
|
|
266
|
-
Run sim-conductor against the target scope.
|
|
267
|
-
|
|
268
|
-
**What it checks**: Transferability to external users, new-user entry point friction, power-user edge cases, artifact quality from an outside perspective.
|
|
269
|
-
|
|
270
|
-
**Area B cadence check** (sim-conductor Area B has a once-per-week frequency limit):
|
|
271
|
-
|
|
272
|
-
```bash
|
|
273
|
-
find tracks/_meta/ -name "*sim_conductor*" -newer "$(date -v-7d +%Y-%m-%d 2>/dev/null || date -d '7 days ago' +%Y-%m-%d 2>/dev/null)" 2>/dev/null | head -1
|
|
274
|
-
```
|
|
275
|
-
|
|
276
|
-
- Result found (Area B ran within 7 days): skip Area B → run Area A + Area D only. Capture as `CONDITIONAL_PASS` with note: "Area B skipped — within 7-day cadence limit."
|
|
277
|
-
- No result (Area B not run within 7 days): run Area A + Area B + Area D (scope permitting).
|
|
171
|
+
Run sim-conductor against the target scope: Area A + Area B (if cadence allows) + Area D (if scope is a specific SKILL.md or document).
|
|
278
172
|
|
|
279
|
-
**
|
|
280
|
-
|
|
281
|
-
**Verdict criteria**:
|
|
173
|
+
**Area B cadence rule (behavioral)**: Area B has a once-per-week frequency limit. If Area B ran within 7 days (detection bash in §Execution-Notes) → skip Area B, run Area A + D only, capture as `CONDITIONAL_PASS` with note "Area B skipped — within 7-day cadence limit."
|
|
282
174
|
|
|
283
175
|
| sim-conductor result | pipeline-conductor verdict |
|
|
284
176
|
|---|---|
|
|
@@ -287,51 +179,11 @@ find tracks/_meta/ -name "*sim_conductor*" -newer "$(date -v-7d +%Y-%m-%d 2>/dev
|
|
|
287
179
|
| 1+ M-tier findings from any persona | `FAIL` |
|
|
288
180
|
| Persona results conflict, resolution requires human judgment | `ESCALATE` |
|
|
289
181
|
|
|
290
|
-
**On FAIL**: Output M-tier finding(s) from sim-conductor. Ask:
|
|
291
|
-
> "sim-conductor found a blocking issue. Fix and re-run Step 4, or accept findings and close with FAIL status?"
|
|
292
|
-
|
|
293
|
-
**On CONDITIONAL_PASS**: Capture S/R-tier findings. Proceed to final report.
|
|
294
|
-
|
|
295
|
-
```
|
|
296
|
-
[Step 4 — sim-conductor]
|
|
297
|
-
Verdict: {verdict}
|
|
298
|
-
Basis: {one-line}
|
|
299
|
-
Area B: {ran / skipped — cadence limit}
|
|
300
|
-
Findings:
|
|
301
|
-
M: {count} — {top item or "none"}
|
|
302
|
-
S: {count} — {top item or "none"}
|
|
303
|
-
R: {count} — {top item or "none"}
|
|
304
|
-
```
|
|
305
|
-
|
|
306
182
|
---
|
|
307
183
|
|
|
308
184
|
## Step 5. Aggregated Report
|
|
309
185
|
|
|
310
|
-
After all steps complete (or after chain halt), output the aggregated report.
|
|
311
|
-
|
|
312
|
-
```
|
|
313
|
-
pipeline-conductor — Sweep Report
|
|
314
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
315
|
-
Scope: {scope}
|
|
316
|
-
Mode: {mode}
|
|
317
|
-
Branch: {branch}
|
|
318
|
-
Date: {YYYY-MM-DD}
|
|
319
|
-
|
|
320
|
-
Step 0.5 — return-path-gate: {PASS / CONDITIONAL_PASS / FAIL / SKIPPED / degraded}
|
|
321
|
-
Step 1 — harvest-loop: {PASS / CONDITIONAL_PASS / FAIL / ESCALATE / SKIPPED}
|
|
322
|
-
Step 2 — steel-quench: {verdict}
|
|
323
|
-
Step 3 — phantom-quench: {verdict}
|
|
324
|
-
Step 4 — sim-conductor: {verdict}
|
|
325
|
-
|
|
326
|
-
Overall: {CLEAN (--full) / CLEAN (--quick) / CLEAN (--no-sim) / PENDING / BLOCKED}
|
|
327
|
-
|
|
328
|
-
── Pending items (CONDITIONAL_PASS steps + accepted ESCALATE) ──
|
|
329
|
-
{item list, or "none"}
|
|
330
|
-
|
|
331
|
-
── Blocking items (FAIL steps + unresolved ESCALATE) ──
|
|
332
|
-
{item list, or "none — sweep completed cleanly"}
|
|
333
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
334
|
-
```
|
|
186
|
+
After all steps complete (or after chain halt), output the aggregated report (template in §Output-Formats).
|
|
335
187
|
|
|
336
188
|
**Overall verdict logic**:
|
|
337
189
|
|
|
@@ -347,14 +199,7 @@ pipeline-conductor — Sweep Report
|
|
|
347
199
|
- `PENDING`: Resolve captured items before external release.
|
|
348
200
|
- `BLOCKED`: Do not proceed. Fix blocking items and re-run affected step(s).
|
|
349
201
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
Save the report to:
|
|
353
|
-
```
|
|
354
|
-
tracks/_meta/pipeline_conductor_{YYYY-MM-DD}_{scope-slug}.md
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
If `tracks/_meta/` does not exist, output a B-grade warning and skip persistence.
|
|
202
|
+
**Report persistence**: save to `tracks/_meta/pipeline_conductor_{YYYY-MM-DD}_{scope-slug}.md`. If `tracks/_meta/` does not exist, output a B-grade warning and skip persistence.
|
|
358
203
|
|
|
359
204
|
---
|
|
360
205
|
|
|
@@ -370,12 +215,7 @@ If `tracks/_meta/` does not exist, output a B-grade warning and skip persistence
|
|
|
370
215
|
|
|
371
216
|
Resume is scope-bound — the scope from Step 0 is preserved across resume calls.
|
|
372
217
|
|
|
373
|
-
**After ESCALATE**:
|
|
374
|
-
|
|
375
|
-
1. Present the three options (see ESCALATE Handling above).
|
|
376
|
-
2. Option (a) — user provides decision: incorporate as resolution note, re-evaluate the step gate with decision context, continue chain from step N or N+1.
|
|
377
|
-
3. Option (b) — accept and continue: mark ESCALATE item as PENDING, continue chain from step N+1.
|
|
378
|
-
4. Option (c) — abort: close sweep, output BLOCKED report with ESCALATE item in blocking section.
|
|
218
|
+
**After ESCALATE**: present the three options (see ESCALATE Handling above); (a) incorporate decision and continue, (b) mark PENDING and continue from N+1, (c) abort with BLOCKED report.
|
|
379
219
|
|
|
380
220
|
---
|
|
381
221
|
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pipeline-conductor-detail
|
|
3
|
+
description: Detail reference for pipeline-conductor — per-step output format blocks, aggregated report template, invocation notes, Area B cadence bash. Load when executing a specific step.
|
|
4
|
+
load: on-demand
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# pipeline-conductor — Detail Reference
|
|
8
|
+
|
|
9
|
+
> Load when executing a specific step. SKILL.md contains triggers, modes, the verdict vocabulary + chain behavior, scope translation, per-step gate tables, overall verdict logic, resume rules, and Done When.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## §Output-Formats
|
|
14
|
+
|
|
15
|
+
### Step 0 — Sweep Plan
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
pipeline-conductor — Sweep Plan
|
|
19
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
20
|
+
Scope: {scope}
|
|
21
|
+
Mode: {--full / --quick / --no-sim}
|
|
22
|
+
Branch: {branch name}
|
|
23
|
+
Steps: {1 → 2 → 3 → 4 / 2 → 3 / 1 → 2 → 3}
|
|
24
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
25
|
+
Proceed? (Y: run / N: cancel)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Step 0.5 — return-path-gate FAIL block
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
[Step 0.5 — return-path-gate]
|
|
32
|
+
Verdict: FAIL
|
|
33
|
+
Basis: HIGH severity OPEN chain(s) — inter-step verdicts unreliable with broken chains
|
|
34
|
+
Open: [list of OPEN chains with severity]
|
|
35
|
+
|
|
36
|
+
Fix OPEN chains then re-run pipeline-conductor.
|
|
37
|
+
Skip? (S: override gate — records as degraded, disqualifies CLEAN (--full) status)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Step 1 — harvest-loop verdict block
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
[Step 1 — harvest-loop]
|
|
44
|
+
Verdict: {verdict}
|
|
45
|
+
Basis: {one-line}
|
|
46
|
+
Pending: {list of items if CONDITIONAL_PASS, else "none"}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Step 2 — steel-quench verdict block
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
[Step 2 — steel-quench]
|
|
53
|
+
Verdict: {verdict}
|
|
54
|
+
Basis: {one-line}
|
|
55
|
+
Findings:
|
|
56
|
+
S-grade: {count} — {top item or "none"}
|
|
57
|
+
A-grade: {count} — {top item or "none"}
|
|
58
|
+
B-grade: {count} — {top item or "none"}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Step 3 — phantom-quench verdict block
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
[Step 3 — phantom-quench]
|
|
65
|
+
Verdict: {verdict}
|
|
66
|
+
Basis: {one-line}
|
|
67
|
+
Phantoms: {count} — {load-bearing: Y/N} — {top item or "none"}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Step 4 — sim-conductor verdict block
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
[Step 4 — sim-conductor]
|
|
74
|
+
Verdict: {verdict}
|
|
75
|
+
Basis: {one-line}
|
|
76
|
+
Area B: {ran / skipped — cadence limit}
|
|
77
|
+
Findings:
|
|
78
|
+
M: {count} — {top item or "none"}
|
|
79
|
+
S: {count} — {top item or "none"}
|
|
80
|
+
R: {count} — {top item or "none"}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Step 5 — Aggregated Report
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
pipeline-conductor — Sweep Report
|
|
87
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
88
|
+
Scope: {scope}
|
|
89
|
+
Mode: {mode}
|
|
90
|
+
Branch: {branch}
|
|
91
|
+
Date: {YYYY-MM-DD}
|
|
92
|
+
|
|
93
|
+
Step 0.5 — return-path-gate: {PASS / CONDITIONAL_PASS / FAIL / SKIPPED / degraded}
|
|
94
|
+
Step 1 — harvest-loop: {PASS / CONDITIONAL_PASS / FAIL / ESCALATE / SKIPPED}
|
|
95
|
+
Step 2 — steel-quench: {verdict}
|
|
96
|
+
Step 3 — phantom-quench: {verdict}
|
|
97
|
+
Step 4 — sim-conductor: {verdict}
|
|
98
|
+
|
|
99
|
+
Overall: {CLEAN (--full) / CLEAN (--quick) / CLEAN (--no-sim) / PENDING / BLOCKED}
|
|
100
|
+
|
|
101
|
+
── Pending items (CONDITIONAL_PASS steps + accepted ESCALATE) ──
|
|
102
|
+
{item list, or "none"}
|
|
103
|
+
|
|
104
|
+
── Blocking items (FAIL steps + unresolved ESCALATE) ──
|
|
105
|
+
{item list, or "none — sweep completed cleanly"}
|
|
106
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## §Execution-Notes
|
|
112
|
+
|
|
113
|
+
### Step 1 — harvest-loop invocation path
|
|
114
|
+
|
|
115
|
+
pipeline-conductor reads session context for harvest-loop findings rather than invoking harvest-loop directly — invoking harvest-loop mid-sweep would start a new harvest cycle that conflicts with the sweep's own pattern collection. If no harvest-loop run exists in this session, pipeline-conductor can invoke harvest-loop in proposal mode (`/harvest-loop`) as a pre-Step-1 option, but this is not automatic.
|
|
116
|
+
|
|
117
|
+
- If harvest-loop ran in this session: read its output and incorporate findings.
|
|
118
|
+
- If harvest-loop did not run in this session: output `CONDITIONAL_PASS` — knowledge loop not validated in this sweep.
|
|
119
|
+
- If harvest-loop auto-skipped (fewer than 3 patterns found): output `CONDITIONAL_PASS` — sub-threshold, knowledge loop not validated.
|
|
120
|
+
|
|
121
|
+
### Per-step FAIL prompts
|
|
122
|
+
|
|
123
|
+
On FAIL the chain halts and asks (insert the failing step's name and finding):
|
|
124
|
+
|
|
125
|
+
> "{step skill} found a blocking issue. Fix and re-run Step {N}, or abort the sweep?"
|
|
126
|
+
|
|
127
|
+
(Step 4 variant: "…or accept findings and close with FAIL status?")
|
|
128
|
+
|
|
129
|
+
On CONDITIONAL_PASS in any step: capture the finding list (Step 2: A/B-grade; Step 3: non-load-bearing Phantoms; Step 4: S/R-tier findings) and continue to the next step.
|
|
130
|
+
|
|
131
|
+
### Step 4 — Area B cadence check bash
|
|
132
|
+
|
|
133
|
+
sim-conductor Area B has a once-per-week frequency limit:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
find tracks/_meta/ -name "*sim_conductor*" -newer "$(date -v-7d +%Y-%m-%d 2>/dev/null || date -d '7 days ago' +%Y-%m-%d 2>/dev/null)" 2>/dev/null | head -1
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
- Result found (Area B ran within 7 days): skip Area B → run Area A + Area D only. Capture as `CONDITIONAL_PASS` with note: "Area B skipped — within 7-day cadence limit."
|
|
140
|
+
- No result (Area B not run within 7 days): run Area A + Area B + Area D (scope permitting).
|
|
141
|
+
|
|
142
|
+
### What each step checks (reference)
|
|
143
|
+
|
|
144
|
+
| Step | Checks |
|
|
145
|
+
|---|---|
|
|
146
|
+
| 1 harvest-loop | Recent session learnings absorbed, duplicate skill candidates pending, knowledge loop integrity in current session |
|
|
147
|
+
| 2 steel-quench | Design attack surface, trigger phrase collisions, over-engineered steps, self-declaration language, devil-advocate structural flaws |
|
|
148
|
+
| 3 phantom-quench | Proper nouns, numerical values, file paths, branching conditions back-traced to declared sources; ungrounded claims = Phantom |
|
|
149
|
+
| 4 sim-conductor | Transferability to external users, new-user entry friction, power-user edge cases, artifact quality from outside perspective |
|
package/scripts/selfcheck.sh
CHANGED
|
@@ -65,6 +65,27 @@ count_check "marketplace.json fh-meta" .claude-plugin/marketplace.json
|
|
|
65
65
|
count_check "README header" README.md "${total_sk} skills · ${total_ag} agents"
|
|
66
66
|
count_check "local_fh_context fh-meta" templates/local_fh_context.md "(fh-meta, ${meta_sk})"
|
|
67
67
|
|
|
68
|
+
# Referenced-path existence: backtick-quoted repo-relative file refs in the always-loaded
|
|
69
|
+
# governance surface (CLAUDE.md + .claude/rules/*.md) must exist. Phantom-reference class
|
|
70
|
+
# recurred N>=3 in the 2026-06-11 audit window (operations.md _scanner.sh, claude-chrono path,
|
|
71
|
+
# stale templates ref) — instrument-not-habit. Globs/placeholders/{vars} are excluded by the
|
|
72
|
+
# filter; tracks/ is machine-local and deliberately out of scope. Gitignored refs (e.g.
|
|
73
|
+
# `.claude/settings.json` named in prose *about* gitignored files) are skipped — they exist
|
|
74
|
+
# locally but not on a fresh clone, and "must exist" here means "must ship".
|
|
75
|
+
while IFS= read -r p; do
|
|
76
|
+
if git check-ignore -q "$p" 2>/dev/null; then
|
|
77
|
+
echo "SKIP ref-path (gitignored): $p"
|
|
78
|
+
elif [ -f "$p" ]; then
|
|
79
|
+
echo "PASS ref-path: $p"
|
|
80
|
+
else
|
|
81
|
+
echo "FAIL ref-path: $p — referenced in CLAUDE.md/.claude/rules but missing"
|
|
82
|
+
fail=1
|
|
83
|
+
fi
|
|
84
|
+
done < <(grep -hoE '\`[^\` ]+\`' CLAUDE.md .claude/rules/*.md 2>/dev/null \
|
|
85
|
+
| sed 's/\`//g' \
|
|
86
|
+
| grep -E '^(knowledge|templates|scripts|docs|plugins|\.claude)/[^*{}<>$]+\.(md|sh|ya?ml|jsonc|json)$' \
|
|
87
|
+
| sort -u)
|
|
88
|
+
|
|
68
89
|
if [ "$fail" -ne 0 ]; then
|
|
69
90
|
echo "SELFCHECK: FAIL"
|
|
70
91
|
exit 1
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: source-grounding-audit
|
|
3
|
-
description: >-
|
|
4
|
-
RENAMED to phantom-quench (2026-06-06, quench-series rebrand). Same skill, same ruleset — only the
|
|
5
|
-
label changed to fit the quench family (steel-quench · phantom-quench · goal-quench). Use
|
|
6
|
-
/phantom-quench. This alias is retained so old references and the v1 paper's name still resolve.
|
|
7
|
-
user-invocable: false
|
|
8
|
-
allowed-tools: []
|
|
9
|
-
model: sonnet
|
|
10
|
-
deprecated: true
|
|
11
|
-
deprecated_reason: renamed to phantom-quench (label-only; not a merge — same skill)
|
|
12
|
-
deprecated_date: 2026-06-06
|
|
13
|
-
successor: phantom-quench
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
# source-grounding-audit — RENAMED to `phantom-quench`
|
|
17
|
-
|
|
18
|
-
> **Renamed to `phantom-quench` (2026-06-06).** This is a **label rename, not a deprecation-by-merge** —
|
|
19
|
-
> the skill is unchanged and fully active under its new name. Invoke **`/phantom-quench`**.
|
|
20
|
-
|
|
21
|
-
## Why the rename
|
|
22
|
-
|
|
23
|
-
phantom-quench is the **grounding member of the quench series** (steel-quench attacks output patterns ·
|
|
24
|
-
phantom-quench traces inputs for Phantom Claims · goal-quench gates autonomous runs). The old descriptive
|
|
25
|
-
name did not signal that family membership; the function is identical.
|
|
26
|
-
|
|
27
|
-
## Where the skill lives now
|
|
28
|
-
|
|
29
|
-
`plugins/fh-meta/skills/phantom-quench/SKILL.md` (+ `SKILL_detail.md`) — full ruleset preserved
|
|
30
|
-
(S-grade blocker, Human Gate, Pattern Diagnosis, etc.).
|
|
31
|
-
|
|
32
|
-
## Record note (do not "fix")
|
|
33
|
-
|
|
34
|
-
The **v1 paper** (Zenodo 10.5281/zenodo.20397566; arXiv submission) cites `source-grounding-audit`.
|
|
35
|
-
That is the **immutable historical name**, not a phantom — `paper/forge_harness_v1.0.html` is left
|
|
36
|
-
unchanged by design. Future readers map: *source-grounding-audit (v1 paper) = phantom-quench (current)*.
|
|
37
|
-
|
|
38
|
-
## Done When
|
|
39
|
-
|
|
40
|
-
Deprecated alias — no active execution path of its own. Done When: all invocation routes through
|
|
41
|
-
`/phantom-quench` (the successor); this entry exists only so old names resolve. Satisfies the
|
|
42
|
-
harness-doctor L2 M-tier Done-When requirement (CLAUDE.md §New Skill Creation Pre-Commit Gate).
|