@chrono-meta/fh-gate 1.4.23 → 1.4.24
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/package.json
CHANGED
|
@@ -298,3 +298,14 @@ Phase 1: token-budget-gate verdict output + mode resolved (core default, or pro/
|
|
|
298
298
|
```
|
|
299
299
|
|
|
300
300
|
Verdict: PASS (CLEAN verification) | CONDITIONAL_PASS (PENDING verification) | FAIL (BLOCKED verification) | ESCALATE (user decision required on partial completion)
|
|
301
|
+
|
|
302
|
+
**Completion-claim discipline (Ralph — no silent partial completion):** a PASS/CONDITIONAL_PASS
|
|
303
|
+
verdict must **enumerate, not assert** — (a) **evidence artifact**: the pipeline-conductor verification
|
|
304
|
+
verdict + the calibration record path; (b) **failed/skipped checks by name** (which pipeline axes /
|
|
305
|
+
sidecars FAILED or were skipped). This list is **not self-asserted** — reconcile it against the resolved
|
|
306
|
+
mode's in-scope axis/sidecar set: a list shorter than (in-scope − passed) is incomplete, not PASS (an
|
|
307
|
+
empty list is valid only when every in-scope check passed). This is the mechanical anchor that keeps the
|
|
308
|
+
clause off a judge-only path; (c) **explicit residual risk beyond what the mode-qualifier already states**
|
|
309
|
+
(e.g. an axis that ran but on degraded input). A verdict that omits any of the three is **incomplete, not
|
|
310
|
+
PASS**. (Convergent sister evidence: oh-my-claudecode Ralph "refuses silent partial completion"; Hermes
|
|
311
|
+
Agent `/goal` per-turn completion judge.)
|
|
@@ -121,6 +121,16 @@ echo "---\ndate: $(date +%Y-%m-%d)\nentries_checked: N\nupdated: N\ndrifted: N\n
|
|
|
121
121
|
## Constraints
|
|
122
122
|
|
|
123
123
|
- **No auto-deletion**: Archive candidates are proposed, not deleted. Human confirmation required.
|
|
124
|
+
- **Snapshot before archive (Destructive-Op Gate for memory)**: before applying any confirmed
|
|
125
|
+
archive/removal in Step 4, snapshot **every memory root the entry could live in** first — tar **all**
|
|
126
|
+
roots Step 1 enumerated (`~/.claude/projects/*/memory/` AND hub-local `memory/`), not just one:
|
|
127
|
+
`tar czf tracks/_meta/memory_snapshot_$(date +%Y%m%d-%H%M%S).tgz <each Step-1 root that exists>` — so
|
|
128
|
+
a wrong archive in any scanned root is one-command recoverable (a single-root snapshot can pass while
|
|
129
|
+
the archived entry lived in the other root — bind the scope to the entry, not to "a tarball exists").
|
|
130
|
+
Archive moves entries to a `.archive/` sibling, never hard-deletes (mirrors the Curator's
|
|
131
|
+
tar-before-pass + rollback discipline; the Step 2 staleness thresholds are already the mechanical
|
|
132
|
+
no-LLM pre-pass that the judged Step 3 re-verify sits on top of — order preserved: mechanical roster
|
|
133
|
+
first, judged re-verify second).
|
|
124
134
|
- **Feedback type**: Never auto-modify feedback rules — flag only.
|
|
125
135
|
- **Simplification guard**: If 0 stale entries found, output one line "memory-hygiene: all fresh" and exit.
|
|
126
136
|
- **FH online advantage**: Unlike offline harnesses, FH can re-verify external references live.
|
|
@@ -130,9 +140,10 @@ echo "---\ndate: $(date +%Y-%m-%d)\nentries_checked: N\nupdated: N\ndrifted: N\n
|
|
|
130
140
|
|
|
131
141
|
```
|
|
132
142
|
Step 1~5 complete
|
|
133
|
-
+ Staleness roster output
|
|
143
|
+
+ Staleness roster output (Step 2 = mechanical no-LLM pre-pass)
|
|
134
144
|
+ Re-verification run for all STALE entries
|
|
135
145
|
+ User gate presented and responded to (y/N per item)
|
|
146
|
+
+ If any archive confirmed: snapshot covering the archived entry's root written before the move (tracks/_meta/memory_snapshot_*.tgz, spanning all existing Step-1 roots) — check class: mandatory-pass (snapshot covers the entry's dir, not merely "a tarball exists")
|
|
136
147
|
+ Hygiene log written to tracks/_meta/memory_hygiene_{date}.md
|
|
137
148
|
```
|
|
138
149
|
|
|
@@ -268,3 +268,14 @@ Step 0 scope confirmed and scope translation table applied
|
|
|
268
268
|
Verdict: PASS (all conditions met, sweep complete) | CONDITIONAL_PASS (sweep complete, pending items captured) | FAIL (chain halted, blocking items remain) | ESCALATE (chain paused, human decision required)
|
|
269
269
|
|
|
270
270
|
A sweep is not done until the Step 5 report is output. Emitting per-step verdicts without the aggregated report is incomplete.
|
|
271
|
+
|
|
272
|
+
**Completion-claim discipline (Ralph — no silent partial completion):** the Step 5 report's overall
|
|
273
|
+
verdict must **enumerate, not assert** — (a) **evidence artifact**: the per-step verdict source (report
|
|
274
|
+
path + the verdict lines it aggregates); (b) **failed + skipped checks listed by name** (degraded /
|
|
275
|
+
skipped / `--quick`-omitted steps included). This list is **not self-asserted** — reconcile it against
|
|
276
|
+
the Step 0 in-scope step set: a list shorter than (in-scope − passed) is incomplete (an empty list is
|
|
277
|
+
valid only when every in-scope step passed). This is the mechanical anchor that keeps the clause off a
|
|
278
|
+
judge-only path; (c) **explicit residual risk beyond what the mode-qualifier states** (e.g. a single-skill
|
|
279
|
+
scope is not a full-harness claim). A CLEAN verdict that omits any of the three is **incomplete**.
|
|
280
|
+
(Convergent sister evidence: oh-my-claudecode Ralph "refuses silent partial completion"; Hermes Agent
|
|
281
|
+
`/goal` per-turn completion judge.)
|