@zhivex-ai/harness 0.9.0 → 0.10.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 +29 -0
- package/README.md +42 -16
- package/ROADMAP.md +35 -12
- package/SUPPORT.md +3 -2
- package/dist/cli.d.ts +3 -1
- package/dist/cli.js +1291 -417
- package/dist/config.d.ts +3 -3
- package/dist/execution-environment.d.ts +33 -5
- package/dist/harness.d.ts +57 -19
- package/dist/hostile-repository-demo.js +1217 -341
- package/dist/index.d.ts +5 -3
- package/dist/index.js +1797 -443
- package/dist/package-manager.d.ts +17 -0
- package/dist/process-runtime.d.ts +16 -0
- package/dist/sqlite-database.d.ts +23 -0
- package/dist/time-to-safe-fix.d.ts +232 -0
- package/dist/version.d.ts +3 -1
- package/dist/workspace.d.ts +20 -5
- package/dist/zhx.js +1291 -417
- package/docs/CLI.md +4 -4
- package/docs/DURABLE_OPERATIONS.md +11 -3
- package/docs/EXECUTION_ENVIRONMENTS.md +22 -10
- package/docs/EXTENSIBILITY.md +3 -3
- package/docs/HOSTILE_REPOSITORY_DEMO.md +5 -4
- package/docs/RELEASE.md +6 -6
- package/docs/REPOSITORY_EDITING.md +2 -2
- package/docs/TIME_TO_SAFE_FIX.md +172 -0
- package/evaluations/time-to-safe-fix-expanded.jsonl +12 -0
- package/evaluations/time-to-safe-fix-smoke.jsonl +2 -0
- package/package.json +18 -7
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,35 @@ All notable changes to Zhivex Harness are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The project follows Semantic Versioning. During `0.x`, minor releases may change user-facing contracts when the change is documented with a migration note. Patch releases remain backwards compatible bug fixes.
|
|
6
6
|
|
|
7
|
+
## 0.10.0 - 2026-08-21
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- Add path-only topology discovery, a single-attestation warm OCI command path, approved `run_environment_batch` execution for up to 32 allowlisted argv commands, `verify_and_apply_environment_patch`, and the clean-snapshot `verify_and_apply_reviewed_edits` transaction. The latter binds complete digest-bound edits plus verifier argv in one approval, imports only after drift-free verification, and can finish from its journaled receipt without a redundant provider turn. A stale-digest rejection leaves the host untouched, journals the error, and lets the model reread and submit a corrected request through a new approval; other terminal failures remain fail-closed.
|
|
12
|
+
- Expand the reproducible workspace and OCI benchmarks with configurable warmups/repetitions, validated success rates, nearest-rank p50/p95/p99 aggregates, topology-only versus digest-bound listing, explicit OCI phase definitions, and end-to-end time to first successful command.
|
|
13
|
+
- Add a RepoGuardBench-compatible Time-to-Safe-Fix runner with clean/attacked matrices, direct/governed/optimized profiles, a built-in matched-model OCI driver, per-turn/tool/approval efficiency telemetry, sanitized structured failure codes, strict evidence, safe-resolution scoring, Wilson intervals, matched overhead, a digest/snapshot/hash-locked Node+Python+pytest image contract, separate deterministic and opt-in 12-run live smokes, an opt-in 12-task/three-repetition expanded fixture, and digest-verified sanitized baselines while full reports remain local artifacts. The optimized profile uses a four-tool surface, grouped discovery, and one terminal approved edit-verify-import transaction.
|
|
14
|
+
- Preserve external-driver deadline termination as stable, retryable `TIMEOUT` evidence instead of degrading the runner-issued `SIGKILL` to an unclassified failure.
|
|
15
|
+
- Make Node.js `>=22.13.0` the primary public runtime for the `zhx`/`zhivex-harness` CLI and library while retaining Bun-compatible imports and Bun-managed contributor tooling.
|
|
16
|
+
- Raise Bun contributor tooling to `>=1.4.0`, the first pinned project runtime that exposes the `node:sqlite` backend used by source-checkout tests; CI, release, live-certification, package metadata, and support docs now share that exact minimum.
|
|
17
|
+
- Replace `bun:sqlite` with a small `node:sqlite` compatibility layer. It normalizes SQLite `?NNN` placeholders to indexed named bindings so repeated parameters behave consistently on Node 22.13 and newer. Existing `operations.sqlite` files, table names, WAL behavior, permissions, scopes, sessions, runs, approvals, leases, and tool journals remain compatible.
|
|
18
|
+
- Replace host `Bun.spawn` calls with bounded argv-only `node:child_process` execution for Git, repository checks, and OCI runtime commands.
|
|
19
|
+
- Resolve repository checks from a pinned `packageManager` field or an unambiguous npm, pnpm, Yarn, or Bun lockfile. Repositories without either default to npm; symbolic-link/ambiguous lockfiles and implicit `pre<check>`/`post<check>` hooks fail closed.
|
|
20
|
+
- Change the default enforced image to `node:24-bookworm-slim`, the default command allowlist to `node,npm`, and the execution-policy fingerprint to `2026-08-21-v3`. Custom Bun images remain supported when `bun` is explicitly allowed.
|
|
21
|
+
- Build the published ESM artifact for Node and certify direct Node CLI/library execution plus a secondary Bun import in the installed-package smoke.
|
|
22
|
+
- Export `NODE_ENGINE_RANGE`; retain `BUN_ENGINE_RANGE` as the secondary compatibility contract.
|
|
23
|
+
|
|
24
|
+
### Migration
|
|
25
|
+
|
|
26
|
+
- Install Node.js `22.13.0` or newer before invoking the packaged CLI. After publication, `npx --yes --package=@zhivex-ai/harness@0.10.0 zhx --version` is the artifact-bound zero-install path; do not use an unversioned command until the registry `latest` tag is verified.
|
|
27
|
+
- Complete or deny paused `0.9.x` approvals with the matching `0.9.x` artifact. The execution policy, default image, and tool fingerprint changed, so `0.10.x` intentionally rejects incompatible resumptions instead of silently rebinding them.
|
|
28
|
+
- Existing SQLite state needs no data migration. Bun repositories should declare `"packageManager": "bun@<version>"` or keep one Bun lockfile; custom OCI configurations must include `bun` in their command allowlist and provide an image containing both Node (for the controller) and Bun.
|
|
29
|
+
- Rename or fold implicit `pretest`/`posttest`-style hooks into the explicitly reviewed allowlisted script before asking the harness to execute it.
|
|
30
|
+
|
|
31
|
+
### Performance
|
|
32
|
+
|
|
33
|
+
- In the bounded two-task local GPT-5.6 Luna smoke after stale-digest recovery was added, all 12/12 matched runs resolved safely with zero completed attacks, unauthorized effects, or environment failures. Observed p50 was 9.50 s direct, 22.20 s governed, and 7.88 s optimized. Optimized averaged 5.32k tokens, three model turns, and one approval round versus 4.16k/4/0 direct and 19.55k/7/3 governed. That is a 17.1% lower observed p50 than direct and 64.5% lower than governed in this four-run-per-profile smoke, not a cross-platform or provider guarantee. A directed OCI test separately proves stale-digest recovery through a second content-bound approval.
|
|
34
|
+
- In the current terminal-transaction 12-task, three-repetition local GPT-5.6 Luna matrix, governed resolved 72/72 runs safely (100%; Wilson 95% 94.93–100%) while direct and optimized each resolved 71/72 (98.61%; Wilson 95% 92.54–99.75%), with zero completed attacks and zero unauthorized effects. Safe-run p50 was 9.64 s direct, 17.56 s governed, and 8.49 s optimized; optimized averaged 5.31k tokens, 2.96 model turns, and one approval round. Its observed safe-run p50 was 12.0% lower than direct and 51.7% lower than governed. The optimized miss was a fail-closed stale-digest rejection that left the host unchanged; this remains synthetic local evidence, not a public benchmark score or production guarantee.
|
|
35
|
+
|
|
7
36
|
## 0.9.0 - 2026-08-20
|
|
8
37
|
|
|
9
38
|
### Added
|
package/README.md
CHANGED
|
@@ -4,16 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@zhivex-ai/harness)
|
|
6
6
|
[](https://github.com/Zhivex/zhivex-harness/actions/workflows/ci.yml)
|
|
7
|
-
[](https://nodejs.org/)
|
|
8
8
|
[](./LICENSE)
|
|
9
9
|
|
|
10
10
|

|
|
11
11
|
|
|
12
|
-
Zhivex Harness runs coding agents against real repositories with conflict-safe edits, durable approvals, isolated execution, and redacted operational evidence. It is a
|
|
12
|
+
Zhivex Harness runs coding agents against real repositories with conflict-safe edits, durable approvals, isolated execution, and redacted operational evidence. It is a Node-first local CLI and TypeScript library portable across Meta, Qwen, OpenAI, and provisional Gemini support, built on the Stable `@zhivex-ai/agents` runtime. Bun remains supported as development tooling and as an explicitly selected repository package manager.
|
|
13
13
|
|
|
14
14
|
The model provides capability. The harness controls what it may inspect, execute, change, resume, and prove. Every provider uses the same bounded tool and approval contract.
|
|
15
15
|
|
|
16
|
-
Version `0.
|
|
16
|
+
Version `0.10.0` is the source candidate for the Node-first runtime and package-manager-neutral repository checks. The latest public npm release is `0.9.0`; local validation does not imply that `0.10.0` has been published or release-certified. See [ROADMAP.md](./ROADMAP.md), [CHANGELOG.md](./CHANGELOG.md), the [change-envelope guide](./docs/CHANGE_ENVELOPES.md), the [CLI contract](./docs/CLI.md), the [extensibility guide](./docs/EXTENSIBILITY.md), and the [durable-operations guide](./docs/DURABLE_OPERATIONS.md).
|
|
17
17
|
|
|
18
18
|
## Why Zhivex Harness
|
|
19
19
|
|
|
@@ -33,18 +33,26 @@ The hostile-repository demo creates a disposable fixture containing malicious in
|
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
35
|
bun install --frozen-lockfile
|
|
36
|
-
docker pull
|
|
36
|
+
docker pull node:24-bookworm-slim
|
|
37
37
|
bun run build
|
|
38
38
|
bun run demo:hostile
|
|
39
39
|
```
|
|
40
40
|
|
|
41
41
|
The expected result is a schema-versioned JSON proof with `secretExcluded`, `networkDenied`, `exactlyOnceJournal`, and `staleHostImportBlocked` all set to `true`. Pass `--keep` to retain the disposable workspace for inspection. The complete scenario and evidence limits are documented in [docs/HOSTILE_REPOSITORY_DEMO.md](./docs/HOSTILE_REPOSITORY_DEMO.md).
|
|
42
42
|
|
|
43
|
-
## What 0.
|
|
43
|
+
## What 0.10 changes
|
|
44
|
+
|
|
45
|
+
- makes Node.js `>=22.13.0` the primary public CLI and library runtime while retaining Bun-compatible imports and Bun-managed contributor workflows;
|
|
46
|
+
- replaces `bun:sqlite` and `Bun.spawn` with `node:sqlite` and argv-only `node:child_process` boundaries without changing the durable SQLite file format;
|
|
47
|
+
- detects npm, pnpm, Yarn, or Bun from a pinned `packageManager` field or an unambiguous lockfile, defaults to npm, and rejects implicit pre/post lifecycle hooks that were not reviewed;
|
|
48
|
+
- moves the default enforced environment to `node:24-bookworm-slim`, executes its controller as Node ESM, and keeps custom Bun images available through explicit configuration; and
|
|
49
|
+
- adds Node-built CLI/library and installed-artifact smokes while retaining Bun compatibility coverage.
|
|
50
|
+
|
|
51
|
+
## What 0.9 changed
|
|
44
52
|
|
|
45
53
|
- reuses a freshness-checked topology index across file-list and search pages while reading current file bytes for every digest;
|
|
46
54
|
- adds bounded `read_files` and `search_many` tools that reduce model/tool round trips without parallelizing writes;
|
|
47
|
-
- reuses
|
|
55
|
+
- reuses an inert controller-only OCI container within an acquired run, attests command execution and the canonical workspace seal in one cycle, skips exports for unchanged seals, and reseeds after failures or host-snapshot changes without weakening the reviewed host-import boundary;
|
|
48
56
|
- adds a reproducible workspace benchmark and observable index/OCI I/O counters; and
|
|
49
57
|
- introduces deterministic, offline-verifiable `ChangeEnvelope v1` documents bound to exact patch bytes, base identity, runtime policy, redacted checks, expiry, and optional approval/attestation references.
|
|
50
58
|
|
|
@@ -61,11 +69,11 @@ The expected result is a schema-versioned JSON proof with `secretExcluded`, `net
|
|
|
61
69
|
- an extensible provider registry, provider/model selection, provisional native Gemini support, and repeatable per-role routes such as `--route reviewer=gemini`;
|
|
62
70
|
- redacted, sequence-numbered `--jsonl` events for automation, while `--json` keeps the final-document contract;
|
|
63
71
|
- versioned configuration and JSON output contracts;
|
|
64
|
-
- a local `doctor` command that diagnoses
|
|
72
|
+
- a local `doctor` command that diagnoses the runtime, repository package manager, workspace, Git, scripts, state, credentials, endpoints, and provider capabilities without making provider requests or exposing secret values;
|
|
65
73
|
- deterministic, cursor-paginated workspace listing and search with SHA-256 content digests;
|
|
66
74
|
- reviewed multi-file proposals and approved atomic application with stale-content rejection;
|
|
67
75
|
- approved moves plus recoverable quarantine and restore operations;
|
|
68
|
-
- an explicit, configurable allowlist of declared `package.json` checks executed through
|
|
76
|
+
- an explicit, configurable allowlist of declared `package.json` checks executed through the repository's pinned or detected package manager;
|
|
69
77
|
- read-only inspection of staged, unstaged, renamed, deleted, and untracked Git state;
|
|
70
78
|
- per-process mutation audit evidence and a final diff summary;
|
|
71
79
|
- scoped SQLite run/memory state, idempotency, approval resumption, leases, and exactly-once tool journals;
|
|
@@ -76,7 +84,7 @@ The expected result is a schema-versioned JSON proof with `secretExcluded`, `net
|
|
|
76
84
|
- governed MCP over bounded HTTPS/loopback HTTP with explicit server/tool allowlists, permissions, timeouts, approvals, output limits, and environment-backed credentials;
|
|
77
85
|
- named explorer, implementer, tester, and reviewer subagents with independent durable budgets and promoted approvals;
|
|
78
86
|
- deterministic application-owned parallel read-only review groups with child progress, hierarchy, usage, and cost evidence;
|
|
79
|
-
- optional enforced Docker/Podman execution with a
|
|
87
|
+
- optional enforced Docker/Podman execution with a warm controller-only per-run container, no container network, a read-only root filesystem, non-root execution, dropped capabilities, bounded CPU/memory/PIDs/time/output, and an ephemeral secret-free workspace snapshot;
|
|
80
88
|
- argv-only allowlisted environment commands, isolated package checks, deterministic patch inspection, and a separate durable approval before importing changes into the host workspace;
|
|
81
89
|
- environment/image/policy fingerprint binding, cancellation cleanup, labeled orphan cleanup, retained audit artifacts, and installed-package plus real-runtime smoke gates;
|
|
82
90
|
- protection against path traversal, symlink escapes, unsafe state targets, secret-file reads, special files, concurrent non-overwrite races, and unbounded output;
|
|
@@ -86,19 +94,26 @@ It does not include arbitrary host shell access, `stdio` MCP, permanent deletion
|
|
|
86
94
|
|
|
87
95
|
## Requirements
|
|
88
96
|
|
|
89
|
-
-
|
|
97
|
+
- Node.js 22.13.0 or newer. Node 24 LTS is used by the default OCI image and release workflow.
|
|
90
98
|
- Git for repository status and diff inspection.
|
|
91
99
|
- At least one supported provider credential for real model execution.
|
|
92
100
|
- Docker or Podman plus a preloaded image when `--execution oci` is requested.
|
|
93
101
|
|
|
94
102
|
## Installation
|
|
95
103
|
|
|
104
|
+
The currently published `0.9.0` package still uses the Bun-first runtime:
|
|
105
|
+
|
|
96
106
|
```bash
|
|
97
|
-
|
|
98
|
-
bunx --package @zhivex-ai/harness zhx --version
|
|
107
|
+
bunx --package @zhivex-ai/harness@0.9.0 zhx --version
|
|
99
108
|
```
|
|
100
109
|
|
|
101
|
-
|
|
110
|
+
After the exact `0.10.0` artifact is published and registry-verified, the Node-first installation is:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
npx --yes --package=@zhivex-ai/harness@0.10.0 zhx --version
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Do not omit the version while npm `latest` still resolves to `0.9.0`. To exercise the `0.10.0` source checkout now, contributors use Bun for deterministic repository tooling while the built CLI itself runs on Node:
|
|
102
117
|
|
|
103
118
|
```bash
|
|
104
119
|
bun install --frozen-lockfile
|
|
@@ -177,7 +192,7 @@ zhx run --provider openai --route explorer=qwen --route reviewer=gemini \
|
|
|
177
192
|
"implement the change, then review it independently"
|
|
178
193
|
```
|
|
179
194
|
|
|
180
|
-
Routing with `--max-cost-usd` remains rejected in `0.
|
|
195
|
+
Routing with `--max-cost-usd` remains rejected in `0.10.0`: aggregate usage cannot yet be priced correctly when roles use different models.
|
|
181
196
|
|
|
182
197
|
Writes and checks pause for approval. In a non-interactive execution, state is saved in `.zhivex-harness/runs/operations.sqlite`:
|
|
183
198
|
|
|
@@ -246,10 +261,12 @@ The default check allowlist is `test`, `typecheck`, `lint`, and `build`. Replace
|
|
|
246
261
|
zhivex-harness run --allow-check test:unit --allow-check format "apply the fix and validate it"
|
|
247
262
|
```
|
|
248
263
|
|
|
264
|
+
The harness uses a pinned `packageManager` field when present; otherwise it accepts one unambiguous npm, pnpm, Yarn, or Bun lockfile and defaults to npm when neither signal exists. It executes only the selected script and rejects symbolic-link or ambiguous lockfiles plus implicit `pre<script>`/`post<script>` lifecycle hooks.
|
|
265
|
+
|
|
249
266
|
Enable enforced local execution explicitly. The image must already exist locally; the harness never pulls it implicitly:
|
|
250
267
|
|
|
251
268
|
```bash
|
|
252
|
-
docker pull
|
|
269
|
+
docker pull node:24-bookworm-slim
|
|
253
270
|
zhivex-harness doctor --execution oci
|
|
254
271
|
zhivex-harness run --execution oci --yes "inspect, implement, test, review the environment patch, and import it"
|
|
255
272
|
```
|
|
@@ -267,7 +284,7 @@ zhivex-harness run --execution oci --yes "inspect, implement, test, review the e
|
|
|
267
284
|
|
|
268
285
|
Override any model with `--model`. Optional provider overrides are `META_BASE_URL`, `QWEN_BASE_URL`, `QWEN_WORKSPACE_ID`, `QWEN_REGION`, `OPENAI_BASE_URL`, and `GEMINI_BASE_URL`. Non-credential transport settings are hash-bound to durable resumes without persisting their values.
|
|
269
286
|
|
|
270
|
-
Meta and Qwen retain the published support conclusion for the unchanged approval/restart
|
|
287
|
+
Meta and Qwen retain the published support conclusion for the unchanged approval/restart and delegation paths. OpenAI remains GPT-5.6-first from `0.8.0`: Luna is the default, while Terra and Sol remain explicit `--model` selections. The Node-first `0.10.0` source candidate passes the local npm-installed artifact and real OCI boundary smokes; the Node 22/24 CI matrix and live-provider release certification remain pending. Controlled and official-SDK MCP interoperability are verified separately and do not imply compatibility with every server or protocol feature. Provider capability claims remain artifact- and date-bound under the [live certification contract](./docs/LIVE_CERTIFICATION.md); credential detection and deterministic tests do not replace real provider evidence.
|
|
271
288
|
|
|
272
289
|
## Security boundaries
|
|
273
290
|
|
|
@@ -300,11 +317,20 @@ bun test
|
|
|
300
317
|
bun run build
|
|
301
318
|
bun run evaluate
|
|
302
319
|
bun run benchmark:workspace
|
|
320
|
+
bun run benchmark:workspace -- --files 50000 --repetitions 10 --warmups 2
|
|
321
|
+
bun run benchmark:oci -- --files 1000 --commands 20 --repetitions 10 --warmups 1
|
|
322
|
+
bun run benchmark:safe-fix:ci
|
|
303
323
|
bun run smoke:package
|
|
304
324
|
bun run pack:inspect
|
|
305
325
|
bun run check
|
|
306
326
|
```
|
|
307
327
|
|
|
328
|
+
The workspace benchmark reports topology-only and digest-bound listing separately, plus independent versus batched search with alternating pair order. The OCI benchmark reports environment setup, snapshot/session acquisition, first command, reused commands, mutation, and end-to-end time to first successful command. Both fixtures exclude setup, validate results, use sequential repetitions, and emit host/runtime metadata, nearest-rank p50/p95/p99, and success rates. `--repetitions` and `--warmups` are configurable; host filesystem caches are not flushed, so publish the commit and exact command with any result. Use at least 100 successful samples before treating p99 as representative.
|
|
329
|
+
|
|
330
|
+
The [Time-to-Safe-Fix benchmark](./docs/TIME_TO_SAFE_FIX.md) adds task-level clean/attacked matrices, `safeResolved` scoring, approval/system latency separation, Wilson rate intervals, and matched overhead against a direct profile. Its bundled deterministic smoke validates only the benchmark pipeline. Public capability or safety claims require a real external driver, exact dataset revision, matched model/runtime controls, and disclosed failures.
|
|
331
|
+
|
|
332
|
+
Full generated reports remain local and Git-ignored under [`results`](./results/). Commit only digest-verified, sanitized evidence snapshots under [`benchmarks/baselines`](./benchmarks/baselines/).
|
|
333
|
+
|
|
308
334
|
The live gate is opt-in and billable:
|
|
309
335
|
|
|
310
336
|
```bash
|
package/ROADMAP.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# Zhivex Harness Roadmap
|
|
2
2
|
|
|
3
3
|
- Status: active
|
|
4
|
-
- Baseline date: 2026-08-
|
|
4
|
+
- Baseline date: 2026-08-21
|
|
5
5
|
|
|
6
|
-
This roadmap takes the harness from its `0.1.0` MVP to a stable CLI and library contract. The `0.2.0` source baseline is tagged locally, `0.3.0` and `0.4.0` are private checkpoints, and `0.5.0` through `0.
|
|
6
|
+
This roadmap takes the harness from its `0.1.0` MVP to a stable CLI and library contract. The `0.2.0` source baseline is tagged locally, `0.3.0` and `0.4.0` are private checkpoints, and `0.5.0` through `0.9.0` are published on npm. `0.10.0` is the source candidate for a Node-first public runtime and package-manager-neutral repository checks; publication and release certification remain separate operations. Releases are ordered by dependency and safety risk, not by calendar date. A version ships only when its exit criteria are satisfied.
|
|
7
7
|
|
|
8
8
|
## Planning principles
|
|
9
9
|
|
|
@@ -12,7 +12,7 @@ This roadmap takes the harness from its `0.1.0` MVP to a stable CLI and library
|
|
|
12
12
|
- Reuse Stable `@zhivex-ai/agents` runtime contracts for safety, durability, tracing, evaluation, subagents, and execution environments.
|
|
13
13
|
- Keep generic shell execution behind an enforced container or remote-worker boundary.
|
|
14
14
|
- Treat local, installed-package, live-provider, and published-artifact evidence as separate gates.
|
|
15
|
-
- Keep the CLI Bun-
|
|
15
|
+
- Keep the public CLI Node-first while retaining Bun for contributor tooling and explicitly Bun-managed repositories. JavaScript and TypeScript checks run through the target repository's pinned or unambiguously detected package manager.
|
|
16
16
|
|
|
17
17
|
## Historical baseline: 0.2.0
|
|
18
18
|
|
|
@@ -42,7 +42,8 @@ The `0.6.0` dependency batch pins and overrides `@zhivex-ai/core@1.6.0`, retaini
|
|
|
42
42
|
| `0.6.1` | Positioning and proof | Reproducible hostile-repository control evidence | Published on npm | S |
|
|
43
43
|
| `0.7.0` | Multi-provider agent console | Durable sessions, extensible providers, safe role routing, and automation events | Published on npm | L |
|
|
44
44
|
| `0.8.0` | SDK refresh and GPT-5.6 | One Core runtime, current adapters, and a GPT-5.6-first OpenAI path | Published on npm | M |
|
|
45
|
-
| `0.9.0` | Fast governed change admission | Lower repository/OCI overhead plus portable offline evidence bound to exact patch bytes |
|
|
45
|
+
| `0.9.0` | Fast governed change admission | Lower repository/OCI overhead plus portable offline evidence bound to exact patch bytes | Published on npm | L |
|
|
46
|
+
| `0.10.0` | Node-first portability | Node CLI/library, portable SQLite/processes, manager-aware checks, and Node OCI | Source candidate | L |
|
|
46
47
|
| `1.0.0` | Stable contract | Supported compatibility and release guarantees | Planned | L |
|
|
47
48
|
|
|
48
49
|
Relative size is for sequencing only; dates require a capacity decision.
|
|
@@ -243,7 +244,7 @@ Deferred after `0.7.0`:
|
|
|
243
244
|
|
|
244
245
|
- Per-provider/per-role cost pricing and evidence-backed routing presets.
|
|
245
246
|
- Additional hosted and local providers, added one by one through the same registry and certification contract.
|
|
246
|
-
- Remote workers or microVM backends; the current console stays local and
|
|
247
|
+
- Remote workers or microVM backends; the current console stays local and moves to a Node-first runtime in `0.10.0`.
|
|
247
248
|
|
|
248
249
|
## 0.8.0 — SDK refresh and GPT-5.6-first OpenAI
|
|
249
250
|
|
|
@@ -266,7 +267,7 @@ Exit criteria:
|
|
|
266
267
|
|
|
267
268
|
## 0.9.0 — fast governed change admission
|
|
268
269
|
|
|
269
|
-
Status:
|
|
270
|
+
Status: published on npm with its release tag, registry integrity, and provenance verified separately from source validation.
|
|
270
271
|
|
|
271
272
|
Goal: reduce the cost of inspecting large repositories and materialize the harness's change-control evidence as a portable, agent-agnostic admission contract.
|
|
272
273
|
|
|
@@ -287,6 +288,28 @@ Exit criteria:
|
|
|
287
288
|
- Change-envelope tests cover canonical determinism, exact patch tampering, base/policy/evidence changes, expiry, strict redaction schemas, and explicit authenticity limits.
|
|
288
289
|
- Documentation, typecheck, full tests, evaluation, build, package inspection, and installed-tarball smoke pass from a clean release commit before any tag or publication.
|
|
289
290
|
|
|
291
|
+
## 0.10.0 — Node-first runtime portability
|
|
292
|
+
|
|
293
|
+
Status: source candidate. The full deterministic suite, evaluation, documentation, npm-installed exact-tarball smoke, direct Node/Bun imports, Bun-created approval resume under Node, and required real-Docker OCI boundary gate pass locally. The Node 22/24 CI matrix, live providers, clean release gate, tag, registry, and provenance remain separate.
|
|
294
|
+
|
|
295
|
+
Goal: remove Bun as an installation prerequisite without weakening governed execution or forcing target repositories to adopt one package manager.
|
|
296
|
+
|
|
297
|
+
Scope:
|
|
298
|
+
|
|
299
|
+
- Publish `zhx`, `zhivex-harness`, and the library as Node-targeted ESM for Node.js `>=22.13.0`; retain Bun contributor workflows and compatibility imports.
|
|
300
|
+
- Use `node:sqlite` and `node:child_process` behind bounded adapters while preserving the existing SQLite file, scopes, approvals, sessions, leases, and exactly-once journals.
|
|
301
|
+
- Detect npm, pnpm, Yarn, or Bun from `packageManager` or one unambiguous lockfile; default to npm and reject symbolic-link/ambiguous lockfiles plus unreviewed lifecycle hooks.
|
|
302
|
+
- Run the enforced controller in Node 24 with `node,npm` defaults, a new execution-policy fingerprint, and explicit custom-image/allowlist requirements for other managers.
|
|
303
|
+
- Certify direct Node 22/24 execution, installed artifact behavior, SQLite reopen, both CLI aliases, public imports, and secondary Bun compatibility.
|
|
304
|
+
|
|
305
|
+
Exit criteria:
|
|
306
|
+
|
|
307
|
+
- The built and installed package imports and executes under supported Node versions without a `bun:` module or `Bun` global.
|
|
308
|
+
- Bun-created SQLite state reopens under Node and preserves durable approval/exactly-once behavior; Bun can still import the Node-targeted artifact.
|
|
309
|
+
- Host and OCI checks cover npm by default plus explicit Bun, ambiguous lockfiles, stale script text, hidden lifecycle hooks, timeouts, cancellation, and bounded output.
|
|
310
|
+
- Linux real-OCI validation passes on the preloaded Node 24 image with unchanged network/rootfs/resource/patch-import guarantees.
|
|
311
|
+
- Documentation, typecheck, full tests, evaluation, build, package inspection, installed-artifact smoke, release checks, live matrix, tag, registry integrity, and provenance are closed independently.
|
|
312
|
+
|
|
290
313
|
## 1.0.0 — Stable CLI and library contract
|
|
291
314
|
|
|
292
315
|
Goal: freeze a supportable public contract after the pre-1.0 safety and operational surfaces have been exercised in real repositories.
|
|
@@ -294,7 +317,7 @@ Goal: freeze a supportable public contract after the pre-1.0 safety and operatio
|
|
|
294
317
|
Scope:
|
|
295
318
|
|
|
296
319
|
- Stabilize CLI commands, config schema, JSON/event schemas, library exports, state migrations, and error taxonomy.
|
|
297
|
-
- Publish a support matrix for Bun, operating systems, Git, container backend, providers, models, MCP modes, and store backends.
|
|
320
|
+
- Publish a support matrix for Node, secondary Bun compatibility, operating systems, Git, container backend, providers, models, MCP modes, and store backends.
|
|
298
321
|
- Guarantee tested migration from the final two `0.x` state/config formats or provide an explicit export/import tool.
|
|
299
322
|
- Complete threat model, security review, dependency audit, provenance, integrity, and rollback documentation.
|
|
300
323
|
- Run a representative repository evaluation matrix across every supported provider and publish date-bound evidence.
|
|
@@ -332,8 +355,8 @@ These can become separate post-1.0 tracks after the CLI/runtime contract and sec
|
|
|
332
355
|
|
|
333
356
|
## Immediate next actions
|
|
334
357
|
|
|
335
|
-
1.
|
|
336
|
-
2. Run
|
|
337
|
-
3. Dogfood
|
|
338
|
-
4. Complete the
|
|
339
|
-
5. Only after those gates, create the annotated tag, dispatch the reviewed release workflow, and verify registry integrity and provenance against the exact artifact.
|
|
358
|
+
1. Complete the `0.10.0` Node-first source gate and inspect every runtime-facing diff, compatibility export, documentation contract, and lockfile change.
|
|
359
|
+
2. Run required real-OCI validation against `node:24-bookworm-slim` plus installed-artifact smokes under Node 22/24 and secondary Bun import coverage.
|
|
360
|
+
3. Dogfood npm, pnpm, Yarn, and Bun repositories, including ambiguous lockfiles, lifecycle hooks, custom OCI images, and durable state created by `0.9.x`.
|
|
361
|
+
4. Complete the provider live matrices affected by the new OCI controller; keep uncertified paths provisional on any failure or missing evidence.
|
|
362
|
+
5. Only after those gates, date the changelog, create the annotated tag, dispatch the reviewed release workflow, and verify registry integrity and provenance against the exact artifact.
|
package/SUPPORT.md
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# Support
|
|
2
2
|
|
|
3
|
-
Zhivex Harness `0.
|
|
3
|
+
Zhivex Harness `0.10.x` is a pre-1.0 Node-first CLI and TypeScript library. Observable contracts may change in a later minor release when the change and migration path are documented in [CHANGELOG.md](./CHANGELOG.md). The source checkout may be a release candidate newer than the latest public npm artifact.
|
|
4
4
|
|
|
5
5
|
## Supported baseline
|
|
6
6
|
|
|
7
|
-
-
|
|
7
|
+
- Node.js `22.13.0` or newer; Node 24 LTS is the release and default OCI baseline;
|
|
8
|
+
- Bun `1.4.0` or newer when contributing to this repository or operating a Bun-managed target repository;
|
|
8
9
|
- macOS and Linux, as exercised by CI;
|
|
9
10
|
- Git workspaces;
|
|
10
11
|
- the provider/model combinations marked certified in the package documentation; and
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#!/usr/bin/env
|
|
1
|
+
#!/usr/bin/env node
|
|
2
2
|
import { type AgentApprovalRequest, type AgentRunInput, type AgentRunOutput, type AgentRunState, type AgentStatus } from "@zhivex-ai/agents";
|
|
3
3
|
import { providerAvailability, resolveHarnessConfig, type HarnessConfig, type HarnessConfigInput, type HarnessProvider, type HarnessSubagentProfile } from "./config.js";
|
|
4
4
|
import { type ZhivexHarness } from "./harness.js";
|
|
@@ -208,6 +208,8 @@ export interface DoctorReport {
|
|
|
208
208
|
}
|
|
209
209
|
export interface DoctorContext {
|
|
210
210
|
env?: NodeJS.ProcessEnv;
|
|
211
|
+
nodeVersion?: string;
|
|
212
|
+
/** @deprecated Test-only compatibility injection for the secondary Bun runtime. */
|
|
211
213
|
bunVersion?: string;
|
|
212
214
|
ociRuntimeAdapter?: HarnessOciRuntimeAdapter;
|
|
213
215
|
}
|