@lannguyensi/harness 0.59.2 → 0.61.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 +66 -0
- package/README.md +1 -1
- package/dist/cli/apply/apply.d.ts +20 -0
- package/dist/cli/apply/apply.js +13 -7
- package/dist/cli/apply/apply.js.map +1 -1
- package/dist/cli/apply/install-codex-config.d.ts +26 -4
- package/dist/cli/apply/install-codex-config.js +299 -120
- package/dist/cli/apply/install-codex-config.js.map +1 -1
- package/dist/cli/approve/understanding.d.ts +6 -6
- package/dist/cli/approve/understanding.js +62 -58
- package/dist/cli/approve/understanding.js.map +1 -1
- package/dist/cli/bounded-stdin.d.ts +27 -0
- package/dist/cli/bounded-stdin.js +82 -0
- package/dist/cli/bounded-stdin.js.map +1 -0
- package/dist/cli/doctor/format.js +22 -0
- package/dist/cli/doctor/format.js.map +1 -1
- package/dist/cli/doctor/index.js +60 -31
- package/dist/cli/doctor/index.js.map +1 -1
- package/dist/cli/doctor/settings-drift.js +12 -2
- package/dist/cli/doctor/settings-drift.js.map +1 -1
- package/dist/cli/doctor/types.d.ts +17 -0
- package/dist/cli/dry-run.js +7 -0
- package/dist/cli/dry-run.js.map +1 -1
- package/dist/cli/index.js +46 -144
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/pack/auto-approve-path.js +47 -13
- package/dist/cli/pack/auto-approve-path.js.map +1 -1
- package/dist/cli/pack/hook-bootstrap.d.ts +71 -5
- package/dist/cli/pack/hook-bootstrap.js +92 -18
- package/dist/cli/pack/hook-bootstrap.js.map +1 -1
- package/dist/cli/pack/hook-branch-protection.d.ts +6 -0
- package/dist/cli/pack/hook-branch-protection.js +11 -2
- package/dist/cli/pack/hook-branch-protection.js.map +1 -1
- package/dist/cli/pack/hook-codex-post-tool-use.js +2 -2
- package/dist/cli/pack/hook-codex-post-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-codex-pre-tool-use.d.ts +6 -0
- package/dist/cli/pack/hook-codex-pre-tool-use.js +52 -7
- package/dist/cli/pack/hook-codex-pre-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-post-merge-gate-record.d.ts +7 -0
- package/dist/cli/pack/hook-post-merge-gate-record.js +39 -2
- package/dist/cli/pack/hook-post-merge-gate-record.js.map +1 -1
- package/dist/cli/pack/hook-post-merge-gate.d.ts +6 -0
- package/dist/cli/pack/hook-post-merge-gate.js +17 -2
- package/dist/cli/pack/hook-post-merge-gate.js.map +1 -1
- package/dist/cli/pack/hook-post-tool-use.js +2 -2
- package/dist/cli/pack/hook-post-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-pre-tool-use.d.ts +7 -0
- package/dist/cli/pack/hook-pre-tool-use.js +84 -18
- package/dist/cli/pack/hook-pre-tool-use.js.map +1 -1
- package/dist/cli/pack/hook-runtime-reality.d.ts +2 -0
- package/dist/cli/pack/hook-runtime-reality.js +49 -9
- package/dist/cli/pack/hook-runtime-reality.js.map +1 -1
- package/dist/cli/pack/hook-solution-acceptance-writeguard.d.ts +6 -0
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js +11 -2
- package/dist/cli/pack/hook-solution-acceptance-writeguard.js.map +1 -1
- package/dist/cli/pack/hook-solution-acceptance.d.ts +6 -0
- package/dist/cli/pack/hook-solution-acceptance.js +11 -2
- package/dist/cli/pack/hook-solution-acceptance.js.map +1 -1
- package/dist/cli/pack/hook-subagent-start.d.ts +2 -0
- package/dist/cli/pack/hook-subagent-start.js +21 -4
- package/dist/cli/pack/hook-subagent-start.js.map +1 -1
- package/dist/cli/policy/intercept.d.ts +2 -0
- package/dist/cli/policy/intercept.js +14 -13
- package/dist/cli/policy/intercept.js.map +1 -1
- package/dist/cli/record/index.d.ts +11 -2
- package/dist/cli/record/index.js +114 -25
- package/dist/cli/record/index.js.map +1 -1
- package/dist/cli/session-start/branch-check.d.ts +3 -29
- package/dist/cli/session-start/branch-check.js +10 -37
- package/dist/cli/session-start/branch-check.js.map +1 -1
- package/dist/cli/session-start/index.d.ts +3 -32
- package/dist/cli/session-start/index.js +19 -31
- package/dist/cli/session-start/index.js.map +1 -1
- package/dist/cli/session-start/shared-options.d.ts +103 -0
- package/dist/cli/session-start/shared-options.js +107 -0
- package/dist/cli/session-start/shared-options.js.map +1 -0
- package/dist/cli/session-start/stale-base-check.d.ts +3 -28
- package/dist/cli/session-start/stale-base-check.js +10 -37
- package/dist/cli/session-start/stale-base-check.js.map +1 -1
- package/dist/cli/session-start/toolchain-parity.d.ts +5 -21
- package/dist/cli/session-start/toolchain-parity.js +9 -38
- package/dist/cli/session-start/toolchain-parity.js.map +1 -1
- package/dist/cli/smoke/index.d.ts +1 -1
- package/dist/cli/smoke/index.js +8 -11
- package/dist/cli/smoke/index.js.map +1 -1
- package/dist/policy-packs/builtin/post-merge-gate-runtime.d.ts +11 -0
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js +11 -0
- package/dist/policy-packs/builtin/post-merge-gate-runtime.js.map +1 -1
- package/dist/policy-packs/builtin/post-merge-gate.js +5 -2
- package/dist/policy-packs/builtin/post-merge-gate.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.d.ts +36 -0
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js +73 -0
- package/dist/policy-packs/builtin/understanding-before-execution/expiry-reason.js.map +1 -0
- package/dist/policy-packs/builtin/understanding-before-execution/index.d.ts +3 -2
- package/dist/policy-packs/builtin/understanding-before-execution/index.js +5 -2
- package/dist/policy-packs/builtin/understanding-before-execution/index.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js +1 -0
- package/dist/policy-packs/builtin/understanding-before-execution/markers.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.d.ts +253 -1
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js +429 -13
- package/dist/policy-packs/builtin/understanding-before-execution/persisted-reports.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.d.ts +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js +2 -2
- package/dist/policy-packs/builtin/understanding-before-execution/post-tool-use-boundary.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.d.ts +36 -0
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js +50 -0
- package/dist/policy-packs/builtin/understanding-before-execution/task-markers.js.map +1 -1
- package/dist/policy-packs/builtin/understanding-before-execution.d.ts +3 -2
- package/dist/policy-packs/builtin/understanding-before-execution.js +4 -1
- package/dist/policy-packs/builtin/understanding-before-execution.js.map +1 -1
- package/dist/runtime/bash-prefix-parse.js +319 -126
- package/dist/runtime/bash-prefix-parse.js.map +1 -1
- package/dist/runtime/deletion-target-resolve.js +24 -1
- package/dist/runtime/deletion-target-resolve.js.map +1 -1
- package/dist/runtime/destructive-shell-floor.js +15 -1
- package/dist/runtime/destructive-shell-floor.js.map +1 -1
- package/dist/runtime/intercept.d.ts +38 -0
- package/dist/runtime/intercept.js +224 -5
- package/dist/runtime/intercept.js.map +1 -1
- package/dist/runtime/read-only-bash.js +11 -1
- package/dist/runtime/read-only-bash.js.map +1 -1
- package/dist/runtime/shell-word.d.ts +42 -1
- package/dist/runtime/shell-word.js +174 -6
- package/dist/runtime/shell-word.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,72 @@ and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.61.0] - 2026-10-02
|
|
11
|
+
|
|
12
|
+
### Upgrade notes
|
|
13
|
+
|
|
14
|
+
- Re-run `harness apply` once. The understanding gate's SubagentStart hook command is now emitted with the `UNDERSTANDING_GATE_REPORT_DIR=<dir>` prefix like the other report-reading hooks; without it the new report-hash cross-check at subagent start cannot find the reports of a global manifest.
|
|
15
|
+
- Every PreToolUse gate of the pack hooks (`pre-tool-use`, `codex-pre-tool-use`, `branch-protection`, `solution-acceptance`, `solution-acceptance-writeguard`, `post-merge-gate`, `runtime-reality`) now blocks when its stdin does not deliver a complete, closed event within 3000 ms of idle time, instead of waiting for the host's hook timeout. Claude Code and Codex close stdin after writing the event, so normal use is unaffected; `harness pause` still wins.
|
|
16
|
+
- `harness apply --runtime codex --install` refuses a `~/.codex/config.toml` the TOML parser cannot read when the parse error sits before an already current harness block (exit 1, file untouched); it used to report "already up to date". Fix the TOML and re-run.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- **The `harness pack hook` verbs no longer hang when stdin is never closed, and the PreToolUse gates block on a timed-out read** (task `7dfdcaaf`, follow-up to `c8cfc110`). The shared reader in `src/cli/pack/hook-bootstrap.ts` (used by the 15 pack hook verbs that read an event on stdin) and the reader in `src/cli/pack/hook-runtime-reality.ts` read to end of input, so an open pipe that never closes held the hook until the host's own hook timeout. Both now share the idle-bounded reader in `src/cli/bounded-stdin.ts` (3000 ms without a chunk; a slow but live pipe is not cut off). A PreToolUse gate (`pre-tool-use`, `codex-pre-tool-use`, `branch-protection`, `solution-acceptance`, `solution-acceptance-writeguard`, `post-merge-gate`, `runtime-reality`) fails closed on a timed-out read, whether nothing or part of the event arrived: it blocks the tool call with a reason starting `stdin timeout:` that names the 3000 ms bound (Claude Code gates emit their usual block envelope and exit 0, `codex-pre-tool-use` exits 2 with the reason on stderr, `runtime-reality` emits its deny envelope and exits 2), instead of applying its empty or malformed event handling; the operator pause still wins. Without this, a host that stalled for more than 3 s and then wrote a complete gated event and closed would have turned a block into an allow. Every other pack hook (PostToolUse, Stop, SubagentStart, SubagentStop, UserPromptSubmit and the producers) treats a timeout as the bytes it read: one stderr note (`no complete event JSON on stdin within 3000 ms (stdin never closed); continuing as an empty event`, or `stdin did not close within 3000 ms of the last data; using the N bytes read`) and it carries on with the text read so far. Nothing changes for input that arrives and closes within the bound; hook output formats are unchanged.
|
|
21
|
+
|
|
22
|
+
- **The understanding gate's hook-reachable reads of the reports directory and parse-error logs are bounded (the evidence read, the PostToolUse boundary expiry, the auto-approval precondition and its consume step, the subagent-delegation lookup, the parse-error lookup), so planted files can no longer hang or kill the hooks on those reads (the consume step's write is not covered, see the last sentence of this entry); the operator commands `harness approve understanding` and `harness gc` stay unbounded on purpose** (task `4b39022f`, closes residual (4) named under 0.60.0 for the evidence read). The read behind `checkPersistedReport` (the block diagnostic of both PreToolUse hooks, on the no-marker path and after a refused marker) and behind `expirePersistedReport` (the PostToolUse boundary expiry) listed the reports directory with a separate `stat` and then `readFileSync`: a `*.json` symlink flipped to a FIFO between the two hung the hook (measured 4/20 runs on the Claude hook, 1/20 on the Codex hook), and one file of a few hundred megabytes gave a V8 fatal error and no decision on both; each ends as a non-blocking error for the runtime, i.e. the call proceeds. The same unbounded listing sat in the auto-approval precondition and the subagent-delegation lookup (reached on the same paths whenever `auto_approve` is configured, which the `harness init` default is for `bypassPermissions`), and the parse-error lookup read `parse-errors/*.log` with a `stat` and `readFileSync` too. All of them now open each entry once through `readReportFileBounded` (read-only, `O_NONBLOCK`, `fstat` on the descriptor, regular files up to 1 MiB, read through the descriptor) and skip anything else (a FIFO, a directory, a device, a symlink to one, a file over the cap, an unreadable file, one that grows while read) as if it were not in the directory. The auto-approval precondition also declines, so the call stays blocked, when its listing had to skip any entry: an oversized or unreadable newest report never lets it fall back to an older pending one. Decisions are unchanged: the same deny with the same reason on the no-marker path and after a refused marker, with a FIFO or a 2 MiB file next to the reports; a regular report within the cap is read, sorted and reported exactly as before. Consequences: a report over 1 MiB is no longer picked up as the session's evidence, so a block diagnostic that would have named it (`unsigned persisted-report approval rejected: ...`) now reads `no reports found`; the boundary expiry no longer rewrites such a file and acts on the newest report that was within the cap (when the newest approved report is oversized, the next in-cap one is expired); a parse-error log over the cap is not surfaced. `harness approve understanding` and `harness gc` keep the unbounded listing on purpose, so an oversized report is still found and refused or aged out. The auto-approval consume step no longer re-reads the report by path: it rewrites the text the precondition read through the bounded reader, and the write is a temp file renamed over the entry, which never opens what a symlink points at. Before, a report symlink retargeted to a FIFO or a few-hundred-megabyte file between the precondition and the consume hung or killed the hook in about a third of the attempts on both runtimes. `harness approve understanding` (including `--force`) still reads the report by path. Still open: the write path of the consume step, whose atomic write opens its temp file in the agent-writable reports directory without `O_EXCL`/`O_NOFOLLOW`, so a FIFO planted at the temp name can still hang the hook (pre-existing, tracked separately); the total volume of planted files (a separate residual); an agent-planted oversized report crashes `harness approve understanding` itself until the file is deleted (`docs/okf/understanding-gate-lockout-recovery.md`).
|
|
23
|
+
|
|
24
|
+
- **`harness apply --runtime codex --install` no longer refuses a legacy block with no hook table in it, its no-END refusal no longer offers an END position that keeps a harness hook running, and marker text inside a value is no longer read as a managed-block marker** (task `36d962d2`, follow-up to `e8f4fc03`). (1) A legacy config (no BEGIN marker) whose source-prefix line, with or without the generated header, sits directly above an operator table was refused when that table was a hook event table spelled without the `[[hooks.` prefix (`[[ hooks.Stop ]]`) and no END followed, or when a surviving END followed any foreign table: the split-block zone started at the block's own opening line, which is itself a split-block marker. The zone now starts after that line, so these configs install (the operator table is kept and named, an orphan END is excised, a second install gives the same bytes); a harness marker past the opening line still refuses. (2) When no END marker exists and a harness-commented hook table follows the named table, in either spelling (`[[hooks.Stop]]` or `[[ hooks.Stop ]]`), the refusal said to add an END right after the last harness hook table (before the named table), which contradicts itself and, followed by its parenthetical, left the later harness table running next to the fresh block. That option is now offered only when no harness-commented hook table follows; otherwise the refusal offers moving the named table below the last harness hook table. (3) Every managed-block marker (the BEGIN and END lines, the source-prefix line, the generated header and the `# harness hook:` comment) is now found by one rule: a whole trimmed line (equal to BEGIN or END, starting with the others) at the top level of the document. Before, BEGIN was found anywhere in the text, so BEGIN text in a string value or a trailing comment of an operator hook table made the install silently delete operator content after it (a key, or the whole next operator hook table), and BEGIN text in a multi-line string had the fresh block spliced into that string, growing on every install; the source-prefix and generated-header text opened a legacy block at the closing line of a multi-line string or at a trailing comment; an END comment line inside a multi-line array ended the block there or was excised as a stray END; and a `# harness hook:` line inside a string was reported as a removed hook. Marker text in a value (a single-line or multi-line string, a trailing comment, an inline table, an element or a comment line of a multi-line array) is now operator content: the install writes a fresh block and leaves that value as it was, a second install gives the same bytes, an END line that no block owns stays, and BEGIN text in a value is no longer refused as a second BEGIN marker. The same top-level line rule now decides whether a generated-header line opens a legacy block, which needs a hook table header line (`[[hooks.`, the older `[[hooks.pre_tool_use]]` included) after it: `[[hooks.` text in a string value, a multi-line string line or a comment line below a generated-header comment in an operator hook table opened that block, and the install replaced the operator's keys after the header line with the fresh block; the block is now appended and those keys stay. Two marker searches still match marker text as substrings: the split-block refusal's candidate list, which can only refuse, and the trailing comment run at the end of the scan, whose lines are whole top-level comment lines. Known boundary, unchanged: that run (blank and comment lines ending the file after a block with no END marker) is consumed with the block when the source-prefix, generated-header or `# harness hook:` text appears anywhere in it, so an operator comment there that mentions such text mid-line is removed. Behaviour change for a config the TOML parser used by harness cannot read: when its parse error sits before an already current block, the install reported "already up to date" and now refuses (exit 1, file untouched, no backup), since a marker line after the parse error is not at the top level of a readable prefix; a parse error after a current block still reports up to date. Tests pin all three, the generated-header shapes and the unreadable-config refusal, plus the substring refusal and the escaped `hooks` root key on the legacy no-END path. The stale `# Harness Codex hook wiring. Generated source:` and `# Generated by harness apply --runtime codex.` lines of an empty legacy block still stay where they were (as before for a block followed by a foreign table); they are not removed.
|
|
25
|
+
|
|
26
|
+
- **`harness record dogfood` refuses a session id with leading or trailing whitespace** (task `eed7c036`). The verb checked the trimmed session id for the `dogfood:<session>` content but wrote the fact into the untrimmed session, so `--session ' s1'` produced content `dogfood:s1` in session `' s1'`. It now exits `64` naming `--session` and writes nothing, consistent with the other record validation, rather than trimming, so content and target can never name different ids. The other record verbs and the ledger write are unchanged. Docs only alongside: the `ResolvePackOptions.reportsDir` comment says the `UNDERSTANDING_GATE_REPORT_DIR` prefix goes on each report-reading hook command (not every contributed hook), and the in-flight subagent dogfood README marks `payloads/rendered-settings.json` as a historical capture that predates the prefixed `subagent-start` command.
|
|
27
|
+
|
|
28
|
+
- **`harness doctor` no longer aborts on a malformed `.last-apply` when the understanding pack is declared** (task `3128df7a`). The settings-drift check read the record unguarded, so unparseable JSON or a record without a `files` map threw out of doctor. It now skips its comparison and adds a warning naming the file (`<generated dir>/.last-apply is unreadable (...); settings drift not checked`), which counts toward `warningCount`, the same shape as the runtime-selection fallback. A well-formed record gives the same output as before.
|
|
29
|
+
|
|
30
|
+
- **`harness record review` / `review-subagent` / `dogfood` reject values that would plant a second ledger tag** (task `237cc609`). The verbs write their fact as space-separated tag text and the gates match tags by substring, so `--branch "x review-subagent:master"`, `--base "x review-subagent:master"` or `--verdict "ok review-subagent:master"` also satisfied another branch's `review-subagent-before-pr-create-bash` gate. Every ref-like or id-like value embedded in a tag (`--branch`, including a branch resolved from git; `--base`; `--task`; `--pr`; the session id `record dogfood` writes as `dogfood:<session>`) is now refused when the trimmed value contains a `:` or any ASCII whitespace, which git ref names forbid anyway, so no real branch is refused and every tag namespace, custom ones included, is closed for these values without a list (free text is checked only against the six gate-opening namespaces listed here, so a custom namespace there is not refused); Unicode whitespace without a `:` stays accepted. Free text (`--verdict` and the summaries of all three verbs) stays free and is rejected (not rewritten, so the audit text is never altered) only when it carries `review-subagent:`, `review:`, `dogfood:`, `preflight:`, `risk-approved:` or `risk-override:` immediately followed by a non-whitespace character; prose like `code-review: approved` is kept. Each refusal exits `64` naming the flag, and nothing is written. Task, PR and branch values still share tag namespaces (`record review-subagent --task master` writes `review-subagent:master`, `record review --pr master` writes `review:master`), so a value that is itself a valid branch name is not stopped. Hardening of the advisory ledger only: the substring matcher and `ledger_add` are unchanged, and docs/CLI.md "Tag-injection validation" states the rules.
|
|
31
|
+
|
|
32
|
+
- **`harness pack hook subagent-start` no longer mints an in-flight subagent record under an approval whose report was edited** (task `dac02d5c`, closes residual (2) named under 0.60.0). After a parent marker matched, the hook now applies the same gate-read report-hash cross-check as both PreToolUse hooks (`verifyMatchedMarkerReport`, task marker first, session marker as fallback) before `writeInflightRecord`; when no report file carries the signed content any more it writes no record and says so on stderr (`approval refused, no report in the reports directory matches the content ...; no in-flight record for agent <id>`), so the subagent has nothing to present once the parent marker stops matching (claim switch, `max_age`) and blocks. An intact approval and a null-hash marker mint exactly as before; a task marker that fails the check while the session marker behind it verifies mints a record that names the session marker. The record format and its 24 h staleness window are unchanged. Codex has no SubagentStart wiring, so this is the Claude hook only. **Upgrade:** re-run `harness apply` once. The SubagentStart hook command is now emitted with the same `UNDERSTANDING_GATE_REPORT_DIR=<manifest-anchored dir>` prefix as the other report-reading hooks, so it reads the directory `harness approve understanding` wrote to; a settings file generated before this change keeps the bare command, which falls back to `<cwd>/.understanding-gate/reports`, a directory that usually does not exist, so the cross-check there neither sees the reports nor refuses an edited one.
|
|
33
|
+
|
|
34
|
+
- **A destructive command no longer escapes the risk floor or the deletion gate because one word carries a NUL-decoding ANSI-C escape** (task `5cc64860`, follow-up to `241d9e9e`). bash truncates a `$'...'` run at a NUL (measured on GNU bash 3.2.57, `printf '[%s]' <word> | od -c`; the first report measured 5.1.16), so `git push $'--force\0' origin`, `git reset $'--hard\0'`, `find / $'-delete\c@'`, `$'dd\0' of=/dev/sda` and `$'rm\0' -rf /home/x` run as their plain twins. The decoder keeps a literal U+0000 in the decoded word, so every exact comparison (a whole flag, a head name, a subcommand) in `src/runtime/destructive-shell-floor.ts` and `src/runtime/deletion-target-resolve.ts` missed them: the floor reported nothing (the plain twins are `high`, `high`, `critical`, `critical`) and the deletion gate made no decision for the `rm` form. Both scanners now examine the command a second time with every `$'...'` run that carries such an escape replaced by a single-quoted literal of the value bash passes, and keep both results: the floor keeps the hits of both scans, the resolver combines both verdicts (unresolvable if either reading is), so the second reading can only add a verdict, never remove one. `shell-word.ts` gains `decodeShellWordTruncatingNul` (each run cut at its first escape that decodes to NUL or any `\c` escape, the text around the run kept: `x$'a\0b'y` is `xay`) and `truncateNulRuns` (the rewrite of a whole command text, or `null` when no run carries such an escape, so a command without one is scanned once as before); the rewrite happens before the boundary split, so a `;`, `|` or `&` inside the cut-off part of a run (`git push $'--force\0;' origin`) disappears with it instead of tearing the word. `decodeShellWord`, its decoded values and the read-only classifier are unchanged. This is the comparison-only truncation variant, not a blanket fail-closed on any NUL word: a NUL escape in a harmless place (`echo $'a\0b'`, `git push $'origin\0' main`) stays as unclassified as before. It also gates a target that a NUL cuts back to a safe root itself (`rm -rf $'/tmp/\0x'` reaches bash as `/tmp/`, the safe root itself, which was not gated before). Over-cutting is the accepted direction: `\c` escapes other than `\c@` and `\u`/`\U` escapes that bash 3.2.57 leaves literal are cut too, which only adds a candidate reading, and a `$'` that bash reads inside single quotes is rewritten like a real run. A run without a closing quote is left as written. Measured base versus head over 276 commands (207 with a NUL escape: the read-only NUL corpus of `241d9e9e`, every NUL string in the runtime tests, the five commands above; 69 without one, among them the plain twins): no floor hit, no classified severity and no deletion verdict is lower at head, the 69 commands without a NUL escape give identical results, and 105 NUL commands are stricter; 27 of 27 sample words decode through the rewrite to exactly the bytes `/bin/bash` 3.2.57 passes. Pinned in `tests/runtime/destructive-shell-floor.test.ts`, `tests/runtime/deletion-target-resolve.test.ts`, `tests/runtime/intercept-deletion-gate.test.ts` and `tests/runtime/shell-word.test.ts`.
|
|
35
|
+
|
|
36
|
+
- **`harness policy intercept`'s stdin-timeout note now says what it does when nothing was read** (task `c5831891`, follow-up to `c8cfc110`). The shared note for an idle, empty stdin ended with `falling back to the default session resolution`, which fits the session-start producers but not `policy intercept`, which continues as an empty event. `stdinTimeoutNote` takes an optional caller tail; intercept passes `continuing as an empty event`, and the session-start producers' text is unchanged byte for byte. The idle-stdin tests in `tests/cli/bounded-stdin.test.ts` also restore the working directory in their `afterEach` cleanup before the temp dir is removed, so a regressed bound fails only the bound tests instead of breaking every later test with a deleted cwd.
|
|
37
|
+
|
|
38
|
+
- **`harness session-start branch-check`, `stale-base-check`, `toolchain-parity` and `harness policy intercept` no longer hang when stdin is never closed** (task `c8cfc110`). They awaited stdin's `end` with no bound, so a backgrounded compound command (or any caller holding an open pipe) left the hook idle forever. All five stdin-reading hook-style entries (these four and `preflight`) now share one idle-bounded reader (`src/cli/bounded-stdin.ts`): the 3 s idle timer restarts on every chunk, so a slow but live payload is still read in full, and a timeout writes a stderr note and carries on with what was read (an empty read is an empty event, partial text is parsed). `policy intercept` keeps its fail posture: malformed event JSON still exits 0 with no decision and a stderr note. Hook output formats are unchanged. The pack hooks (`hook-bootstrap.ts`, `runtime-reality`) keep their own readers.
|
|
39
|
+
|
|
40
|
+
## [0.60.0] - 2026-10-01
|
|
41
|
+
|
|
42
|
+
### Upgrade notes
|
|
43
|
+
|
|
44
|
+
- A live understanding-gate approval written by an earlier release is denied once after upgrading (its marker signed the report's raw bytes, not the new canonical content hash): run `harness approve understanding` again; the deny reason names it.
|
|
45
|
+
- After approval, deleting the approved report while other report files remain now denies until you re-approve; `harness gc --apply` can do this when it removes an approved report whose marker is still live. Reports larger than 1 MiB or nested deeper than 64 levels can no longer be approved without `--force`.
|
|
46
|
+
- `${REPO}`/`${BRANCH}`-tagged gates now block from a cwd outside every git repository and from a detached HEAD instead of matching any fact; the message names the way forward (`cd <repo>` or `git -C <repo> ...`, `git switch <branch>`).
|
|
47
|
+
|
|
48
|
+
### Added
|
|
49
|
+
|
|
50
|
+
- **`harness record review-subagent --adhoc` records a review for work without an agent-tasks task** (task `bc97a697`). `--task` is no longer a `requiredOption`: exactly one of `--task <id>` or `--adhoc` is required, so a task-based flow still writes both `review-subagent:<task>` and `review-subagent:<branch>` exactly as before and cannot silently skip the task tag the MCP-surface `review-subagent-before-pr-create` gate keys on. With `--adhoc` the fact carries `review-subagent:<branch>` and the verdict only (no task token, and no invented id), which satisfies `review-subagent-before-pr-create-bash` for the recorded branch (tag matching is substring-based, see "Substring matching and the advisory trust model" in docs/CLI.md). Neither option, or both together, exits `64` with a message naming both options; `--adhoc` on a detached HEAD without `--branch` refuses with the existing no-branch reason instead of writing a blank tag. The MCP-surface gate is unchanged: an ad-hoc fact carries no task tag (a branch name that contains a task id can still match it, by the same substring rule).
|
|
51
|
+
|
|
52
|
+
- **The understanding gate's block message now says why an approval lapsed** (task `20ebf935`). A PostToolUse boundary (`expire_on_tool_match` / `expire_on_bash_match`) deletes the marker and used to leave only `approvalStatus=expired` on the persisted report, so the next block read `no approval marker for session <id>` with no cause. `expirePersistedReport` now also stores the triggering event next to `expiredAt` as an optional `expiredBy` field (`tool:<tool_name>` or `bash:/<regex>/`), and both PreToolUse hooks (Claude and Codex) render `approval expired because <event> at <time>` in the engine reason on stderr and, on Claude, as a closing sentence of the agent-facing block text after the `ux:` envelope the way the malformed-sections notice is (stdout `reason` / `permissionDecisionReason`, which omits the engine reason); the Codex agent reads the whole stderr diagnostic, so there the engine reason carries it once and nothing is appended; a `max_age` expiry, where the marker stays on disk, renders `approval expired because max_age <n>m elapsed (approved at <time>)`, so the two are textually distinct. A report without `expiredBy` (written before this field, or by a package producer) renders as before, and `harness approve understanding` drops `expiredBy` together with `expiredAt` on a re-approve. Message text and one optional report field only: no gate decision changes, the forged-marker, in-flight and task-binding reasons keep precedence, report values pass through the same sanitizer as the existing detail fields, and the shipped lifecycle defaults are untouched. `docs/policy-packs/understanding-before-execution.md` gains the expiry trigger matrix (which event expires which marker, what stays on disk, the `task_finish` to `review` exception, `mode: session`), and a test pins merge-before-finish under the shipped lifecycle as intended behaviour.
|
|
53
|
+
|
|
54
|
+
### Changed
|
|
55
|
+
|
|
56
|
+
- **The `session-start` producers share one options helper** (task `11bd2b97`, refactor only). `preflight`, `branch-check`, `toolchain-parity` and `stale-base-check`, and the CLI wiring of those subcommands and of the top-level `preflight` alias, each carried a copy of the options type, the stdin read, the cwd and session-source resolution and the `--config`/`--project`/`--session`/`--cwd`/`--ledger-timeout` commander options. They now use `src/cli/session-start/shared-options.ts`. CLI help text, option names, defaults, stderr output, exit codes and ledger writes are unchanged (the `--help` output of the four subcommands and of `harness preflight` is byte-identical before and after), and the existing tests are unchanged. The `preflight` producer keeps its own idle-bounded stdin read. The `check:duplication` pin drops from 113 to 92 (109 clones measured before, 92 after).
|
|
57
|
+
|
|
58
|
+
### Fixed
|
|
59
|
+
|
|
60
|
+
- **An approval marker's report hash is verified at gate read, so editing the approved report after approval no longer leaves a valid marker behind** (task `fa423e9b`, closes the "valid marker plus swapped report still allows" residual named under 0.50.0). Both PreToolUse hooks (Claude and Codex) apply one rule after a task-scoped or session marker matched: a marker with a non-null signed `reportContentHash` is valid only while at least one parseable report file in the reports directory (any session, any `approvalStatus`) has that canonical hash. The signed hash proves that the content the operator approved is still on disk unmodified; editing that file in place, replacing it, swapping in a symlink or rewriting it as unparseable JSON removes the only match, and the call is denied with `no report in the reports directory matches the content the <task|session> approval marker was signed for (the approved report was changed or removed after approval); re-run \`harness approve understanding\``. The rule deliberately does not compare against the session's newest approved report: that would deny legitimate approvals (a newer report approved for the same claim, two sessions sharing a claim, a standalone approve writing a new file) and would let a swap pass by moving the swapped report out of the selection. When the task-scoped marker fails the check, the session marker is checked the same way before the call is denied. Null-hash markers (no report resolved, or `--force` over a report the producer could not hash: too deeply nested or over the size cap) and a reports directory with no `*.json` entry at all behave as before (a forced approval of a hashable report signs its hash and is checked), and the read-only Bash carve-out and the `harness approve understanding` command stay reachable. The hash is `canonicalReportHash`: sha256 over a key-sorted JSON serialisation of the parsed report without the lifecycle fields `approvalStatus`, `approvedAt`, `approvedBy`, `expiredAt`, `expiredBy` and `sessionId`, so it survives the approval rewrite and a later expiry rewrite; `harness approve understanding` and the auto-approval path both sign it through that one function. The signed payload shape and `SIGNING_ALG` are unchanged. Hashing is total and its input is bounded: every `*.json` entry is opened once, read-only and non-blocking, typed and sized by `fstat` on the open descriptor and read through it (`readReportFileBounded`), and only a regular file of at most 1 MiB (`MAX_HASHED_REPORT_BYTES`) that parses as a JSON object nested at most 64 levels deep is hashed; anything else (a FIFO, a directory, a device, a symlink to one of them, a file over the cap or one that grows while read, an unreadable, unparseable or too deeply nested file) counts as a report file that matches nothing. Planted next to the reports, each of these used to make the hash scan die, overrun or hang instead of deciding (a non-blocking error for the runtime, so the call went through): a file nested a few thousand levels deep overflowed the stack, a wide array of a few hundred megabytes ran it out of heap, a file of millions of keys overran its time budget, and a symlink flipped to a FIFO between a stat and the read blocked the read. Over the cap a file now costs one open and one fstat (1000 files of 2 MiB: about 13 ms); the largest of 358 real reports measured on one machine was 12 KB. Both producers refuse a report the gate could not hash, the same way for depth and size: the auto-approval path declines it as `report invalid`, `harness approve understanding` fails validation on field `report`, and `--force` overrides with a marker that binds no report. Removing the approved report while other report files remain is a deny, and `harness gc --apply` can do that in a legitimate flow (it ages reports out by `createdAt`, approval markers by mtime); run `harness approve understanding` again. Cost: linear in the number of report files, and the usual allow path scans nearly all of them (name-ordered listing, newest report last); measured at about 4 ms for 100 and about 27 ms (full scan) for 1000 report files of 4 KB. **Residuals, not closed here:** (1) any regular `*.json` file in the reports directory within the size cap whose content equals the approved content keeps a match, whether it was kept before the edit or re-created after it, so the marker still allows; a reports directory that is empty, unreadable or holds no `*.json` entry at all falls back to the "no report file" allow, as before; (2) `hook-subagent-start.ts` mints the in-flight subagent record without this check, so a record written while the approval is refused can open the gate for that subagent after the parent marker stops matching (this predates the change and is unchanged); (3) the size cap bounds each file, not their number: 160 planted files of 1 MiB in the costliest shape measured (an object of about 110,000 keys, about 100 ms each to hash) took 15.9 s to scan, past the hook's 15 s budget, which the runtime treats as a non-blocking error (the same allow as before the check existed); only a session whose approval marker already matched reaches the scan; (4) once the marker is refused, both hooks fall through to the evidence read shared with the no-marker path (`checkPersistedReport` and `listPersistedReports`), which still reads every report file without a bound, so a FIFO swapped in during that read or a single file of a few hundred megabytes can still keep the hook from deciding, the same allow as before the check existed. **Back-compat, strict and without a migration window:** a marker written by an earlier release signed the report's raw-bytes hash, which never equals the canonical one, so a live approval whose report files exist is denied once after upgrading; run `harness approve understanding` again (the deny reason names it). The standalone `understanding-gate approve` CLI writes a new file, so an existing harness approval stays valid as long as the approved content file is unmodified. `hook-subagent-start.ts` and the auto-approval path's own post-mint re-check call `checkOperatorApprovalMarkers` without the cross-check and are unchanged; delegation markers were already verified at gate time.
|
|
61
|
+
|
|
62
|
+
- **An empty `${REPO}` or `${BRANCH}` no longer renders a blank ledger tag that any fact satisfies** (task `6c8ebd37`). A cwd outside every git repository, a detached HEAD, or an empty `HARNESS_REPO`/`HARNESS_BRANCH` override resolved the builtin to an empty string, so `preflight:${REPO}` became `preflight:`, a substring of every preflight fact (any `preflight:<other-repo>` fact let `preflight-before-investigation` through), and `preflight-before-push` told the agent "You cannot push branch yet.". When a policy's `requires.ledger_tag` references `${REPO}` or `${BRANCH}` and the value resolved for that context is empty (or only whitespace), `harness policy intercept` now decides from the policy's own `enforcement:` (`block` denies, `require_approval` requires approval, `warn` warns and does not block) with its own reason and no ledger query; an empty override counts as empty, a non-empty one stays effective. Behaviour change: from a cwd outside a git repository a blank `git status` (and every other `${REPO}`-tagged gate) is now blocked with a hint instead of passing on an unrelated preflight, and a push from a detached HEAD (for example `git push origin HEAD:refs/heads/x`) is blocked until a branch is checked out; `review:${BRANCH}` and `review-subagent:${BRANCH}` (the `gh pr merge` and `gh pr create` gates) are affected the same way. The way forward is in the message and names only a state the agent can establish: `cd <repo>` or `git -C <repo> ...` when no repository is found, `git switch <branch>` (or `git switch -c <branch>`) on a detached HEAD, then create the evidence for that branch and retry; it asks for no tag and names no opt-out. The agent envelope renders this reason instead of the policy's `ux:` and `producers:` text, and it is not the `deny-degraded` outcome (that envelope blames an unreadable ledger). A policy whose `ledger_tag` has neither builtin behaves as before, and the substring match is unchanged. For a command that also names a foreign target (`git -C <repo> ...`), each evaluated context is guarded on its own: a foreign repository on a detached HEAD denies even when the cwd context is satisfied. The named remedy itself passes: when the working directory is outside every git repository (a blank `${REPO}` as the guard sees it, after the policy's own `trigger.extract`) and a segment's own target (`git -C <repo> ...`, or `cd <repo> && ...`) resolved to a real repository, the cwd context is not demanded next to the target's own context, which is still demanded in full. That skip relies on two static models: the target attribution, whose known misattribution (a `GIT_DIR=` prefix or a third repository reached through another construct) exists for every cwd, and the check that the cwd is outside every repository, which errs toward inside: the skip applies only when neither the cwd's real path nor any ancestor up to the filesystem root holds an entry named `HEAD` or `.git` (any type, valid or not) and no lookup there failed with an error other than ENOENT. Every git directory holds a `HEAD` entry, so the cwd context stays demanded wherever git can find a repository from the cwd's own directories: below a `.git` directory without `HEAD`, at any depth below a repository, in a bare repository, and in (or below) a directory holding only `HEAD` and a `commondir` file; a stray entry named `HEAD` also keeps it (a conservative deny with the hint). The check runs at most once per event. What remains outside both models: a third repository the command really runs in (a `GIT_DIR=` prefix, or a `cd` into another repository before the misattributed segment), state the command itself creates while it runs (for example a `.git` it links before the git verb), and an ambient `GIT_DIR` or `GIT_COMMON_DIR` in the environment git runs with. A detached cwd keeps its cwd context: `git -C <repo> push` from a detached HEAD is denied until a branch is checked out in the working directory's repository, and the hint names that repository (control characters blanked, at most 200 characters, since the name can come from a `HARNESS_REPO` override or a `REPO` extract). Every other non-blank cwd context still demands both contexts as before, and a segment without a resolved target (a bare `git status` or `git push` from a cwd outside a repository, or the second command of `git -C <repo> status && git status`) still denies with the hint. `harness dry-run` shows the same hint (prefixed `(no ledger query: ...)`) in `ledgerQuery` instead of a blank tag, and no pending-approval marker is staged for a `require_approval` decision of this kind, since no approval tag could unblock it. Pinned in `tests/runtime/intercept.test.ts` (including the `risk.degraded_fail_posture: fail_open` interplay: an empty identifier still denies, with no ledger query), `tests/runtime/intercept-cli.test.ts` and `tests/cli/dry-run.test.ts`.
|
|
63
|
+
|
|
64
|
+
- **The post-merge-gate recorder fires on every `gh pr merge` spelling the gate recognises** (task `68b73413`). `harness pack hook post-merge-gate-record` tested its trigger regex against the raw command only, while the `gh pr merge` gate policies also test `normalizeCommand`, `normalizeCommandAmpAware` and `normalizeCommandQuoteAware`; a merge the gate had checked (`nice gh pr merge 1`, `env`/`command`/`time` wrappers, `echo hi & nice gh pr merge 1 --squash`, `VAR='a; b' gh pr merge 1`) wrote no `post-merge-gate:merged:...` fact, so the blocker had no merged tip to compare against. The recorder now tests the raw command first and, only if that misses, the three normalised forms in the gate's order, each computed lazily (a raw match normalizes nothing); strictly additive, so no spelling that matched before stops matching. Only the trigger widened: the fact is still written only when the merge is confirmed, and the PR number is still read from the raw command. Measured on a 36-command corpus (28 of which the gate's `review-before-merge-bash` pattern matches): the raw-only recorder missed 21 gate-matched spellings, the four-arm recorder misses 0. Cost on a command that is not a merge (all four arms run): about 5 to 12 microseconds for a typical command, about 11 ms at the 100,000-character normalisation bound (raw alone: about 0.5 ms); a command above that bound is not normalised and stays raw-only, the one named residual. Pinned in `tests/cli/pack-hook-post-merge-gate-record.test.ts`.
|
|
65
|
+
|
|
66
|
+
- **A command with a NUL-decoding ANSI-C escape is no longer classified read-only** (task `241d9e9e`). bash truncates a `$'...'` run at a NUL and drops a NUL between two runs, and reads `\c@` the same way, so `find . -name c $'-delete\0XYZ'`, `find . -name c -$'\0'delete`, `sort $'--output\0' o.txt data.txt` and `file $'--compile\0X' -m magic`, plus the same through `env` and `command`, wrote or deleted while `isReadOnlyBashCommand` and `isReadOnlyBashPipeline` called them read-only (measured on GNU bash 3.2.57; the first report measured 5.1.16). The decoder emitted a literal U+0000 and kept going, so neither the decoded value nor the raw token matched a write flag in the read-only checks. Fail closed, no bash truncation is modelled: `src/runtime/shell-word.ts` exports `hasAnsiCNulEscape`, true for any `$'...'` run with an escape that decodes to NUL (`\0`, `\00`, `\000`, `\x0`, `\x00`, `\u0` to `\u0000`, `\U0` to `\U00000000`) or any `\c` escape (not modelled, so counted), and `isReadOnlyBashCommand` refuses such a command string before classifying tokens; `isReadOnlyBashPipeline` checks the whole string too, so a `|` inside a run cannot split an escape from its opening `$'`. The check over-reports on purpose: `\u`/`\U` count although bash 3.2.57 does not decode them, so an exotic read with such an escape now needs an approved report. Decoding is unchanged: `readAnsiC` and `decodeShellWord` return exactly what they returned before for such a word (a literal U+0000 where the escape stands), so every deny-side caller of `decodeShellWord` (the destructive-shell floor, the deletion-target resolver, the read-only write-flag checks) keeps its verdict; a raw-token return was measured to drop deny-side floor and resolver detections (`dd $'of=/dev/sda\0'`, `git push $'-f\0'`, `rm $'-rf\0' /home/x` and others) and was not shipped. Pinned in `tests/runtime/read-only-bash.test.ts` (the five spellings over find, sort and file, the `env` and `command` recursions, the pipeline classifier, `\c@`, and non-NUL controls that stay read-only), `tests/runtime/shell-word.test.ts` (the predicate and the unchanged decoded values), `tests/runtime/destructive-shell-floor.test.ts` and `tests/runtime/deletion-target-resolve.test.ts` (the floor and resolver verdicts for these spellings, plus one end-to-end critical case).
|
|
67
|
+
|
|
68
|
+
- **The Bash prefix parser reads quoted values, `cd` paths and branch tokens as whole shell words, and no longer drops a `__proto__=` assignment** (task `b093911d`). `src/runtime/bash-prefix-parse.ts` ended a quoted word at the first matching quote character, so `VAR="say \"hi\"" cd /tmp && x` kept `say \` and lost the real `cd`, and `VAR='it'\''s fine'` kept `it`; a lost `cd` target or a cut value can hide a production indicator from the Risk Gate resolver (`env_var_patterns`, `branch_patterns`). A word is now read the way bash reads it: unquoted text, backslash escapes, single- and double-quoted parts joined up to unescaped whitespace (so `p'r'od` and `pro\d` are `prod`). A word whose quote only an escaped quote could close keeps the old first-quote reading; a quote with no closing quote still falls through. A `git switch`/`checkout` branch word that does not start with a quote but has a `$` in a double-quoted part (`release/"$V"`) is read raw as before, so the `release/*` match, a later `cd` and the kubectl remainder stay reachable; one that starts with a quote and interpolates stays unresolved. An inline env word that does not start with a quote swallows unquoted `;`, `&`, `|` and `||` as a plain value always has. Not covered, pinned by tests: ANSI-C `$'...'` (kept raw) and `$VAR`/`$(...)` (literal text). `inlineEnv` is now a null-prototype object, so `__proto__=/prod cd /x && ...` keeps the assignment (a plain `{}` ignored it) and `constructor=` still works. Acceptance is signal-level, not "nothing extracted before is lost" (a reader that changes word boundaries cannot promise that): measured against the previous parser, a 44-shape high-risk set (plain, quoted and escaped env values and `cd` paths, literal, quoted and `release/"$V"` branches followed by a `cd` or kubectl, `__proto__=`, the `'\''` idiom, `\"` in double quotes) loses no production signal and newly sees 13; on two fixed-seed generated corpora with bash 3.2 as referee (59,187 and 58,901 commands that ran) missed signals from a non-prod cwd drop from 1,258 to 825 and 1,254 to 786 (env), 4,626 to 3,494 and 4,622 to 3,500 (branch), 3,695 to 2,933 and 3,815 to 3,039 (`cd`); the 6 remaining new misses all belong to two named residual classes whose plain twin the previous parser also misses (an env word that swallows an operator, so a later assignment overrides the value bash keeps; a branch word followed by more words, now including an escaped `;`). The trade: from a prod cwd, wrong `cd` downgrades (a non-prod `cd` that bash does not end in) rise from 485 to 854 and 475 to 824, all in pre-existing classes the parser now reaches more often (first `cd` read while a later one wins, a `cd` in an and-list a later `&` backgrounds, a phantom `cd` behind an operator an env word swallowed, a plain path read across `|`); end to end, `harness policy intercept` from a prod cwd now allows `A=a\ b|| cd <non-prod repo> && terraform destroy` as it always allowed `A=x|| cd ...`. The same holds for an ambient production env signal that an inline assignment overrides: wrong env downgrades fall from 7,293 to 7,054 and 7,132 to 6,886 overall, but a quoted or escaped prefix such as `cd /tmp/my\ app && DATABASE_URL=dev ./seed.sh; terraform destroy` now allows as its plain spelling always has. `npm run measure:bash-prefix-parse` reports 0 lost honest cd targets against master and the shipped release (11 of 17 arms prove nothing and are excluded, not counted as zero). Residual classes are listed in the module header.
|
|
69
|
+
|
|
70
|
+
- **`harness preflight` / `harness session-start preflight` no longer waits forever on a stdin that never closes** (task `dda77b46`). The producer awaited stdin's end of input on every run, even with `--session`, so a backgrounded compound command with no terminal (stdin an open, never-closed pipe) left the process idle indefinitely. With `--session <id>` stdin is no longer read (the process cwd is then used, not the event's). Without it the read is idle-bounded (3000 ms with no new data, restarted on each chunk, so a slow live pipe is not cut off): on a timeout a stderr note names the bound (when nothing was read the run falls back to the default session resolution; when data arrived but stdin stayed open, the note says so and the bytes read are used), exit code 0 as before. The SessionStart hook path (event JSON piped, stdin closed) is unchanged. Side effect: an interactive run in a terminal waits the 3000 ms unless `--session` is given. The other `session-start` producers keep their own unbounded read. Pinned in `tests/cli/session-start/preflight-stdin.test.ts` (a real child process with an open, never-closed stdin exits 0 with the note; the never-ending-stream case with `--session` records zero read attempts).
|
|
71
|
+
|
|
72
|
+
- **`harness smoke` no longer rewrites the operator's `harness.generated/`, and `harness doctor` expands policy packs against the runtime `harness apply` selects** (task `04b8abcf`, follow-up to the review of task `b9e6d63c`). smoke applied the `claude-code` variant into the operator's generated tree, so between a smoke run and the next plain apply a codex machine's audit copies were the claude-code variant. It now generates into its own `<output-dir>/harness.generated/` (kept with the other run artifacts): the apply output (generated files and `.last-apply`) of the operator's tree stays byte-identical and the `runtime: claude-code for smoke; ...` line is gone because nothing is left to restore; runtime state (the delegation marker unless `--no-delegate`, and the spawned session's hook state) is still written into the operator's tree, where the child's gates and hooks read it. `harness apply` gains an internal `generatedDir` option for this, which moves only the apply output: the pause sentinel in the rendered settings and the signing-key path in the opencode config and grounding-mcp registration stay anchored to the operator's generated dir; the runtime-reuse selection itself is unchanged. `harness doctor` expanded packs against the default `claude-code` regardless of the recorded runtime, so on a codex machine it reported claude-code hook floors the machine never runs. It now uses apply's own `selectRuntime` (recorded, inferred or default) for the pack hook-floor and declared-but-not-live checks, and names the runtime in a `Pack expansion runtime:` line and a `packExpansionRuntime` JSON field. A malformed `.last-apply` no longer aborts doctor's runtime selection: it falls back to the default runtime and warns, naming the file (the settings-drift check, which runs when the understanding pack is declared, still aborts on a malformed record). A codex-recorded machine no longer gets a spurious understanding-gate floor warning; `--target` still does not change the expansion.
|
|
73
|
+
- **The Codex install names and checks a hook table spelled without the `[[hooks.` prefix, and a legacy config no longer keeps a second END marker** (task `e8f4fc03`). A comment-less hook event table spelled `[[ hooks.Stop ]]`, `[["hooks".Stop]]` or `[[hooks . Stop]]` directly after the harness hook tables was read as a foreign table and kept as a foreign section, so a harness command in it ran next to the fresh block's. Such a table is now one of the kept operator hook tables, on the BEGIN path and on both legacy paths, with or without an END marker after it: it is named once (header and line numbers, never value text) in the plan's `keptOperatorHookTables`, `--dry-run` and the install summary, and the install refuses, file untouched, when its command is one harness writes; that refusal asks the operator to delete the table (or, with an END marker after it, to move an operator-owned table below it) rather than to restore a comment line, since the scan reads a respelled table as foreign with or without one. A legacy config (no BEGIN marker, source-prefix or generated-header path) whose harness tables are followed by a non-hook foreign table and then a surviving END marker is now handled like the BEGIN path: a harness-commented table before that END refuses through the split-block check, naming the foreign table and the marker's line number only, and an END orphaned after the foreign table is removed, so the install writes one END and a second install gives the same bytes; before, the install kept the later harness table (its hook ran twice) and the old END. That surviving END counts only as a whole line outside a multi-line string, indented or not, so END text inside a foreign table's string or in the middle of a value does not send a legacy config down this path. On a legacy path with no END marker whose scan ended at a respelled hook table, a harness marker in the run of hook tables from there (a `# harness hook:` comment line above the respelled table or above a later table) now refuses through the same split-block check, naming the respelled table and the marker's line number; the last release kept those tables silently, so a retired harness hook kept running or the Stop hook ran twice. The split-block refusal, on every path, now says the marker line sits above the named table when it does, and for a respelled hook event table offers deleting it if harness wrote it. Deliberate boundaries, unchanged and pinned by the existing fixtures: a hook table after the first foreign table of the zone after the harness tables is kept, not named and not checked (only the run of hook tables directly after the harness tables is examined); content below an END marker the install keeps is never read, so a harness-commented table there is kept and not named (moving an operator table below END is the fix the refusals offer, and relies on this); a legacy config whose scan ended at a foreign table with no END marker anywhere after it keeps its old reading of the rest of the file (no split-block check) past the run of hook tables directly after the block. Two more deliberate boundaries, pinned by new tests: a `hooks` root key spelled with an escape sequence (`[["ho\u006fks".Stop]]`) is not resolved, so its table is kept as a foreign section, not named and not checked, and a harness command in it runs next to the fresh block's; and the split-block check on the legacy paths matches its markers as substrings, like the BEGIN path's, so a value in the checked zone that holds marker text (`# harness hook:`) refuses too (file untouched, line number only). The 0.59.2 entry's qualifier on the header order match also holds for element lines spelled `[["hooks"]]` and `[[ 'hooks' ]]`: each such line's first key resolves to `hooks`, so the order match runs the top-level check (a parse) on it, like on `["hooks"]`. Pinned in `tests/cli/apply/apply-codex-install-boundaries.test.ts`, which also pins three exact comparisons no fixture held before: a nested `hooks` sub-key compared case-sensitively (`[[hooks.Stop.HOOKS]]` under a kept entry with two inline hooks is not the nested hooks array), a `hooks` root compared without trimming (`[[ " hooks" . Stop ]]` above BEGIN is outside `hooks`), and an END marker compared as a whole line (a comment that starts with the END text, inside the block or past a foreign table, ends nothing), plus every CLI output mode for these shapes carrying no config value text.
|
|
74
|
+
- **The Codex install user doc describes kept operator hook tables and their refusal** (task `35eb287b`, docs only). `docs/policy-packs/understanding-before-execution.md` said `--dry-run` and the install summary name "every foreign section it preserves" and did not mention an operator-authored hook table kept after the harness block. It now says which tables are kept and named (a comment-less hook event table directly after the harness hook tables, in any spelling whose first key resolves to `hooks`), how the dry-run and the summary print one (the `preserving foreign section:` / `preserved foreign section:` prefix with the header and both line numbers, no value text; no label of its own, the printer is unchanged), when the install refuses (a kept table's command equals one of the fresh block's or starts with `harness `, a table it cannot match to its parsed entry, a harness marker in the zone) and the documented boundaries (a hook table after the first non-hook foreign table, a harness-commented table below a kept END marker, an escaped `hooks` root key, substring marker matching). The splice logic is unchanged.
|
|
75
|
+
|
|
10
76
|
## [0.59.2] - 2026-09-30
|
|
11
77
|
|
|
12
78
|
### Security
|
package/README.md
CHANGED
|
@@ -98,7 +98,7 @@ steps).
|
|
|
98
98
|
|
|
99
99
|
## Status
|
|
100
100
|
|
|
101
|
-
The current release is `v0.
|
|
101
|
+
The current release is `v0.61.0`. All seven planned phases have
|
|
102
102
|
shipped; phase acceptance criteria are in
|
|
103
103
|
[`docs/ROADMAP.md`](docs/ROADMAP.md), and what shipped in each version
|
|
104
104
|
is in [`CHANGELOG.md`](CHANGELOG.md).
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type DriftedAsset } from "../../io/harness-lock.js";
|
|
2
|
+
import { type LastApplyRecord } from "../../io/last-apply.js";
|
|
2
3
|
import { type ThreeStateVerdict } from "../../io/three-state.js";
|
|
3
4
|
import { type Runtime } from "../../policy-packs/index.js";
|
|
4
5
|
import { GENERATED_DIRNAME } from "../../io/generated-dir.js";
|
|
@@ -96,6 +97,18 @@ export interface ApplyOptions {
|
|
|
96
97
|
* stays absent.
|
|
97
98
|
*/
|
|
98
99
|
preserveRecordedRuntime?: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Generate into this directory instead of the `harness.generated/` next
|
|
102
|
+
* to the manifest. For a diagnostic apply (`harness smoke`) that must
|
|
103
|
+
* leave the operator's generated tree and its `.last-apply` record
|
|
104
|
+
* untouched; the runtime selection then reads the `.last-apply` of THIS
|
|
105
|
+
* directory, not the operator's. Resolved to an absolute path. Only the
|
|
106
|
+
* apply output (generated files, audit copies, `.last-apply`) moves;
|
|
107
|
+
* the settings' pause sentinel and the opencode/grounding-mcp signing-key
|
|
108
|
+
* path stay anchored to the operator's generated dir, since the
|
|
109
|
+
* operator's hooks and grounding-mcp resolve them there.
|
|
110
|
+
*/
|
|
111
|
+
generatedDir?: string;
|
|
99
112
|
}
|
|
100
113
|
export type ApplyOutcome = "no-changes" | "applied" | "drift-refuse" | "drift-discarded" | "would-apply" | "lock-drift-refuse" | "target-exists-refuse";
|
|
101
114
|
export interface FileApplyOutcome {
|
|
@@ -207,6 +220,13 @@ export type RuntimeSource = "explicit" | "target" | "last-apply" | "inferred" |
|
|
|
207
220
|
* previous one).
|
|
208
221
|
*/
|
|
209
222
|
export declare function formatRuntimeLine(result: Pick<ApplyResult, "runtime" | "runtimeSource" | "previousRuntime" | "runtimeCandidates">): string | null;
|
|
223
|
+
export interface RuntimeSelection {
|
|
224
|
+
runtime: Runtime;
|
|
225
|
+
runtimeSource: RuntimeSource;
|
|
226
|
+
previousRuntime?: Runtime;
|
|
227
|
+
runtimeCandidates?: Runtime[];
|
|
228
|
+
}
|
|
229
|
+
export declare function selectRuntime(explicit: Runtime | undefined, lastApply: LastApplyRecord | null, hasTarget: boolean): RuntimeSelection;
|
|
210
230
|
declare const DRIFT_HINT_MESSAGE = "run \"harness adopt <file>\" to capture changes, or re-run with --overwrite-drift to discard them";
|
|
211
231
|
export declare function apply(opts?: ApplyOptions): Promise<ApplyResult>;
|
|
212
232
|
export { DRIFT_HINT_MESSAGE };
|
package/dist/cli/apply/apply.js
CHANGED
|
@@ -204,7 +204,7 @@ function inferRuntimeFromFiles(record) {
|
|
|
204
204
|
// instead of reusing another runtime. A record without the field (or with
|
|
205
205
|
// an unknown value) falls back to inferring from its files map, then to
|
|
206
206
|
// the default; the caller names every non-explicit choice in its output.
|
|
207
|
-
function selectRuntime(explicit, lastApply, hasTarget) {
|
|
207
|
+
export function selectRuntime(explicit, lastApply, hasTarget) {
|
|
208
208
|
const recorded = lastApply?.runtime;
|
|
209
209
|
const recordedRuntime = isRuntime(recorded) ? recorded : undefined;
|
|
210
210
|
const inference = recordedRuntime === undefined && lastApply !== null
|
|
@@ -313,7 +313,12 @@ async function readlinePrompt(message) {
|
|
|
313
313
|
rl.close();
|
|
314
314
|
}
|
|
315
315
|
}
|
|
316
|
-
function buildExpectedFiles(manifest, opts, manifestPath, generatedDir
|
|
316
|
+
function buildExpectedFiles(manifest, opts, manifestPath, generatedDir,
|
|
317
|
+
// The operator's generated dir. It differs from `generatedDir` only when
|
|
318
|
+
// the caller redirected apply's output (`opts.generatedDir`); values that
|
|
319
|
+
// name runtime state the operator's hooks and grounding-mcp consult (the
|
|
320
|
+
// pause sentinel, the verdict signing key) stay anchored here.
|
|
321
|
+
stateDir = generatedDir) {
|
|
317
322
|
// Phase 6 #2: expand policy_packs[] into hook contributions + extra
|
|
318
323
|
// generated files BEFORE settings projection. Pack hooks flow through
|
|
319
324
|
// generate-settings unchanged (they're just additional Hook entries
|
|
@@ -344,7 +349,7 @@ function buildExpectedFiles(manifest, opts, manifestPath, generatedDir) {
|
|
|
344
349
|
// sentinel harness's own hooks resolve via generatedDir at runtime. See
|
|
345
350
|
// `ResolvePackOptions.pauseFile`'s doc comment for why only that one hook
|
|
346
351
|
// needs it.
|
|
347
|
-
const pauseFile = sentinelPath(
|
|
352
|
+
const pauseFile = sentinelPath(stateDir);
|
|
348
353
|
const packExpansion = expandPolicyPacks(manifest, runtime, {
|
|
349
354
|
reportsDir,
|
|
350
355
|
solutionVerdictDir,
|
|
@@ -408,7 +413,7 @@ function buildExpectedFiles(manifest, opts, manifestPath, generatedDir) {
|
|
|
408
413
|
// grounding-mcp entry gets a real, resolved SOLUTION_VERDICT_SIGNING_KEY
|
|
409
414
|
// instead of no projection at all (generateOpencodeConfig's extras have
|
|
410
415
|
// no safe default for this -- see GenerateOpencodeConfigExtras).
|
|
411
|
-
const opencodeConfig = generateOpencodeConfig(augmentedManifest, { generatedDir });
|
|
416
|
+
const opencodeConfig = generateOpencodeConfig(augmentedManifest, { generatedDir: stateDir });
|
|
412
417
|
const opencodeWarnings = [...opencodeConfig.warnings];
|
|
413
418
|
if (packExpansion.permissions) {
|
|
414
419
|
// See generate-opencode-config.ts's header ("permission -> NOT
|
|
@@ -436,7 +441,7 @@ function buildExpectedFiles(manifest, opts, manifestPath, generatedDir) {
|
|
|
436
441
|
// why this projection is not itself observable in settings.json.
|
|
437
442
|
const settingsResult = generateSettingsWithWarnings(augmentedManifest, {
|
|
438
443
|
...(packExpansion.permissions && { packPermissions: packExpansion.permissions }),
|
|
439
|
-
generatedDir,
|
|
444
|
+
generatedDir: stateDir,
|
|
440
445
|
});
|
|
441
446
|
const settings = `${JSON.stringify(settingsResult.root, null, 2)}\n`;
|
|
442
447
|
return {
|
|
@@ -531,7 +536,8 @@ export async function apply(opts = {}) {
|
|
|
531
536
|
if (!fs.existsSync(manifestPath)) {
|
|
532
537
|
throw new HarnessExitError(`harness manifest not found at ${manifestPath}; run \`harness init\` first`, EX_NOINPUT);
|
|
533
538
|
}
|
|
534
|
-
const
|
|
539
|
+
const operatorGeneratedDir = resolveGeneratedDir({ homeDir: opts.homeDir, manifestPath });
|
|
540
|
+
const generatedDir = opts.generatedDir !== undefined ? path.resolve(opts.generatedDir) : operatorGeneratedDir;
|
|
535
541
|
const lockPath = path.join(path.dirname(manifestPath), LOCK_BASENAME);
|
|
536
542
|
const loaderOpts = {
|
|
537
543
|
configPath: manifestPath,
|
|
@@ -574,7 +580,7 @@ export async function apply(opts = {}) {
|
|
|
574
580
|
const lastApply = readLastApply(generatedDir);
|
|
575
581
|
const runtimeInfo = selectRuntime(opts.runtime, lastApply, Boolean(opts.target));
|
|
576
582
|
const { runtime } = runtimeInfo;
|
|
577
|
-
const { files: expected, warnings } = buildExpectedFiles(manifest, { ...opts, runtime }, manifestPath, generatedDir);
|
|
583
|
+
const { files: expected, warnings } = buildExpectedFiles(manifest, { ...opts, runtime }, manifestPath, generatedDir, operatorGeneratedDir);
|
|
578
584
|
// The runtime this apply records: its own, or with
|
|
579
585
|
// `preserveRecordedRuntime` the previous one (recorded or inferred, else
|
|
580
586
|
// whatever the field held), so a diagnostic apply leaves the operator's
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/cli/apply/apply.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../src/cli/apply/apply.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,7 +71,9 @@ export interface CodexConfigInstallPlan {
|
|
|
71
71
|
* header and its 1-based line number in the config before the install and
|
|
72
72
|
* in the config the install writes (for example
|
|
73
73
|
* `[[hooks.Stop]] (line 14 before the install, line 40 after it)`), never
|
|
74
|
-
* any value text.
|
|
74
|
+
* any value text. A hook event table spelled without the `[[hooks.` prefix
|
|
75
|
+
* (`[[ hooks.Stop ]]`, `[["hooks".Stop]]`) directly after the harness
|
|
76
|
+
* tables is one of these too (task e8f4fc03). Named because the
|
|
75
77
|
* scan cannot tell such a table from a harness table whose comment line an
|
|
76
78
|
* operator deleted (task 01053b27); a kept table that looks
|
|
77
79
|
* harness-generated is refused instead (see `assertKeptHookTablesAreOperatorOwned`).
|
|
@@ -147,7 +149,8 @@ export declare function createTopLevelProbe(text: string): (lineStart: number) =
|
|
|
147
149
|
* `scanOwnedContentEnd`; when only blank or comment lines precede the found
|
|
148
150
|
* marker in the zone -- so the pre-marker lookup finds no content line to
|
|
149
151
|
* report -- the header is looked up again just past that marker's own
|
|
150
|
-
* line, since the wedged table then sits after it, not before
|
|
152
|
+
* line, since the wedged table then sits after it, not before, and the
|
|
153
|
+
* message says the marker line sits above the table (task e8f4fc03); printed
|
|
151
154
|
* through `describeTableHeader`, so only the header's own bracketed key
|
|
152
155
|
* path appears, never a trailing comment), and
|
|
153
156
|
* the line number and marker of the first line beyond it
|
|
@@ -161,14 +164,33 @@ export declare function createTopLevelProbe(text: string): (lineStart: number) =
|
|
|
161
164
|
* document (`to` is `text.length`), telling the operator to move something
|
|
162
165
|
* below a marker that does not exist would be nonsensical, so a different
|
|
163
166
|
* fix (add one, or move the table below the last harness hook table) is
|
|
164
|
-
* offered instead (task 6a037359).
|
|
167
|
+
* offered instead (task 6a037359). Adding one is offered only when no
|
|
168
|
+
* harness-commented hook table follows the named table
|
|
169
|
+
* (`harnessHookTableFollows`): an END placed before the named table would
|
|
170
|
+
* leave that later table running next to the fresh block (task 36d962d2).
|
|
171
|
+
* When the named table is a hook event table spelled without the `[[hooks.`
|
|
172
|
+
* prefix, the guidance offers deleting it if harness wrote it, since the scan
|
|
173
|
+
* reads such a table as foreign with or without a comment line above it
|
|
174
|
+
* (task e8f4fc03). The legacy paths call
|
|
175
|
+
* this too, so the substring matching above applies there as well: a value
|
|
176
|
+
* holding marker text refuses. This candidate list and the trailing comment
|
|
177
|
+
* run of `scanOwnedContentEnd` are the two marker searches that do not go
|
|
178
|
+
* through `createMarkerLineProbe`, on purpose. This one can only refuse,
|
|
179
|
+
* never install, so matching marker text in a value costs a refusal, never
|
|
180
|
+
* operator content. The comment run's lines are whole top-level comment
|
|
181
|
+
* lines, so marker text there is never inside a value, but that run (blank
|
|
182
|
+
* and comment lines ending the file after a block with no END marker) is
|
|
183
|
+
* consumed when the source prefix, the generated header or the
|
|
184
|
+
* `# harness hook:` text appears anywhere in it, so an operator comment
|
|
185
|
+
* there that mentions such text mid-line is removed with the block.
|
|
186
|
+
* `blockOpening` names the line the block
|
|
165
187
|
* starts at in the delete-the-lines fix: the BEGIN marker by default; a
|
|
166
188
|
* legacy config (no BEGIN marker) whose END marker survived passes its
|
|
167
189
|
* source-prefix line or generated header instead, since a BEGIN marker it
|
|
168
190
|
* does not have is no line to delete from (task 01053b27). For the generated
|
|
169
191
|
* header the fix deletes that line and the END marker line too: a generated
|
|
170
192
|
* header left alone above END no longer marks a harness block
|
|
171
|
-
* (`findManagedRange` needs a `[[hooks.` line after it), so the install
|
|
193
|
+
* (`findManagedRange` needs a top-level `[[hooks.` header line after it), so the install
|
|
172
194
|
* would add a fresh block and leave that pair behind as an orphan. Exported for
|
|
173
195
|
* direct tests only: the scan
|
|
174
196
|
* that feeds it never hands it a line that is not a real header, so its own
|