@lannguyensi/harness 0.47.0 → 0.49.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/CHANGELOG.md +215 -0
- package/dist/cli/doctor/format.js +46 -0
- package/dist/cli/doctor/format.js.map +1 -1
- package/dist/cli/doctor/index.d.ts +10 -0
- package/dist/cli/doctor/index.js +131 -4
- package/dist/cli/doctor/index.js.map +1 -1
- package/dist/cli/doctor/types.d.ts +91 -3
- package/dist/cli/init/templates.d.ts +34 -1
- package/dist/cli/init/templates.js +72 -2
- package/dist/cli/init/templates.js.map +1 -1
- package/dist/cli/pack/hook-bootstrap.js +6 -1
- package/dist/cli/pack/hook-bootstrap.js.map +1 -1
- package/dist/cli/pack/hook-codex-stop.d.ts +4 -0
- package/dist/cli/pack/hook-codex-stop.js +15 -1
- package/dist/cli/pack/hook-codex-stop.js.map +1 -1
- package/dist/cli/pack/hook-codex-user-prompt-submit.d.ts +38 -0
- package/dist/cli/pack/hook-codex-user-prompt-submit.js +127 -8
- package/dist/cli/pack/hook-codex-user-prompt-submit.js.map +1 -1
- package/dist/cli/policy/intercept.js +59 -9
- package/dist/cli/policy/intercept.js.map +1 -1
- package/dist/cli/validate/checks.d.ts +1 -0
- package/dist/cli/validate/checks.js +185 -9
- package/dist/cli/validate/checks.js.map +1 -1
- package/dist/runtime/bash-prefix-parse.d.ts +12 -1
- package/dist/runtime/bash-prefix-parse.js +2 -2
- package/dist/runtime/bash-prefix-parse.js.map +1 -1
- package/dist/runtime/kubectl-target-parse.d.ts +15 -0
- package/dist/runtime/kubectl-target-parse.js +241 -0
- package/dist/runtime/kubectl-target-parse.js.map +1 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,221 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.49.0] - 2026-08-26
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- **Risk Gate: an explicit `kubectl --context`/`--namespace`/`-n` target
|
|
15
|
+
is now a resolver signal, upgrade-only, and the shipped kubectl
|
|
16
|
+
classifier pattern no longer loses a match to a flag between
|
|
17
|
+
`kubectl` and `delete`, without exponential backtracking on a long
|
|
18
|
+
flag run** (task `a7eb1a71`). Before this fix the Kube half of the
|
|
19
|
+
environment resolver (`kube_context_patterns`/`kube_namespace_patterns`)
|
|
20
|
+
only ever read the AMBIENT `~/.kube/config` current-context, so the
|
|
21
|
+
whole Kube signal only fired when the ambient kubeconfig happened to
|
|
22
|
+
already point at production; a second, independent defect compounded
|
|
23
|
+
it, since the shipped kubectl classifier pattern required `kubectl`
|
|
24
|
+
and `delete` adjacent, so a flag in between fell back to unclassified
|
|
25
|
+
entirely. `src/runtime/kubectl-target-parse.ts` (new) parses
|
|
26
|
+
`--context`/`--namespace`/`-n` (space, `=`, and, for `-n`, the
|
|
27
|
+
concatenated `-nVALUE` short-flag form) out of a `kubectl ...`
|
|
28
|
+
command, anchored at the command's own head token (including the
|
|
29
|
+
remainder after a leading `cd`/`VAR=value`/`git switch` prefix is
|
|
30
|
+
stripped) and stopping at a bare `--` end-of-flags marker, so a
|
|
31
|
+
same-named flag belonging to an unrelated program, a chained command,
|
|
32
|
+
or an exec'd program is never read as a kube signal.
|
|
33
|
+
`src/cli/policy/intercept.ts`'s `applyKubeTargetUpgrade` merges the
|
|
34
|
+
result into the resolver's `SignalInputs` UPGRADE-ONLY, mirroring the
|
|
35
|
+
existing branch-switch merge: command text can raise the resolved
|
|
36
|
+
environment toward production, never lower an already-resolved
|
|
37
|
+
ambient production. Review fix round 2 replaced an initial per-field
|
|
38
|
+
always-wins merge that measurably let an empty `--context=`, a value
|
|
39
|
+
smuggled past a `kubectl exec ... -- ...` separator, or a genuinely
|
|
40
|
+
different non-production `--context` downgrade an ambient-production
|
|
41
|
+
resolution to allow. The shipped kubectl classifier pattern
|
|
42
|
+
(`docs/examples/full-manifest.yaml` / `src/cli/init/templates.ts`) is
|
|
43
|
+
token-based and flag-tolerant between the two verbs without matching
|
|
44
|
+
`kubectl get`/`describe`; review fix round 2 also replaced an initial
|
|
45
|
+
flag-tolerant pattern shape that backtracked exponentially (measured
|
|
46
|
+
at multiple seconds on a 24 to 26 flag command) with a linear-time
|
|
47
|
+
form (measured well under 1ms at 40 flags), since this pattern ships
|
|
48
|
+
in every `harness init` manifest on a hot PreToolUse path. The
|
|
49
|
+
analogous `terraform destroy` pattern got the same flag-tolerance and
|
|
50
|
+
linear-time treatment for terraform's own `-chdir=DIR` global flag,
|
|
51
|
+
which sits in the identical position. See docs/risk-gate.md for the
|
|
52
|
+
conflict-priority rule, the full parsing scope, and a measured,
|
|
53
|
+
out-of-scope interaction this surfaced with the pre-existing "unknown
|
|
54
|
+
is not safe" rule (waived for this task; a read-only kubectl
|
|
55
|
+
classification floor is a separate follow-up decision).
|
|
56
|
+
### Added
|
|
57
|
+
|
|
58
|
+
- **`harness doctor` detects trigger-boundary drift on shipped `bash_match`
|
|
59
|
+
triggers, hook- AND policy-level** (task `037cfb7c`, follow-up to
|
|
60
|
+
`adf037c1`). `checkTemplatePolicyDrift` already caught a shipped
|
|
61
|
+
`operator_only` policy that is entirely missing or downgraded, but said
|
|
62
|
+
nothing about a `bash_match` trigger that IS present under a shipped
|
|
63
|
+
name whose leading boundary-alternation group has fallen behind
|
|
64
|
+
`FULL_TEMPLATE`'s (e.g. still the pre-v0.43.0 `&&`-only shape while the
|
|
65
|
+
template has shipped `&` since `d834a065`, two minor releases ago);
|
|
66
|
+
`harness apply` never rewrites an already-materialized manifest's
|
|
67
|
+
trigger regexes, so this gap persists silently. New
|
|
68
|
+
`checkTriggerBoundaryDrift` (`src/cli/validate/checks.ts`) compares, by
|
|
69
|
+
exact name, every `hooks[].bash_match` and
|
|
70
|
+
`policies[].trigger.bash_match` entry `shippedBashMatchBoundaries()`
|
|
71
|
+
(`src/cli/init/templates.ts`, parsed from `FULL_TEMPLATE`, same
|
|
72
|
+
single-source-of-truth pattern as `shippedOperatorOnlyPolicyNames()`,
|
|
73
|
+
16 entries today: 8 hooks + 8 policies) knows by name, comparing ONLY
|
|
74
|
+
the leading boundary group, never the rest of the regex (an operator's
|
|
75
|
+
own edits to the command-shape match are legitimate and not flagged).
|
|
76
|
+
The comparison is set-based, not string-equal: the boundary's
|
|
77
|
+
`|`-separated alternatives are split escape-aware and only an
|
|
78
|
+
alternative the template has that the installed regex is MISSING is
|
|
79
|
+
reported by name; a reordered or superset boundary is not a finding
|
|
80
|
+
(review round 2, fixing a false-positive an exact-string comparison
|
|
81
|
+
would have produced on any cosmetic reordering or widening). An
|
|
82
|
+
installed `bash_match` under a shipped name with no recognizable
|
|
83
|
+
boundary group at all is its own finding (review round 2; the initial
|
|
84
|
+
cut silently produced zero findings for that case). Each finding is an
|
|
85
|
+
ERROR (doctor's `errorCount`, same as the missing-policy case: a
|
|
86
|
+
missing boundary alternative is a real, measured gate bypass, not
|
|
87
|
+
cosmetic drift; reproduced against a real operator manifest 2026-08-25
|
|
88
|
+
via `harness policy intercept`, where `sleep 0 & gh pr merge 1` passed
|
|
89
|
+
with no deny on the unmigrated manifest, 10 of the 16 shipped triggers
|
|
90
|
+
affected, and was blocked once the boundary was widened to include
|
|
91
|
+
`&`), naming the entry, its actual boundary, the template's boundary,
|
|
92
|
+
the specific missing alternative(s), and the rehydration path:
|
|
93
|
+
`harness init --template full --config /tmp/harness-full.yaml` (a
|
|
94
|
+
throwaway `--config` path, not `--template full --force` against the
|
|
95
|
+
live manifest: `init` resolves its target from `--config` or the home
|
|
96
|
+
directory, never `cwd`, so there is no "scratch dir" fallback, and
|
|
97
|
+
`--force` against the live manifest would overwrite it wholesale;
|
|
98
|
+
review round 2 caught the original wording's wrong remediation
|
|
99
|
+
command). Same deliberate opt-out channel as `adf037c1`:
|
|
100
|
+
`doctor.ignore_template_drift: [<hook-or-policy-name>, ...]` silences
|
|
101
|
+
only the report line, never enforcement; `checkTemplatePolicyDrift`'s
|
|
102
|
+
stale-opt-out warning now also recognises a valid trigger-boundary name
|
|
103
|
+
so a shared opt-out entry is not double-flagged as stale by the other
|
|
104
|
+
check. `buildTriggerBoundaryDrift` (`src/cli/doctor/index.ts`)
|
|
105
|
+
partitions diagnostics by severity like `buildTemplateDrift` does
|
|
106
|
+
(review round 2: a plain message-map left `severity: "error"` inert,
|
|
107
|
+
undetected by the initial test suite). New section
|
|
108
|
+
`triggerBoundaryDrift` in `DoctorReport` / `format.ts` ("Trigger
|
|
109
|
+
boundary drift (shipped bash_match triggers)"). Docs:
|
|
110
|
+
`docs/okf/pause-vs-gate-kill-switch.md`'s "Fixed in v0.43.0" and new
|
|
111
|
+
"Trigger-boundary drift detection" sections point at this check and
|
|
112
|
+
the corrected `--config` rehydration command. Tests:
|
|
113
|
+
`tests/cli/doctor-trigger-boundary-drift.test.ts` (naming + the
|
|
114
|
+
corrected rehydration path, both negative controls including a
|
|
115
|
+
fixed-point pin on `shippedBashMatchBoundaries()`'s 16 entries and
|
|
116
|
+
their literal boundary, the ignore opt-out verified against the
|
|
117
|
+
trigger matcher directly rather than by re-reading the YAML, the
|
|
118
|
+
fix/revert mutation probe, a direct severity assertion on every
|
|
119
|
+
diagnostic, reordered/superset boundaries producing zero findings, a
|
|
120
|
+
missing-alternative finding naming the missing alternative, and the
|
|
121
|
+
no-boundary-group finding).
|
|
122
|
+
|
|
123
|
+
### Fixed
|
|
124
|
+
|
|
125
|
+
- **Trigger-boundary drift (task 037cfb7c), review round 3: a zero-overlap
|
|
126
|
+
leading group is no longer misreported as "missing" every template
|
|
127
|
+
alternative.** A shipped-named `bash_match` whose leading group is
|
|
128
|
+
syntactically a valid parenthesized alternation but shares NO
|
|
129
|
+
alternative with the shipped boundary (e.g. `(gh|git)\s+pr merge\b`,
|
|
130
|
+
where the group serves an unrelated command-shape purpose) now routes
|
|
131
|
+
to the same "no recognizable boundary" wording the syntactically-absent
|
|
132
|
+
case already used, instead of listing every one of the template's
|
|
133
|
+
alternatives as individually missing. New shared
|
|
134
|
+
`noRecognizableBoundaryMessage` helper in `src/cli/validate/checks.ts`
|
|
135
|
+
covers both cases. `TriggerBoundaryDriftSection` gained a `warnings`
|
|
136
|
+
field mirroring `TemplateDriftSection`, threaded through `format.ts`
|
|
137
|
+
and `countDiagnostics`'s `warningCount`, so a future non-error
|
|
138
|
+
diagnostic from `checkTriggerBoundaryDrift` would surface instead of
|
|
139
|
+
being silently dropped; `buildTemplateDrift` and
|
|
140
|
+
`buildTriggerBoundaryDrift` (`src/cli/doctor/index.ts`) now share a
|
|
141
|
+
`partitionDiagnosticsBySeverity` helper instead of duplicating the same
|
|
142
|
+
filter/map body, which also resolved a new duplication-pin hit
|
|
143
|
+
(`check:duplication` briefly went 109 to 110 on the byte-identical
|
|
144
|
+
bodies before the extraction). Two mutation-probe-driven test gaps
|
|
145
|
+
closed in `tests/cli/doctor-trigger-boundary-drift.test.ts`: a
|
|
146
|
+
`.slice(0, -1)`-shaped bug that would drop the shipped boundary's
|
|
147
|
+
trailing `\(` alternative from comparison, and a naive (escape-unaware)
|
|
148
|
+
`|`-split that would decompose the shipped boundary's `\|` alternative
|
|
149
|
+
into two spurious tokens; both are now named test cases, verified red
|
|
150
|
+
against the mutated implementation and green against the fix.
|
|
151
|
+
|
|
152
|
+
## [0.48.0] - 2026-08-25
|
|
153
|
+
|
|
154
|
+
### Fixed
|
|
155
|
+
|
|
156
|
+
- **Codex adapter pause parity: `harness pack hook codex-user-prompt-submit`
|
|
157
|
+
and `harness pack hook codex-stop` now honour an active pause sentinel,
|
|
158
|
+
and the UserPromptSubmit notification-turn heuristic is fail-open**
|
|
159
|
+
(tasks `63fefe3a` and `1432e053`). Unlike every other pack hook, these
|
|
160
|
+
two never called `checkHookPause`: an active, unexpired `harness pause`
|
|
161
|
+
silenced every PreToolUse/PostToolUse gate but kept the full
|
|
162
|
+
Understanding Gate instruction block injecting and kept persisting
|
|
163
|
+
Understanding Report captures under `.understanding-gate/reports/`
|
|
164
|
+
during a paused window. Both hooks now check the sentinel first, before
|
|
165
|
+
manifest load, the same ordering as the other Codex hooks; all four
|
|
166
|
+
`hook-codex-*.ts` files import `checkHookPause`, the module header of
|
|
167
|
+
`src/cli/pack/hook-bootstrap.ts` lists no "no pause check" exception any
|
|
168
|
+
more, and a source-grep test pins that the exception list cannot grow
|
|
169
|
+
back. Second change in the UserPromptSubmit hook: a first cut suppressed
|
|
170
|
+
injection whenever the stdin envelope carried no `prompt` field, on the
|
|
171
|
+
assumption that a missing `prompt` means a notification turn. An advisor
|
|
172
|
+
review found this unverified against a real Codex payload (the generated
|
|
173
|
+
`config.toml` header documents the wire shape as
|
|
174
|
+
`{ session_id?, tool_name?, raw_input?, event? }`, with no `prompt`
|
|
175
|
+
field, and every suppression test supplied `prompt` itself), so a real
|
|
176
|
+
envelope without that field would have gone permanently, silently dark.
|
|
177
|
+
`hasRealUserPrompt` therefore fails OPEN to inject: it only suppresses
|
|
178
|
+
when a recognised prompt-carrying field (`prompt`, `text`, `input`,
|
|
179
|
+
`message`, `user_prompt`, `user_input`) is positively present and empty;
|
|
180
|
+
a missing field, unparsable stdin, or an unrecognised envelope shape all
|
|
181
|
+
inject, as before. Scope note: the incident task `63fefe3a` started from
|
|
182
|
+
(observed repeatedly in internal dogfooding) was reported against the
|
|
183
|
+
Claude Code adapter, whose hooks live in the separate
|
|
184
|
+
`@lannguyensi/understanding-gate` npm package and were fixed there in
|
|
185
|
+
its 0.5.0. This entry is Codex-adapter parity only and does not claim to
|
|
186
|
+
fix the Claude-side behaviour. **Open risk, unchanged:** the alias field
|
|
187
|
+
names beyond `prompt` are a reasoned guess, not verified against real
|
|
188
|
+
Codex traffic; that suppression path may in practice never fire.
|
|
189
|
+
- **Fix round on the above (task `1432e053`): `hasRealUserPrompt` now
|
|
190
|
+
decides across the entire alias set, not just the first alias in list
|
|
191
|
+
order.** The previous cut returned as soon as it hit the first
|
|
192
|
+
alias present with a string value, so an envelope carrying an empty
|
|
193
|
+
`prompt` alongside a non-empty `text` (`{"prompt":"","text":"real
|
|
194
|
+
operator text"}`) suppressed injection even though real operator text
|
|
195
|
+
was present under a later alias. It now inspects every recognised
|
|
196
|
+
alias, injects if any is non-empty after trimming, and only suppresses
|
|
197
|
+
when at least one alias is present and every present string-valued
|
|
198
|
+
alias is empty.
|
|
199
|
+
- **`harness doctor` now probes the `min_version` floor on
|
|
200
|
+
policy-pack-EXPANDED hooks, not just `manifest.hooks[]`** (task
|
|
201
|
+
`ab634898`). This gap predates 0.47.0: `checkHooks` walked
|
|
202
|
+
`manifest.hooks[]` only, so any hook a builtin pack contributes at
|
|
203
|
+
apply time never got its declared `min_version` + `version_command`
|
|
204
|
+
probed, and a below-floor install produced a clean doctor report.
|
|
205
|
+
0.47.0's claim that raising `understanding-before-execution`'s
|
|
206
|
+
`min_version` to 0.5.0 "turns [a stale gate] into a `harness doctor`
|
|
207
|
+
finding" repeated an older, never-true claim already made about the
|
|
208
|
+
same pack's 0.4.0 floor (docs/policy-packs/understanding-before-execution.md);
|
|
209
|
+
both only hold from this version onward. A new "Policy-pack hooks"
|
|
210
|
+
section runs the same version probe already used for manifest-declared
|
|
211
|
+
hooks against `expandPolicyPacks`'s output (always against the
|
|
212
|
+
`claude-code` default runtime, independent of `--target`, which
|
|
213
|
+
additionally evaluates a harness-side adapter and is not a statement
|
|
214
|
+
about which runtime is installed), deduped per distinct
|
|
215
|
+
`version_command` so a probe used by more than one hook spawns once.
|
|
216
|
+
Each gap reports `kind` (`below_floor` / `probe_failed` /
|
|
217
|
+
`parse_failed`), `actualVersion`, and `versionCommand`, mirroring the
|
|
218
|
+
sibling pack-level `PolicyPackVersionGap` shape; the renderer prints
|
|
219
|
+
the "runs in degraded mode below its declared min_version" line only
|
|
220
|
+
for `kind: "below_floor"`, and its own prose per kind otherwise, since
|
|
221
|
+
`probe_failed` / `parse_failed` have no known installed version.
|
|
222
|
+
Warn-not-error, matching the manifest-hook and pack-level floors; exit
|
|
223
|
+
code is unaffected.
|
|
224
|
+
|
|
10
225
|
## [0.47.0] - 2026-08-25
|
|
11
226
|
|
|
12
227
|
### Added
|
|
@@ -158,6 +158,34 @@ function formatHooksSection(report) {
|
|
|
158
158
|
out.push(` (no hooks declared)`);
|
|
159
159
|
return out;
|
|
160
160
|
}
|
|
161
|
+
// Policy-pack hooks section (task ab634898): the hook-level `min_version`
|
|
162
|
+
// floor on hooks a builtin policy pack contributes (understanding-gate's
|
|
163
|
+
// UserPromptSubmit/Stop hooks, floored at 0.5.0, are the motivating
|
|
164
|
+
// case). Distinct from the "Hooks" section above (which only walks
|
|
165
|
+
// `manifest.hooks[]`, never the pack-expanded ones) and from "Policy
|
|
166
|
+
// Packs" below (the pack-LEVEL `policy_packs[].min_version` floor).
|
|
167
|
+
// Stays silent when there is nothing to report, same convention as
|
|
168
|
+
// "Policy Packs".
|
|
169
|
+
function formatPolicyPackHookVersionsSection(report) {
|
|
170
|
+
if (report.policyPackHookVersions.length === 0)
|
|
171
|
+
return [];
|
|
172
|
+
const out = ["", "Policy-pack hooks"];
|
|
173
|
+
for (const gap of report.policyPackHookVersions) {
|
|
174
|
+
out.push(` ⚠ ${gap.name}.min_version ${gap.message}`);
|
|
175
|
+
if (gap.kind === "below_floor") {
|
|
176
|
+
out.push(` this pack-contributed hook runs in degraded mode below its declared min_version ${gap.declaredMinVersion}. Upgrade the package-side bin.`);
|
|
177
|
+
}
|
|
178
|
+
else if (gap.kind === "probe_failed") {
|
|
179
|
+
const bin = gap.versionCommand[0] ?? "the probe binary";
|
|
180
|
+
out.push(` ${bin} is not on PATH, failed, or does not support --version (declared floor ${gap.declaredMinVersion}).`);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
const bin = gap.versionCommand[0] ?? "the probe binary";
|
|
184
|
+
out.push(` the probe ran but its output did not contain a version for ${bin} (declared floor ${gap.declaredMinVersion}).`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return out;
|
|
188
|
+
}
|
|
161
189
|
function formatPoliciesSection(report) {
|
|
162
190
|
const out = ["", "Policies"];
|
|
163
191
|
for (const p of report.policies) {
|
|
@@ -274,6 +302,22 @@ function formatTemplateDriftSection(report) {
|
|
|
274
302
|
out.push(` ⚠ ${w}`);
|
|
275
303
|
return out;
|
|
276
304
|
}
|
|
305
|
+
// Trigger-boundary drift section (task 037cfb7c): shipped-by-name
|
|
306
|
+
// bash_match triggers whose boundary alternation has fallen behind
|
|
307
|
+
// FULL_TEMPLATE's. Render only when something is stale, a caught-up
|
|
308
|
+
// manifest stays silent, like the template-drift section immediately
|
|
309
|
+
// above.
|
|
310
|
+
function formatTriggerBoundaryDriftSection(report) {
|
|
311
|
+
const { errors, warnings } = report.triggerBoundaryDrift;
|
|
312
|
+
if (errors.length === 0 && warnings.length === 0)
|
|
313
|
+
return [];
|
|
314
|
+
const out = ["", "Trigger boundary drift (shipped bash_match triggers)"];
|
|
315
|
+
for (const m of errors)
|
|
316
|
+
out.push(` ✗ ${m}`);
|
|
317
|
+
for (const w of warnings)
|
|
318
|
+
out.push(` ⚠ ${w}`);
|
|
319
|
+
return out;
|
|
320
|
+
}
|
|
277
321
|
// Hook-budget-vs-ledger-timeout margin section (task d20a7e0c): blocking,
|
|
278
322
|
// ledger-consulting hooks whose budget_ms cannot clear the derived
|
|
279
323
|
// worst-case ledger round-trip. Render only when something is under-
|
|
@@ -441,11 +485,13 @@ export function format(report) {
|
|
|
441
485
|
lines.push(...formatToolsSection(report));
|
|
442
486
|
lines.push(...formatMemorySection(report));
|
|
443
487
|
lines.push(...formatHooksSection(report));
|
|
488
|
+
lines.push(...formatPolicyPackHookVersionsSection(report));
|
|
444
489
|
lines.push(...formatPoliciesSection(report));
|
|
445
490
|
lines.push(...formatPolicyPacksSection(report));
|
|
446
491
|
lines.push(...formatWorkflowsSection(report));
|
|
447
492
|
lines.push(...formatRiskGateSection(report));
|
|
448
493
|
lines.push(...formatTemplateDriftSection(report));
|
|
494
|
+
lines.push(...formatTriggerBoundaryDriftSection(report));
|
|
449
495
|
lines.push(...formatHookBudgetLedgerMarginSection(report));
|
|
450
496
|
lines.push(...formatGroundingSection(report));
|
|
451
497
|
lines.push(...formatClaudeMcpSection(report));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cli/doctor/format.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cli/doctor/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -114,6 +114,16 @@ export interface CheckBinResolutionOptions {
|
|
|
114
114
|
export declare function checkBinResolution(manifest: Manifest, opts?: CheckBinResolutionOptions): Promise<BinResolutionReport>;
|
|
115
115
|
/** Render `checkBinResolution`'s issues as human-readable lines for the `init` tail. */
|
|
116
116
|
export declare function formatBinResolutionIssues(report: BinResolutionReport): string[];
|
|
117
|
+
/**
|
|
118
|
+
* Wraps a version probe with a per-full-argv cache, keyed on
|
|
119
|
+
* `JSON.stringify(cmd)` so two commands sharing only `cmd[0]` (e.g.
|
|
120
|
+
* `["understanding-gate", "--version"]` vs. `["understanding-gate",
|
|
121
|
+
* "--check"]`) are never conflated into the same cache slot; only a
|
|
122
|
+
* byte-identical argv array is deduped. Exported standalone (task
|
|
123
|
+
* ab634898) so this caching contract has its own focused
|
|
124
|
+
* unit test independent of any particular pack's hook shape.
|
|
125
|
+
*/
|
|
126
|
+
export declare function memoizeVersionProbe(probe: (cmd: readonly string[]) => string | null): (cmd: readonly string[]) => string | null;
|
|
117
127
|
/**
|
|
118
128
|
* Declared-but-not-live policy pack check. `expandPolicyPacks` silently
|
|
119
129
|
* skips a pack whose `source:` token is unrecognised or whose builtin
|
package/dist/cli/doctor/index.js
CHANGED
|
@@ -8,11 +8,12 @@ import { RealMcpProbe, probeAll, } from "../../probes/mcp.js";
|
|
|
8
8
|
import { EVIDENCE_LEDGER_DB_ENV, GROUNDING_MCP_SERVER_NAME, } from "../apply/generate-settings.js";
|
|
9
9
|
import { parsePackSource } from "../../policy-packs/source.js";
|
|
10
10
|
import { resolveBuiltin } from "../../policy-packs/registry.js";
|
|
11
|
+
import { expandPolicyPacks } from "../../policy-packs/index.js";
|
|
11
12
|
import { checkPolicyPackConfigs } from "../../policy-packs/config-check.js";
|
|
12
13
|
import { checkPolicyPackVersions } from "../../policy-packs/version-check.js";
|
|
13
14
|
import { checkPolicyPackUxDrift } from "../../policy-packs/ux-drift-check.js";
|
|
14
15
|
import { DEFAULT_RUNTIME } from "../../policy-packs/runtime.js";
|
|
15
|
-
import { checkHookBudgetLedgerMargin, checkPolicyRiskWithoutEnvScope, checkSolutionAcceptanceKnobIgnored, checkSolutionAcceptanceProducer, checkTemplatePolicyDrift, createDefaultGitIgnoreProbe, } from "../validate/checks.js";
|
|
16
|
+
import { checkHookBudgetLedgerMargin, checkPolicyRiskWithoutEnvScope, checkSolutionAcceptanceKnobIgnored, checkSolutionAcceptanceProducer, checkTemplatePolicyDrift, checkTriggerBoundaryDrift, createDefaultGitIgnoreProbe, } from "../validate/checks.js";
|
|
16
17
|
import { loadManifest } from "../loader.js";
|
|
17
18
|
import { countCodexDiagnostics, findOnPath, runCodexTargetChecks, } from "./codex.js";
|
|
18
19
|
import { countOpencodeDiagnostics, runOpencodeTargetChecks, } from "./opencode.js";
|
|
@@ -289,6 +290,8 @@ function checkHookVersion(hook, versionProbe) {
|
|
|
289
290
|
if (stdout === null) {
|
|
290
291
|
return {
|
|
291
292
|
status: "warn",
|
|
293
|
+
kind: "probe_failed",
|
|
294
|
+
actualVersion: null,
|
|
292
295
|
message: `version probe failed for ${hook.version_command.join(" ")}`,
|
|
293
296
|
};
|
|
294
297
|
}
|
|
@@ -296,15 +299,99 @@ function checkHookVersion(hook, versionProbe) {
|
|
|
296
299
|
if (!m || !m[1]) {
|
|
297
300
|
return {
|
|
298
301
|
status: "warn",
|
|
302
|
+
kind: "parse_failed",
|
|
303
|
+
actualVersion: null,
|
|
299
304
|
message: `could not parse a version from "${stdout.trim()}"`,
|
|
300
305
|
};
|
|
301
306
|
}
|
|
302
307
|
const actual = m[1];
|
|
303
308
|
const cmp = compareVersions(actual, hook.min_version);
|
|
304
309
|
return cmp < 0
|
|
305
|
-
? {
|
|
310
|
+
? {
|
|
311
|
+
status: "warn",
|
|
312
|
+
kind: "below_floor",
|
|
313
|
+
actualVersion: actual,
|
|
314
|
+
message: `outdated: installed v${actual} < required ${hook.min_version}`,
|
|
315
|
+
}
|
|
306
316
|
: { status: "ok", message: `v${actual} ≥ ${hook.min_version}` };
|
|
307
317
|
}
|
|
318
|
+
/**
|
|
319
|
+
* Wraps a version probe with a per-full-argv cache, keyed on
|
|
320
|
+
* `JSON.stringify(cmd)` so two commands sharing only `cmd[0]` (e.g.
|
|
321
|
+
* `["understanding-gate", "--version"]` vs. `["understanding-gate",
|
|
322
|
+
* "--check"]`) are never conflated into the same cache slot; only a
|
|
323
|
+
* byte-identical argv array is deduped. Exported standalone (task
|
|
324
|
+
* ab634898) so this caching contract has its own focused
|
|
325
|
+
* unit test independent of any particular pack's hook shape.
|
|
326
|
+
*/
|
|
327
|
+
export function memoizeVersionProbe(probe) {
|
|
328
|
+
const cache = new Map();
|
|
329
|
+
return (cmd) => {
|
|
330
|
+
const key = JSON.stringify(cmd);
|
|
331
|
+
if (!cache.has(key))
|
|
332
|
+
cache.set(key, probe(cmd));
|
|
333
|
+
return cache.get(key) ?? null;
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Hook-level `min_version` floor on policy-pack-expanded hooks (task
|
|
338
|
+
* ab634898). `checkHooks` above only walks `manifest.hooks[]`, but the
|
|
339
|
+
* hooks Claude Code actually runs also include whatever
|
|
340
|
+
* `expandPolicyPacks` contributes, e.g. understanding-before-execution's
|
|
341
|
+
* UserPromptSubmit/Stop hooks, floored at understanding-gate 0.5.0
|
|
342
|
+
* (see `src/policy-packs/builtin/understanding-before-execution.ts`).
|
|
343
|
+
* Those pack-expanded hooks never reached `checkHookVersion`, so an
|
|
344
|
+
* operator on an older understanding-gate saw a clean doctor report
|
|
345
|
+
* even though the pause wiring (or the Understanding Report's 10th
|
|
346
|
+
* section) was silently degraded below the declared floor.
|
|
347
|
+
*
|
|
348
|
+
* Reuses `checkHookVersion` verbatim so the warning wording matches the
|
|
349
|
+
* manifest-hook case exactly. `versionProbe` is wrapped with a
|
|
350
|
+
* per-command cache so two hooks that share one `version_command` (the
|
|
351
|
+
* common case: user-prompt-submit and stop both probe
|
|
352
|
+
* `understanding-gate --version`) spawn the underlying binary once, not
|
|
353
|
+
* twice. Only below-floor / probe-failed / parse-failed results are
|
|
354
|
+
* returned; a hook at or above its floor produces nothing, mirroring
|
|
355
|
+
* the pack-level floor's "green ones produce nothing" contract
|
|
356
|
+
* (`checkPolicyPackVersions`). Always warn, never error: the pack still
|
|
357
|
+
* runs in degraded mode rather than failing outright.
|
|
358
|
+
*
|
|
359
|
+
* Always expands against `DEFAULT_RUNTIME` ("claude-code"), never
|
|
360
|
+
* `opts.target`: `--target codex` / `--target opencode` additionally
|
|
361
|
+
* evaluate the harness-side adapter health for that runtime, they do
|
|
362
|
+
* not change which runtime is actually installed and running the
|
|
363
|
+
* hooks. Matches the sibling pack-level check's `resolveBuiltin(pack,
|
|
364
|
+
* DEFAULT_RUNTIME)` further below (task ab634898:
|
|
365
|
+
* keying this on `--target` produced a below-floor install that showed
|
|
366
|
+
* no warning under `--target codex` and a spurious one under
|
|
367
|
+
* `--target opencode`, where the pack never wires in the first place).
|
|
368
|
+
*/
|
|
369
|
+
function checkPolicyPackHookVersions(manifest, versionProbe) {
|
|
370
|
+
// Always expands against DEFAULT_RUNTIME ("claude-code"), not
|
|
371
|
+
// `opts.target`: `--target` additionally evaluates the harness-side
|
|
372
|
+
// adapter health for that runtime (see checkPolicyPackHookVersions'
|
|
373
|
+
// header comment), it does not change which runtime is actually
|
|
374
|
+
// installed. Matches the sibling pack-level check's
|
|
375
|
+
// `resolveBuiltin(pack, DEFAULT_RUNTIME)` a few hundred lines below.
|
|
376
|
+
const expansion = expandPolicyPacks(manifest, DEFAULT_RUNTIME);
|
|
377
|
+
const dedupedProbe = memoizeVersionProbe(versionProbe);
|
|
378
|
+
const gaps = [];
|
|
379
|
+
for (const hook of expansion.hooks) {
|
|
380
|
+
const version = checkHookVersion(hook, dedupedProbe);
|
|
381
|
+
if (version && version.status === "warn" && hook.min_version) {
|
|
382
|
+
gaps.push({
|
|
383
|
+
name: hook.name,
|
|
384
|
+
event: hook.event,
|
|
385
|
+
declaredMinVersion: hook.min_version,
|
|
386
|
+
kind: version.kind,
|
|
387
|
+
actualVersion: version.actualVersion ?? null,
|
|
388
|
+
versionCommand: hook.version_command ?? [],
|
|
389
|
+
message: version.message,
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
return gaps;
|
|
394
|
+
}
|
|
308
395
|
function checkHooks(manifest, home, opts) {
|
|
309
396
|
const versionProbe = opts.versionProbe ?? (() => null);
|
|
310
397
|
return manifest.hooks.map((hook) => {
|
|
@@ -554,13 +641,37 @@ function buildRiskGate(manifest) {
|
|
|
554
641
|
* dogfood/CI run should fail until the manifest is caught up or the name
|
|
555
642
|
* is explicitly acknowledged under doctor.ignore_template_drift.
|
|
556
643
|
*/
|
|
557
|
-
|
|
558
|
-
|
|
644
|
+
/**
|
|
645
|
+
* Splits a `Diagnostic[]` into the `{ errors, warnings }` message-array
|
|
646
|
+
* shape every drift-style doctor section uses (task 037cfb7c review round
|
|
647
|
+
* 3: `buildTemplateDrift` and `buildTriggerBoundaryDrift` had become
|
|
648
|
+
* byte-identical bodies around two different `checkX(manifest)` calls;
|
|
649
|
+
* this is the one place that split lives now).
|
|
650
|
+
*/
|
|
651
|
+
function partitionDiagnosticsBySeverity(diags) {
|
|
559
652
|
return {
|
|
560
653
|
errors: diags.filter((d) => d.severity === "error").map((d) => d.message),
|
|
561
654
|
warnings: diags.filter((d) => d.severity === "warning").map((d) => d.message),
|
|
562
655
|
};
|
|
563
656
|
}
|
|
657
|
+
function buildTemplateDrift(manifest) {
|
|
658
|
+
return partitionDiagnosticsBySeverity(checkTemplatePolicyDrift(manifest));
|
|
659
|
+
}
|
|
660
|
+
/**
|
|
661
|
+
* Trigger-boundary drift (task 037cfb7c): shipped-by-name `bash_match`
|
|
662
|
+
* triggers (hook- and policy-level) missing a boundary alternative the
|
|
663
|
+
* template has, or missing a boundary group entirely. Doctor-only, like
|
|
664
|
+
* `checkTemplatePolicyDrift` immediately above: `checkTriggerBoundaryDrift`
|
|
665
|
+
* is deliberately not wired into validate's `runAssetChecks`, so
|
|
666
|
+
* `harness validate` does not run it (only `harness doctor` does). Uses
|
|
667
|
+
* the same `partitionDiagnosticsBySeverity` split as `buildTemplateDrift`
|
|
668
|
+
* above: `checkTriggerBoundaryDrift` only emits `error`-severity
|
|
669
|
+
* diagnostics today, but a future non-`error` diagnostic now surfaces in
|
|
670
|
+
* `warnings` instead of being silently dropped.
|
|
671
|
+
*/
|
|
672
|
+
function buildTriggerBoundaryDrift(manifest) {
|
|
673
|
+
return partitionDiagnosticsBySeverity(checkTriggerBoundaryDrift(manifest));
|
|
674
|
+
}
|
|
564
675
|
/**
|
|
565
676
|
* Hook-budget-vs-ledger-timeout margin (task d20a7e0c). Delegates to the
|
|
566
677
|
* shared validate check so `harness doctor` and `harness validate` stay
|
|
@@ -695,6 +806,10 @@ function countDiagnostics(report) {
|
|
|
695
806
|
// release are lost. Parallel to the hook-level version probe's
|
|
696
807
|
// `status: warn`.
|
|
697
808
|
warningCount += report.policyPacks.versionGaps.length;
|
|
809
|
+
// Hook-level min_version gaps on pack-expanded hooks (task ab634898):
|
|
810
|
+
// always warn-not-error, mirroring both the pack-level floor above
|
|
811
|
+
// and the manifest-declared hook floor in the `report.hooks` loop.
|
|
812
|
+
warningCount += report.policyPackHookVersions.length;
|
|
698
813
|
// Ux/producers drift is always warn: the pack still functions with the
|
|
699
814
|
// stale wording, the operator is just missing a wording improvement.
|
|
700
815
|
// Fix is opt-in (`harness pack reseed <name>`), so this never escalates
|
|
@@ -712,6 +827,14 @@ function countDiagnostics(report) {
|
|
|
712
827
|
// entries are warn-only (task adf037c1).
|
|
713
828
|
errorCount += report.templateDrift.errors.length;
|
|
714
829
|
warningCount += report.templateDrift.warnings.length;
|
|
830
|
+
// Trigger-boundary drift (task 037cfb7c): every entry is a measured,
|
|
831
|
+
// exploitable gate bypass (see checkTriggerBoundaryDrift's header),
|
|
832
|
+
// mapped to errorCount, mirroring templateDrift.errors immediately
|
|
833
|
+
// above; warnings mirrors templateDrift.warnings the same way (no
|
|
834
|
+
// warning-severity diagnostic exists today, but the pathway is wired
|
|
835
|
+
// so one would count instead of vanishing).
|
|
836
|
+
errorCount += report.triggerBoundaryDrift.errors.length;
|
|
837
|
+
warningCount += report.triggerBoundaryDrift.warnings.length;
|
|
715
838
|
// Hook-budget-vs-ledger-timeout margin (task d20a7e0c): every entry is
|
|
716
839
|
// a real fail-open gap, mirroring templateDrift.errors immediately
|
|
717
840
|
// above.
|
|
@@ -835,9 +958,11 @@ export async function doctor(opts = {}) {
|
|
|
835
958
|
const policies = buildPolicies(manifest);
|
|
836
959
|
const policyPacksVersionProbe = opts.versionProbe ?? (() => null);
|
|
837
960
|
const policyPacks = buildPolicyPacks(manifest, policyPacksVersionProbe, resolveGitIgnoreProbe(opts));
|
|
961
|
+
const policyPackHookVersions = checkPolicyPackHookVersions(manifest, policyPacksVersionProbe);
|
|
838
962
|
const workflows = buildWorkflows(manifest);
|
|
839
963
|
const riskGate = buildRiskGate(manifest);
|
|
840
964
|
const templateDrift = buildTemplateDrift(manifest);
|
|
965
|
+
const triggerBoundaryDrift = buildTriggerBoundaryDrift(manifest);
|
|
841
966
|
const hookBudgetLedgerMargin = buildHookBudgetLedgerMargin(manifest);
|
|
842
967
|
const groundingServer = manifest.tools.mcp.find((m) => m.name === GROUNDING_MCP_SERVER_NAME && m.enabled !== false) ?? null;
|
|
843
968
|
const grounding = groundingServer !== null
|
|
@@ -898,9 +1023,11 @@ export async function doctor(opts = {}) {
|
|
|
898
1023
|
hooks,
|
|
899
1024
|
policies,
|
|
900
1025
|
policyPacks,
|
|
1026
|
+
policyPackHookVersions,
|
|
901
1027
|
workflows,
|
|
902
1028
|
riskGate,
|
|
903
1029
|
templateDrift,
|
|
1030
|
+
triggerBoundaryDrift,
|
|
904
1031
|
hookBudgetLedgerMargin,
|
|
905
1032
|
...(grounding !== undefined ? { grounding } : {}),
|
|
906
1033
|
...(claudeMcp !== undefined ? { claudeMcp } : {}),
|