@zhivex-ai/harness 1.0.0 → 1.1.0-rc.3
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 +109 -1
- package/README.md +52 -306
- package/SECURITY.md +1 -1
- package/SUPPORT.md +7 -3
- package/benchmarks/README.md +3 -3
- package/contracts/client-protocol-v1.schema.json +341 -0
- package/contracts/public-api.json +100 -1
- package/contracts/stable-api-signatures.json +14 -14
- package/dist/approvals/approval-diff.d.ts +45 -0
- package/dist/approvals/approval-history.d.ts +38 -0
- package/dist/approvals/approval-preview.d.ts +26 -0
- package/dist/cli/arguments.d.ts +103 -0
- package/dist/cli/changes.d.ts +2 -0
- package/dist/cli/cli-credentials.d.ts +38 -0
- package/dist/cli/cli-help.d.ts +3 -0
- package/dist/{cli-options.d.ts → cli/cli-options.d.ts} +1 -1
- package/dist/{cli-profiles.d.ts → cli/cli-profiles.d.ts} +1 -1
- package/dist/cli/configured-harness.d.ts +12 -0
- package/dist/cli/console/console-commands.d.ts +6 -0
- package/dist/{console-context.d.ts → cli/console/console-context.d.ts} +7 -3
- package/dist/cli/console/console-input.d.ts +68 -0
- package/dist/cli/console/console-model-catalog.d.ts +25 -0
- package/dist/cli/console/console-navigation.d.ts +27 -0
- package/dist/cli/console/console-presentation.d.ts +18 -0
- package/dist/cli/console/console-welcome.d.ts +13 -0
- package/dist/cli/console.d.ts +2 -0
- package/dist/cli/doctor.d.ts +50 -0
- package/dist/cli/errors.d.ts +7 -0
- package/dist/cli/help-text.d.ts +2 -0
- package/dist/cli/presentation.d.ts +23 -0
- package/dist/cli/resume-metadata.d.ts +12 -0
- package/dist/cli/routing.d.ts +6 -0
- package/dist/cli/run-commands.d.ts +4 -0
- package/dist/cli/run-document.d.ts +91 -0
- package/dist/cli/run-management.d.ts +2 -0
- package/dist/cli/service-client-cli.d.ts +2 -0
- package/dist/cli/session-management.d.ts +8 -0
- package/dist/cli/setup.d.ts +16 -0
- package/dist/cli/state.d.ts +2 -0
- package/dist/cli/terminal/terminal-continuation.d.ts +3 -0
- package/dist/{terminal-markdown.d.ts → cli/terminal/terminal-markdown.d.ts} +1 -0
- package/dist/{terminal-ui.d.ts → cli/terminal/terminal-ui.d.ts} +7 -0
- package/dist/cli/terminal/tool-activity.d.ts +19 -0
- package/dist/cli.d.ts +33 -238
- package/dist/cli.js +16049 -12066
- package/dist/client/adapter.d.ts +4 -0
- package/dist/client/index.d.ts +15 -0
- package/dist/client/local-service.d.ts +34 -0
- package/dist/client/protocol.d.ts +205 -0
- package/dist/client/service-events.d.ts +50 -0
- package/dist/{context-engineering.d.ts → context/context-engineering.d.ts} +2 -2
- package/dist/{execution-environment.d.ts → execution/execution-environment.d.ts} +8 -4
- package/dist/hostile-repository-demo.js +2025 -897
- package/dist/index.d.ts +48 -41
- package/dist/index.js +7541 -5906
- package/dist/internal/desktop/persistence.d.ts +14 -0
- package/dist/internal/desktop/protocol.d.ts +8 -0
- package/dist/internal/desktop/providers.d.ts +6 -0
- package/dist/internal/desktop/runtime.d.ts +7 -0
- package/dist/{operations.d.ts → persistence/operations.d.ts} +24 -2
- package/dist/persistence/persistence-secrets.d.ts +2 -0
- package/dist/persistence/recorded-workspace.d.ts +4 -0
- package/dist/{sessions.d.ts → persistence/sessions.d.ts} +3 -0
- package/dist/persistence/sqlite-access.d.ts +26 -0
- package/dist/{sqlite-database.d.ts → persistence/sqlite-database.d.ts} +2 -0
- package/dist/{state-backup.d.ts → persistence/state-backup.d.ts} +9 -1
- package/dist/{capabilities.d.ts → providers/capabilities.d.ts} +1 -1
- package/dist/{routing.d.ts → providers/routing.d.ts} +1 -1
- package/dist/{config.d.ts → runtime/config.d.ts} +1 -1
- package/dist/{harness.d.ts → runtime/harness.d.ts} +12 -135
- package/dist/{orchestration.d.ts → runtime/orchestration.d.ts} +3 -0
- package/dist/{runtime-policy.d.ts → runtime/runtime-policy.d.ts} +1 -1
- package/dist/runtime/usage-ledger.d.ts +84 -0
- package/dist/service-cli.d.ts +2 -0
- package/dist/service-cli.js +10899 -0
- package/dist/tools/execution.d.ts +47 -0
- package/dist/tools/shared.d.ts +67 -0
- package/dist/tools/workspace.d.ts +85 -0
- package/dist/verify-historical-migrations.js +5786 -5265
- package/dist/{workspace.d.ts → workspace/workspace.d.ts} +22 -0
- package/dist/zhx.js +16049 -12066
- package/docs/CLI.md +151 -30
- package/docs/CLIENT_PROTOCOL.md +212 -0
- package/docs/CREDENTIALS.md +59 -0
- package/docs/DURABLE_OPERATIONS.md +2 -2
- package/docs/FIRST_USE.md +82 -0
- package/docs/FIRST_USE_EXAMPLE.md +40 -0
- package/docs/HOSTILE_REPOSITORY_DEMO.md +1 -1
- package/docs/LOCAL_SERVICE.md +142 -0
- package/docs/README.md +24 -23
- package/docs/THREAT_MODEL.md +1 -1
- package/docs/TIME_TO_SAFE_FIX.md +2 -2
- package/docs/USAGE.md +181 -0
- package/evaluations/daily-cli-cohort.json +33 -0
- package/evaluations/representative-assembly-matrix.json +28 -1
- package/examples/README.md +26 -0
- package/examples/first-use/greeting.test.ts +3 -0
- package/examples/first-use/greeting.ts +1 -0
- package/examples/first-use/package.json +7 -0
- package/package.json +39 -11
- package/ROADMAP.md +0 -414
- package/benchmarks/baselines/context-navigation-2026-09-09.json +0 -94
- package/benchmarks/baselines/efficiency-2026-09-08.json +0 -233
- package/benchmarks/baselines/external-final-2026-09-08.json +0 -588
- package/benchmarks/baselines/external-intermediate-2026-09-08.json +0 -116
- package/benchmarks/baselines/external-matched-openai-2026-09-08.json +0 -1922
- package/benchmarks/baselines/external-matched-qwen-2026-09-08.json +0 -1706
- package/benchmarks/baselines/external-pilot-2026-09-08.json +0 -439
- package/benchmarks/baselines/external-qwen-flash-2026-09-08.json +0 -1570
- package/benchmarks/baselines/external-qwen-remediation-2026-09-09.json +0 -1509
- package/benchmarks/baselines/external-qwen-sdk-114-progress-2026-09-09.json +0 -2509
- package/benchmarks/baselines/external-sdk-upgrade-2026-09-08.json +0 -564
- package/benchmarks/baselines/external-verifier-recovery-2026-09-09.json +0 -794
- package/benchmarks/baselines/full-harness-review-2026-09-10.json +0 -134
- package/benchmarks/baselines/harness-audit-2026-09-09.json +0 -136
- package/benchmarks/baselines/harness-remediation-2026-09-09.json +0 -160
- package/benchmarks/baselines/oci-remediation-2026-09-10.json +0 -535
- package/benchmarks/baselines/rc14-holdout-2026-09-10.json +0 -854
- package/benchmarks/baselines/repair-architecture-audit-2026-09-09.json +0 -75
- package/benchmarks/baselines/time-to-safe-fix-live-expanded-2026-08-21.json +0 -186
- package/benchmarks/baselines/time-to-safe-fix-live-smoke-2026-08-21.json +0 -186
- package/dist/console-input.d.ts +0 -28
- package/docs/GA_READINESS.md +0 -29
- package/docs/GEMINI_1_0_DECISION.md +0 -9
- package/docs/LIVE_CERTIFICATION.md +0 -107
- package/docs/RC13_SECURITY_REVIEW.md +0 -28
- package/docs/RC14_DELEGATED_SECURITY_DECISION.md +0 -80
- package/docs/RC14_SECURITY_REVIEW.md +0 -40
- package/docs/RELEASE.md +0 -96
- package/docs/ROLLBACK.md +0 -9
- package/docs/SECURITY_REVIEW_EVIDENCE.md +0 -17
- package/docs/ga-readiness.json +0 -366
- package/docs/reports/EFFICIENCY_REVIEW.md +0 -156
- package/docs/reports/EXTERNAL_COMPARISON.md +0 -434
- package/docs/reports/FULL_HARNESS_REVIEW_2026-09-10.md +0 -200
- package/docs/reports/GA_BUDGET_REMEDIATION_2026-09-19.md +0 -38
- package/docs/reports/GA_REPAIR_RECOVERY_2026-09-19.md +0 -700
- package/docs/reports/GA_VALIDATION_2026-09-19.md +0 -111
- package/docs/reports/HARNESS_ARCHITECTURE_REVIEW_2026-09-09.md +0 -202
- package/docs/reports/HARNESS_AUDIT_2026-09-09.md +0 -306
- package/docs/reports/HARNESS_REMEDIATION_2026-09-09.md +0 -74
- package/docs/reports/HARNESS_REMEDIATION_2026-09-10.md +0 -90
- package/docs/reports/MODEL_COMPARISON_2026-09-09.md +0 -184
- package/docs/reports/QWEN_REMEDIATION_COMPARISON_2026-09-09.md +0 -142
- package/docs/reports/RC14_VALIDATION_2026-09-10.md +0 -45
- package/docs/reports/README.md +0 -26
- package/docs/reports/evidence/ga-budget-remediation-2026-09-19.json +0 -133
- package/docs/reports/evidence/ga-catalog-ablation-2026-09-19.json +0 -699
- package/docs/reports/evidence/ga-catalog-ablation-plan-2026-09-19.json +0 -40
- package/docs/reports/evidence/ga-catalog-observed-2026-09-19.json +0 -985
- package/docs/reports/evidence/ga-catalog-observed-plan-2026-09-19.json +0 -28
- package/docs/reports/evidence/ga-catalog-observed-status-2026-09-19.json +0 -15
- package/docs/reports/evidence/ga-complete-local-check-2026-09-19.json +0 -47
- package/docs/reports/evidence/ga-completion-reminder-2026-09-19.json +0 -22
- package/docs/reports/evidence/ga-fresh-cohort-plan-2026-09-19.json +0 -54
- package/docs/reports/evidence/ga-fresh-cohort-preparation-2026-09-19.json +0 -242
- package/docs/reports/evidence/ga-fresh-cohort-result-2026-09-19.json +0 -4318
- package/docs/reports/evidence/ga-local-validation-followup-2026-09-19.json +0 -66
- package/docs/reports/evidence/ga-node-consumers-2026-09-19.json +0 -31
- package/docs/reports/evidence/ga-package-content-validation-2026-09-19.json +0 -22
- package/docs/reports/evidence/ga-plan-completion-2026-09-19.json +0 -39
- package/docs/reports/evidence/ga-plan-reserve-2026-09-19.json +0 -573
- package/docs/reports/evidence/ga-plan-reserve-plan-2026-09-19.json +0 -24
- package/docs/reports/evidence/ga-plan-transition-2026-09-19.json +0 -19
- package/docs/reports/evidence/ga-private-verifier-plan-2026-09-19.json +0 -24
- package/docs/reports/evidence/ga-private-verifier-root-cause-2026-09-19.json +0 -41
- package/docs/reports/evidence/ga-published-sdk-2026-09-19.json +0 -35
- package/docs/reports/evidence/ga-python-checkout-imports-2026-09-19.json +0 -95
- package/docs/reports/evidence/ga-python-origin-delivery-2026-09-19.json +0 -211
- package/docs/reports/evidence/ga-python-origin-delivery-plan-2026-09-19.json +0 -27
- package/docs/reports/evidence/ga-qwen-patched-package-2026-09-19.json +0 -1092
- package/docs/reports/evidence/ga-qwen-patched-package-plan-2026-09-19.json +0 -18
- package/docs/reports/evidence/ga-qwen-published-2026-09-19.json +0 -571
- package/docs/reports/evidence/ga-qwen-published-plan-2026-09-19.json +0 -18
- package/docs/reports/evidence/ga-qwen-tool-choice-2026-09-19.json +0 -85
- package/docs/reports/evidence/ga-qwen-tool-choice-patched-2026-09-19.json +0 -85
- package/docs/reports/evidence/ga-recovery-development-2026-09-19.json +0 -1066
- package/docs/reports/evidence/ga-recovery-graded-development-2026-09-19.json +0 -1313
- package/docs/reports/evidence/ga-recovery-graded-v2-2026-09-19.json +0 -1151
- package/docs/reports/evidence/ga-recovery-v3-2026-09-19.json +0 -3943
- package/docs/reports/evidence/ga-recovery-v4-2026-09-19.json +0 -1055
- package/docs/reports/evidence/ga-recovery-v5-2026-09-19.json +0 -1245
- package/docs/reports/evidence/ga-recovery-v6-2026-09-19.json +0 -699
- package/docs/reports/evidence/ga-recovery-v7-2026-09-19.json +0 -854
- package/docs/reports/evidence/ga-recovery-v8-2026-09-19.json +0 -596
- package/docs/reports/evidence/ga-required-delivery-2026-09-19.json +0 -25
- package/docs/reports/evidence/ga-required-delivery-live-2026-09-19.json +0 -1337
- package/docs/reports/evidence/ga-required-delivery-live-plan-2026-09-19.json +0 -25
- package/docs/reports/evidence/ga-retained-candidate-grading-2026-09-19.json +0 -30
- package/docs/reports/evidence/ga-tool-selection-live-2026-09-19.json +0 -559
- package/docs/reports/evidence/ga-tool-selection-live-plan-2026-09-19.json +0 -28
- package/docs/reports/evidence/ga-tool-selection-recovery-2026-09-19.json +0 -27
- package/docs/reports/evidence/ga-validation-2026-09-19.json +0 -236
- package/docs/reports/evidence/ga-verifier-discovery-live-2026-09-19.json +0 -1369
- package/docs/reports/evidence/ga-verifier-discovery-plan-2026-09-19.json +0 -29
- package/docs/reports/evidence/ga-verifier-failure-identification-2026-09-19.json +0 -30
- package/docs/reports/evidence/ga-verifier-feedback-2026-09-19.json +0 -65
- package/docs/reports/evidence/ga-verifier-hints-live-2026-09-19.json +0 -1297
- package/docs/reports/evidence/ga-verifier-hints-plan-2026-09-19.json +0 -27
- package/docs/reports/evidence/ga-work-boundary-context-analysis-2026-09-19.json +0 -113
- package/docs/reports/evidence/ga-work-boundary-live-2026-09-19.json +0 -301
- package/docs/reports/evidence/ga-work-boundary-live-plan-2026-09-19.json +0 -84
- package/docs/reports/evidence/ga-work-budget-planning-2026-09-19.json +0 -32
- package/docs/reports/evidence/ga-working-context-2026-09-19.json +0 -22
- package/docs/reports/evidence/rc14-delegated-security-review-2026-09-20.json +0 -81
- package/docs/reports/evidence/rc14-ga-gate-2026-09-20.json +0 -18
- package/docs/reports/evidence/rc14-representative-2026-09-20.json +0 -509
- package/docs/reports/evidence/rc14-security-regressions-2026-09-20.json +0 -64
- package/docs/reports/evidence/security-current-2026-09-19.json +0 -91
- package/docs/reports/evidence/security-remediation-2026-09-19.json +0 -97
- /package/dist/{cli-stream.d.ts → cli/cli-stream.d.ts} +0 -0
- /package/dist/{json-contracts.d.ts → client/json-contracts.d.ts} +0 -0
- /package/dist/{compaction.d.ts → context/compaction.d.ts} +0 -0
- /package/dist/{context-metrics.d.ts → context/context-metrics.d.ts} +0 -0
- /package/dist/{task-memory.d.ts → context/task-memory.d.ts} +0 -0
- /package/dist/{package-manager.d.ts → execution/package-manager.d.ts} +0 -0
- /package/dist/{process-runtime.d.ts → execution/process-runtime.d.ts} +0 -0
- /package/dist/{mcp.d.ts → integrations/mcp.d.ts} +0 -0
- /package/dist/{state-directory.d.ts → persistence/state-directory.d.ts} +0 -0
- /package/dist/{providers.d.ts → providers/providers.d.ts} +0 -0
- /package/dist/{errors.d.ts → runtime/errors.d.ts} +0 -0
- /package/dist/{model-budget.d.ts → runtime/model-budget.d.ts} +0 -0
- /package/dist/{repair-controller.d.ts → runtime/repair-controller.d.ts} +0 -0
- /package/dist/{repair-progress.d.ts → runtime/repair-progress.d.ts} +0 -0
- /package/dist/{repair-verifier.d.ts → runtime/repair-verifier.d.ts} +0 -0
- /package/dist/{run-interruption.d.ts → runtime/run-interruption.d.ts} +0 -0
- /package/dist/{runtime-checkpoints.d.ts → runtime/runtime-checkpoints.d.ts} +0 -0
- /package/dist/{runtime-diagnostics.d.ts → runtime/runtime-diagnostics.d.ts} +0 -0
- /package/dist/{time-to-safe-fix.d.ts → runtime/time-to-safe-fix.d.ts} +0 -0
- /package/dist/{tool-registry.d.ts → tools/tool-registry.d.ts} +0 -0
- /package/dist/{bounded-reads.d.ts → workspace/bounded-reads.d.ts} +0 -0
- /package/dist/{change-envelope.d.ts → workspace/change-envelope.d.ts} +0 -0
- /package/dist/{edit-contracts.d.ts → workspace/edit-contracts.d.ts} +0 -0
- /package/dist/{file-security.d.ts → workspace/file-security.d.ts} +0 -0
- /package/dist/{replacement-edits.d.ts → workspace/replacement-edits.d.ts} +0 -0
- /package/dist/{workspace-mutation-lock.d.ts → workspace/workspace-mutation-lock.d.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,7 +4,99 @@ 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
|
-
##
|
|
7
|
+
## 1.1.0-rc.3 - 2026-09-22
|
|
8
|
+
|
|
9
|
+
Release candidate targeting npm `next`; fresh protected certification is required
|
|
10
|
+
before publication. Stable `latest` remains 1.0.0.
|
|
11
|
+
|
|
12
|
+
- Group interactive tool activity into a bounded live line and summaries between assistant messages. Preserve individual failures, check receipts and approval requests; `/verbose` restores event detail.
|
|
13
|
+
- Identify token-budget and step-limit failures without mislabeling them as provider stream failures or exposing arbitrary provider error payloads.
|
|
14
|
+
- Enforce cumulative Qwen token budgets between responses for runs without subagents, including approval resume, without injecting a transport `maxTokens` parameter. An over-budget response cannot execute its requested tools or trigger another call.
|
|
15
|
+
- Organize CLI, runtime, providers, persistence, tools and Desktop integration behind explicit module boundaries, with architecture checks and unchanged public API contracts.
|
|
16
|
+
- Make the packaged conversation smoke select its fixture provider explicitly; onboarding is verified separately.
|
|
17
|
+
- Add release preparation and early metadata validation, retain release tarballs for recovery, and distinguish publication from verification in workflow summaries.
|
|
18
|
+
|
|
19
|
+
## 1.1.0-rc.2 - 2026-09-22
|
|
20
|
+
|
|
21
|
+
Release candidate superseding the unpublished RC.1, targeting npm `next`.
|
|
22
|
+
|
|
23
|
+
- Register the exact candidate's external model pins and reject missing pins before live certification.
|
|
24
|
+
- Preserve historical 1.0 certification checks while allowing later candidates in the shared matrix.
|
|
25
|
+
- Bound the governed benchmark's retained history to the latest correlated tool group so verbose Qwen turns can compact within the existing 12,000-token input ceiling. Approval, isolation and independent verification requirements remain unchanged.
|
|
26
|
+
- Add deterministic coverage for the previous compaction failure and current-version model pin drift.
|
|
27
|
+
|
|
28
|
+
Fresh protected certification is required for this candidate before publication.
|
|
29
|
+
|
|
30
|
+
## 1.1.0-rc.1 - 2026-09-22
|
|
31
|
+
|
|
32
|
+
Release candidate for the next compatible minor release, targeting the `next` channel.
|
|
33
|
+
The latest stable release remains 1.0.0. Desktop has its own private alpha version.
|
|
34
|
+
|
|
35
|
+
### Desktop preview
|
|
36
|
+
|
|
37
|
+
- Add an experimental Electron client with durable conversations, project/worktree
|
|
38
|
+
navigation, model selection, native credential storage and governed approvals.
|
|
39
|
+
- Add recoverable installation and verified update machinery. Production signing,
|
|
40
|
+
notarization and update trust configuration remain pending; automatic updates
|
|
41
|
+
remain disabled in the default alpha build.
|
|
42
|
+
|
|
43
|
+
### Release validation and profile safety
|
|
44
|
+
|
|
45
|
+
- Install the pinned Electron runtime explicitly before macOS native tests, including
|
|
46
|
+
the general validation job; keep other dependency lifecycle scripts disabled.
|
|
47
|
+
- Bind default-profile confirmation to the displayed provider/model so a profile
|
|
48
|
+
changed while the prompt is open cannot redirect the current invocation.
|
|
49
|
+
|
|
50
|
+
### Developer experience and documentation
|
|
51
|
+
|
|
52
|
+
- Keep initial menu and model options visible on asynchronous terminals by preserving
|
|
53
|
+
readline prompt and menu write order; no extra arrow key is required to draw them.
|
|
54
|
+
|
|
55
|
+
- Lead `zhx --help` with everyday actions; add command-specific help and `zhx help all` for the complete reference.
|
|
56
|
+
- Show common slash actions first, retaining full-catalog search and `/help all`. Pending approval controls remain visible in the short help.
|
|
57
|
+
- Shorten onboarding, separate user/integration/maintenance guides, and standardize maintained Desktop guides in English while quoting current UI labels.
|
|
58
|
+
- Exclude maintainer-only documentation from npm using explicit guide entries and validate links inside the packed archive.
|
|
59
|
+
|
|
60
|
+
Existing commands, aliases, machine output and persisted state remain compatible.
|
|
61
|
+
These changes are assigned to 1.1.0-rc.1 and require fresh artifact-bound certification before publication.
|
|
62
|
+
|
|
63
|
+
### Local service and replay
|
|
64
|
+
|
|
65
|
+
- Add a private authenticated Unix transport and Node runtime owner with graceful drain and explicit dead-process recovery.
|
|
66
|
+
- Persist redacted activity with stable event IDs, cursor replay, bounded retention and expired-cursor snapshots.
|
|
67
|
+
- Coordinate approval revisions/expiry and active cancellation across clients; verify crash recovery and a single edit journal receipt against the installed artifact.
|
|
68
|
+
|
|
69
|
+
### Shared client contract
|
|
70
|
+
|
|
71
|
+
- Add an experimental versioned in-process adapter over existing sessions, runs, approvals and checkpoint cancellation. Strict command validation, connection-scoped idempotency and expected revisions are explicit.
|
|
72
|
+
- Add a JSON Schema, integration documentation and an offline reference client tested against the installed package. No service listener, replay stream or multi-client coordination is introduced.
|
|
73
|
+
|
|
74
|
+
### Daily CLI workflow
|
|
75
|
+
|
|
76
|
+
- Add installed-package first-use coverage, recovery guidance and a runnable example.
|
|
77
|
+
- Search project sessions and reconcile durable state and pending approvals before continuation.
|
|
78
|
+
- Inspect attachment limits, retained skill receipts and context compaction; clarify exact approval scope and verification outcomes.
|
|
79
|
+
- Persist per-provider/model usage across child calls and resumed runs. Optional dated pricing and per-run monetary limits block unknown or stale pricing and unknown usage; displayed costs remain estimates.
|
|
80
|
+
- Prepare a frozen two-repository evaluation cohort and installed-artifact pilot driver. Complete the authorized live baseline and pilot (HAR-HU-14, 20): both artifacts scored 6/10; release recommendation remains HOLD.
|
|
81
|
+
|
|
82
|
+
### Console input and streaming
|
|
83
|
+
|
|
84
|
+
- Insert bracketed clipboard content as bounded, editable literal text; prevent
|
|
85
|
+
pasted commands and approval answers from executing accidentally.
|
|
86
|
+
- Suppress input echo while a run is active, preserve drafts across terminal resize,
|
|
87
|
+
and deliver partial streamed lines during provider pauses and on error cleanup.
|
|
88
|
+
- Extend the offline Node PTY demonstration with clipboard safety, cursor editing,
|
|
89
|
+
resize, provider failure and history recovery. JSON/JSONL and persisted state
|
|
90
|
+
contracts are unchanged.
|
|
91
|
+
|
|
92
|
+
### Migration from 1.0.0
|
|
93
|
+
|
|
94
|
+
- Existing CLI commands, JSON/JSONL output, public stable APIs and state format 1
|
|
95
|
+
remain compatible. Back up durable state before testing a prerelease.
|
|
96
|
+
- Local service and shared client APIs remain experimental. Desktop remains a
|
|
97
|
+
separately versioned private alpha, outside the stable CLI/library guarantee.
|
|
98
|
+
- Use the source development workflow until this candidate is published to npm
|
|
99
|
+
`next`; npm `latest` continues to install 1.0.0.
|
|
8
100
|
|
|
9
101
|
## 1.0.0 - 2026-09-20
|
|
10
102
|
|
|
@@ -636,3 +728,19 @@ No configuration, SQLite, approval, or execution-policy migration is required. E
|
|
|
636
728
|
### Added
|
|
637
729
|
|
|
638
730
|
- Initial provider-portable coding harness MVP for Meta, Qwen, and OpenAI.
|
|
731
|
+
|
|
732
|
+
### Experimental local service CLI
|
|
733
|
+
|
|
734
|
+
- Added opt-in `--service` for run/resume/chat and session list/inspect/rename,
|
|
735
|
+
with durable event replay and existing versioned JSON/JSONL documents.
|
|
736
|
+
- Persisted the shared CLI result projection and explicitly bound service run
|
|
737
|
+
admission to host scope. Added CLI/second-client crash recovery in installed smoke.
|
|
738
|
+
|
|
739
|
+
### Experimental desktop chat
|
|
740
|
+
|
|
741
|
+
- Added redacted per-run chat activity with durable prompts, bounded tool snapshots
|
|
742
|
+
and actual check exit codes. Session reads remain available during execution.
|
|
743
|
+
- Preserved CLI JSONL compatibility; desktop strips rich engine/CLI/approval payloads,
|
|
744
|
+
deduplicates replay and reconciles lost responses before allowing another send.
|
|
745
|
+
- Verified packaged macOS chat with duplicate submission, failed check, expired
|
|
746
|
+
snapshot, transport interruption, renderer reload and split-secret fixtures.
|
package/README.md
CHANGED
|
@@ -1,330 +1,76 @@
|
|
|
1
1
|
# Zhivex Harness
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Work on your code with an agent. Review consequential actions before approving them.**
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
[](./LICENSE)
|
|
5
|
+
Zhivex Harness is a local terminal assistant and TypeScript library. It supports
|
|
6
|
+
OpenAI, Qwen and Meta, with provisional Gemini support. Conversations and pending
|
|
7
|
+
approvals survive restarts.
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
This development branch prepares `1.1.0-rc.3` (unpublished), with console, local
|
|
10
|
+
service and Desktop preview improvements. The commands below install stable 1.0.0.
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
## Quick start
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
Requires Node.js 22.13.0 or newer, Git and a provider API key.
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
Provider choice, MCP, subagents, and containers are useful building blocks. Zhivex Harness focuses on the change-control path that connects them:
|
|
21
|
-
|
|
22
|
-
1. copy an eligible, secret-free repository snapshot into an enforced OCI environment;
|
|
23
|
-
2. execute only approved, allowlisted argv commands without host shell interpolation or container network;
|
|
24
|
-
3. inspect a content- and run-bound patch while the host workspace remains unchanged;
|
|
25
|
-
4. require a separate durable approval before importing that exact patch; and
|
|
26
|
-
5. reject the import if either the reviewed patch or the host preconditions changed.
|
|
27
|
-
|
|
28
|
-
Approvals, leases, idempotency claims, execution bindings, and exactly-once tool journals survive process restarts. Host deletions remain recoverable through quarantine, and operator exports are redacted by default.
|
|
29
|
-
|
|
30
|
-
## Prove the boundary in five minutes
|
|
31
|
-
|
|
32
|
-
The hostile-repository demo creates a disposable fixture containing malicious instructions and a decoy `.env`, then exercises the real OCI, approval, restart, patch-import, ledger, and stale-host boundaries:
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
bun install --frozen-lockfile
|
|
36
|
-
docker pull node:24-bookworm-slim
|
|
37
|
-
bun run build
|
|
38
|
-
bun run demo:hostile
|
|
39
|
-
```
|
|
40
|
-
|
|
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
|
-
|
|
43
|
-
## What RC.13 adds
|
|
44
|
-
|
|
45
|
-
- explicit personal provider/model profiles through `zhx init` and `--profile`, stored outside the repository without credentials;
|
|
46
|
-
- Tab command completion, previewed multiline tasks, bounded task history, and Alt+Enter input;
|
|
47
|
-
- `/context` inspection and bounded, digest-checked `/attach` excerpts for the next task;
|
|
48
|
-
- Ctrl+C cancellation with runtime cleanup and preserved pending approvals, plus recovery to the prompt after command/provider errors; and
|
|
49
|
-
- terminal-safe Markdown and optional colored diffs, with unsolicited input discarded before approval prompts.
|
|
50
|
-
|
|
51
|
-
See the [RC.13 changelog and migration notes](./CHANGELOG.md#100-rc13---2026-09-03) and [interactive workflow guide](./docs/CLI.md#interactive-daily-workflow). No configuration or store migration from RC.12 is required.
|
|
52
|
-
|
|
53
|
-
Earlier release changes and migrations are recorded in the [changelog](./CHANGELOG.md). Browse the [documentation index](./docs/README.md) for usage, architecture, maintenance, and historical reports.
|
|
54
|
-
|
|
55
|
-
It does not include arbitrary host shell access, `stdio` MCP, permanent deletion, Git writes, a desktop UI, a remote worker, or a managed sandbox service. Without `--execution oci`, shell-class tools remain unavailable. The opt-in `--oci-shell ask` policy exposes approval-bound `sh` only inside OCI. With OCI enabled, repository tools, checks, and enabled subagents share the acquired snapshot; network MCP is rejected because it cannot truthfully satisfy the no-network execution policy.
|
|
56
|
-
|
|
57
|
-
## Requirements
|
|
58
|
-
|
|
59
|
-
- Node.js 22.13.0 or newer. Node 24 LTS is used by the default OCI image and release workflow.
|
|
60
|
-
- Git for repository status and diff inspection.
|
|
61
|
-
- At least one supported provider credential for real model execution.
|
|
62
|
-
- Docker or Podman plus a preloaded image when `--execution oci` is requested.
|
|
63
|
-
|
|
64
|
-
## Installation
|
|
65
|
-
|
|
66
|
-
Run the Node-first `latest` release with an exact version:
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
bunx @zhivex-ai/harness@0.11.1 --version
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
To try the published RC.13 candidate on `next`, pin its exact version:
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
bunx @zhivex-ai/harness@1.0.0-rc.13 --version
|
|
76
|
-
bunx @zhivex-ai/harness@1.0.0-rc.13 init --profile daily --provider openai
|
|
77
|
-
bunx @zhivex-ai/harness@1.0.0-rc.13 doctor --profile daily
|
|
78
|
-
bunx @zhivex-ai/harness@1.0.0-rc.13 --profile daily "inspect this repository"
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
RC.13 is a prerelease; publication on `next` does not promote it to GA.
|
|
82
|
-
|
|
83
|
-
To exercise the source checkout, contributors use Bun for deterministic repository tooling while the built CLI itself runs on Node:
|
|
84
|
-
|
|
85
|
-
```bash
|
|
86
|
-
bun install --frozen-lockfile
|
|
87
|
-
cp .env.example .env
|
|
88
|
-
bun run dev --version
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
RC.13 includes first-run setup that stores only a provider and model in an explicit personal profile. From a source checkout:
|
|
92
|
-
|
|
93
|
-
```bash
|
|
94
|
-
bun run dev init --profile daily --provider openai
|
|
95
|
-
bun run dev doctor --profile daily
|
|
96
|
-
bun run dev --profile daily "inspect this repository"
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
Installed builds expose the same flow as `zhx init`. Profiles are private user configuration outside the repository, use owner-only permissions, contain no credentials, and are never selected implicitly. CLI flags override the selected profile; the selected profile overrides environment variables; environment variables override built-in defaults.
|
|
100
|
-
|
|
101
|
-
Configure only the providers you plan to use:
|
|
102
|
-
|
|
103
|
-
```dotenv
|
|
104
|
-
OPENAI_API_KEY=...
|
|
105
|
-
MODEL_API_KEY=...
|
|
106
|
-
DASHSCOPE_API_KEY=...
|
|
107
|
-
GEMINI_API_KEY=...
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
`MODEL_API_KEY` is used by the Meta Model API. Qwen also accepts `QWEN_API_KEY`; `DASHSCOPE_API_KEY` takes precedence. Gemini also accepts `GOOGLE_GENERATIVE_AI_API_KEY`.
|
|
111
|
-
|
|
112
|
-
## Diagnose the environment
|
|
113
|
-
|
|
114
|
-
`doctor` is local and does not contact provider endpoints:
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
zhx doctor
|
|
118
|
-
zhx doctor --profile daily
|
|
119
|
-
zhx doctor --provider qwen --json
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
For a source checkout, replace `zhivex-harness` with `bun run dev`.
|
|
123
|
-
|
|
124
|
-
## Usage
|
|
125
|
-
|
|
126
|
-
Start the durable console with the ergonomic command, or use the long alias in existing scripts:
|
|
127
|
-
|
|
128
|
-
```bash
|
|
16
|
+
```sh
|
|
17
|
+
npm install -g @zhivex-ai/harness@1.0.0
|
|
18
|
+
cd /path/to/your/project
|
|
129
19
|
zhx
|
|
130
|
-
zhx chat --continue
|
|
131
|
-
zhivex-harness --version
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
Inside the console, `/help` lists `/provider`, `/model`, `/route`, `/status`, `/diff`, `/review`, `/resume`, `/pending`, `/approve`, `/deny`, `/compact`, `/new`, `/rename`, and `/exit`. Tool and step activity is rendered without tool payloads; approval cards sanitize terminal controls and keep governed edit/command payloads fully reviewable.
|
|
135
|
-
|
|
136
|
-
The published RC.13 also adds Tab command completion, `/paste` for previewed
|
|
137
|
-
multiline tasks, `/context` for active project rules/skills, and `/attach <path>` for
|
|
138
|
-
bounded file excerpts. Ctrl+C interrupts active work while retaining the session;
|
|
139
|
-
errors return to the prompt. See the [interactive workflow](./docs/CLI.md#interactive-daily-workflow)
|
|
140
|
-
for attachment limits, approval behavior, and recovery. These source additions are
|
|
141
|
-
not yet published or live-certified.
|
|
142
|
-
|
|
143
|
-
Project context engineering is enabled by default. A root `AGENTS.md` plus an optional `.zhivex/harness.json` can declare bounded context files, rule files, and progressively loaded `SKILL.md` directories. Disable discovery with `--no-project-context` or select another manifest with `--context-config`.
|
|
144
|
-
|
|
145
|
-
Show providers and detected configuration without printing secrets:
|
|
146
|
-
|
|
147
|
-
```bash
|
|
148
|
-
zhx providers
|
|
149
|
-
zhx providers --json
|
|
150
20
|
```
|
|
151
21
|
|
|
152
|
-
|
|
22
|
+
On first use, choose a provider and model, then enter your API key in the hidden
|
|
23
|
+
prompt. Save it in the system keychain (macOS/Linux) or use it only for the current
|
|
24
|
+
CLI session. Existing environment keys take precedence. See [First use](docs/FIRST_USE.md)
|
|
25
|
+
and [Credentials](docs/CREDENTIALS.md) for setup and automation.
|
|
153
26
|
|
|
154
|
-
|
|
155
|
-
zhivex-harness run --provider openai "review the repository and fix the tests"
|
|
156
|
-
zhivex-harness run --provider meta "document the current architecture"
|
|
157
|
-
zhivex-harness run --provider qwen "implement the pending endpoint"
|
|
158
|
-
zhx run --provider gemini "review the proposed implementation"
|
|
159
|
-
```
|
|
27
|
+
Try: “Explain this repository and suggest a small improvement.”
|
|
160
28
|
|
|
161
|
-
|
|
29
|
+
Type `/` for common actions. `/model` changes the model, `/sessions` finds previous
|
|
30
|
+
conversations, and `/diff` shows changes. Review requested actions before approving
|
|
31
|
+
them. Ctrl+C stops active work; it does not undo completed changes.
|
|
162
32
|
|
|
163
|
-
|
|
164
|
-
zhivex-harness run --provider qwen --workspace ../my-app "fix the typecheck errors"
|
|
165
|
-
```
|
|
33
|
+
## A few commands are enough
|
|
166
34
|
|
|
167
|
-
|
|
35
|
+
| Command | Purpose |
|
|
36
|
+
| --- | --- |
|
|
37
|
+
| `zhx` | Open the conversation |
|
|
38
|
+
| `zhx --continue` | Continue the latest conversation |
|
|
39
|
+
| `zhx run "task"` | Run one task for automation |
|
|
40
|
+
| `zhx doctor` | Diagnose local configuration |
|
|
41
|
+
| `zhx --help` | Show the short guide |
|
|
168
42
|
|
|
169
|
-
|
|
170
|
-
zhx chat
|
|
171
|
-
zhx chat --continue
|
|
172
|
-
zhx sessions list
|
|
173
|
-
```
|
|
43
|
+
Use `zhx <command> --help` for command-specific options, or `zhx help all` for the
|
|
44
|
+
complete reference. Existing `zhx chat` and `zhivex-harness` commands remain supported.
|
|
174
45
|
|
|
175
|
-
|
|
46
|
+
## CLI, library or Desktop?
|
|
176
47
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
48
|
+
The npm package includes the CLI and TypeScript library. [Desktop](https://github.com/Zhivex/zhivex-harness/blob/main/desktop/README.md)
|
|
49
|
+
is a separate Electron application, currently alpha for macOS Apple Silicon.
|
|
50
|
+
It is not included in npm and has its own build and distribution process. Its local
|
|
51
|
+
package is unsigned and unnotarized; automatic updates are disabled pending production trust setup and validation.
|
|
181
52
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
Writes and checks pause for approval. In a non-interactive execution, state is saved in `.zhivex-harness/runs/operations.sqlite`:
|
|
185
|
-
|
|
186
|
-
```bash
|
|
187
|
-
zhivex-harness resume <runId> --approve
|
|
188
|
-
zhivex-harness resume <runId> --deny
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
Duplicate external requests can share a durable run identity:
|
|
192
|
-
|
|
193
|
-
```bash
|
|
194
|
-
zhivex-harness run --idempotency-key issue-482 "fix the reported regression"
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
Operate on runs without loading a provider or requiring its credential:
|
|
198
|
-
|
|
199
|
-
```bash
|
|
200
|
-
zhivex-harness runs list --status waiting_approval
|
|
201
|
-
zhivex-harness runs inspect <runId> --json
|
|
202
|
-
zhivex-harness runs export <runId> --json
|
|
203
|
-
zhivex-harness runs cancel <runId> --reason "superseded"
|
|
204
|
-
zhivex-harness runs cleanup --before 2026-08-01T00:00:00Z
|
|
205
|
-
```
|
|
53
|
+
## Permissions and limits
|
|
206
54
|
|
|
207
|
-
|
|
55
|
+
Edits and checks require approval by default. Files such as `.env`, private keys,
|
|
56
|
+
Git internals and dependency directories are excluded from model exploration.
|
|
57
|
+
The default runtime has no OS isolation and exposes no shell-class tools. Running
|
|
58
|
+
commands in isolation requires an explicitly configured Docker or Podman environment;
|
|
59
|
+
see [Execution environments](docs/EXECUTION_ENVIRONMENTS.md).
|
|
208
60
|
|
|
209
|
-
|
|
61
|
+
Gemini remains provisional. See the [support matrix](docs/SUPPORT_MATRIX.md) and
|
|
62
|
+
[security policy](SECURITY.md) for supported configurations and reporting concerns.
|
|
210
63
|
|
|
211
|
-
|
|
212
|
-
zhivex-harness run --mcp-config examples/mcp-config.json "consult the allowed documentation tools"
|
|
213
|
-
zhivex-harness run --subagent explorer --subagent reviewer "analyze the boundary"
|
|
214
|
-
zhivex-harness review --reviewer explorer --reviewer reviewer --json "review the durable runtime"
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
MCP configuration, capability gates, child budgets, promoted approvals, review groups, migration, and known limits are documented in [docs/EXTENSIBILITY.md](./docs/EXTENSIBILITY.md).
|
|
218
|
-
|
|
219
|
-
`--yes` automatically approves tools with side effects. Use it only inside a disposable or isolated workspace:
|
|
220
|
-
|
|
221
|
-
```bash
|
|
222
|
-
zhivex-harness run --provider openai --yes "apply the change and validate it"
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
Structured automation output uses schema version `1`:
|
|
226
|
-
|
|
227
|
-
```bash
|
|
228
|
-
zhivex-harness run --provider qwen --json "analyze the issue without modifying files"
|
|
229
|
-
zhx run --provider gemini --jsonl "analyze the issue without modifying files"
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
The JSON shapes and exit codes are documented in [docs/CLI.md](./docs/CLI.md).
|
|
233
|
-
|
|
234
|
-
Create a portable change-admission envelope from structured, redacted evidence and the exact patch bytes, then verify it without provider credentials or network access:
|
|
235
|
-
|
|
236
|
-
```bash
|
|
237
|
-
zhx changes create examples/change-envelope-input.json --patch examples/change.patch > change-envelope.json
|
|
238
|
-
zhx changes verify change-envelope.json --patch examples/change.patch
|
|
239
|
-
```
|
|
64
|
+
## Documentation
|
|
240
65
|
|
|
241
|
-
|
|
66
|
+
- **Users:** [First use](docs/FIRST_USE.md), [daily workflow](docs/CLI.md#interactive-daily-workflow), [usage reference](docs/USAGE.md).
|
|
67
|
+
- **Integrators:** [CLI contracts](docs/CLI.md), [extensibility](docs/EXTENSIBILITY.md), [API stability](docs/STABILITY.md).
|
|
68
|
+
- **Contributors:** [Development](https://github.com/Zhivex/zhivex-harness/blob/main/CONTRIBUTING.md) and [maintenance](https://github.com/Zhivex/zhivex-harness/blob/main/docs/MAINTENANCE.md).
|
|
242
69
|
|
|
243
|
-
|
|
70
|
+
[Browse documentation](docs/README.md).
|
|
244
71
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
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.
|
|
252
|
-
|
|
253
|
-
Enable enforced local execution explicitly. The image must already exist locally; the harness never pulls it implicitly:
|
|
254
|
-
|
|
255
|
-
```bash
|
|
256
|
-
docker pull node:24-bookworm-slim
|
|
257
|
-
zhivex-harness doctor --execution oci
|
|
258
|
-
zhivex-harness run --execution oci --yes "inspect, implement, test, review the environment patch, and import it"
|
|
259
|
-
zhivex-harness run --execution oci --oci-shell ask "use a reviewed shell pipeline inside the isolated snapshot"
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
`--yes` approves eligible command execution and the distinct host patch import; it cannot enable a shell whose policy is `deny`. Omit it when a human should review each durable approval. Configuration, threat boundary, cleanup, and certification details are in [docs/EXECUTION_ENVIRONMENTS.md](./docs/EXECUTION_ENVIRONMENTS.md).
|
|
263
|
-
|
|
264
|
-
## Providers and defaults
|
|
265
|
-
|
|
266
|
-
| Provider | Default model | Support in `latest` (`0.11.1`) |
|
|
267
|
-
| --- | --- | --- |
|
|
268
|
-
| Meta | `muse-spark-1.2` | `MODEL_API_KEY` · 0.11.1 release-bound base, delegation, and OCI execution certified |
|
|
269
|
-
| Qwen | `qwen3.8-max` | `DASHSCOPE_API_KEY` or `QWEN_API_KEY` · 0.11.1 release-bound base, delegation, routing, and OCI execution certified |
|
|
270
|
-
| OpenAI | `gpt-5.6-luna` | `OPENAI_API_KEY` · 0.11.1 release-bound base, delegation, routing, and OCI execution certified |
|
|
271
|
-
| Gemini | `gemini-3.6-flash` | `GEMINI_API_KEY` or `GOOGLE_GENERATIVE_AI_API_KEY` · provisional until the harness live matrix passes |
|
|
272
|
-
|
|
273
|
-
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.
|
|
274
|
-
|
|
275
|
-
The exact `v0.11.1` tag passed proposal/approval/restart, bounded delegation, OpenAI-parent/Qwen-reviewer routing, and model-directed OCI execution for Meta `muse-spark-1.2`, Qwen `qwen3.8-max`, and OpenAI `gpt-5.6-luna` on 2026-08-23. Luna remains the OpenAI default, while Terra and Sol remain explicit `--model` selections with older local base evidence only. 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.
|
|
276
|
-
|
|
277
|
-
For `next`, the exact `v1.0.0-rc.13` artifact passed protected live certification and all 14 representative cases for each of Meta `muse-spark-1.2`, Qwen `qwen3.8-max`, and OpenAI `gpt-5.6-luna` on 2026-09-08. See the [RC.13 release evidence](./docs/LIVE_CERTIFICATION.md#current-public-status) for the workflow and artifact identity. Gemini remains provisional.
|
|
278
|
-
|
|
279
|
-
## Security boundaries
|
|
280
|
-
|
|
281
|
-
- Every workspace path is resolved against a canonical root.
|
|
282
|
-
- Reads and writes that cross an external symlink are rejected.
|
|
283
|
-
- Dependencies, build output, Git internals, harness state, `.env`, `.npmrc`, and private keys are excluded from model exploration.
|
|
284
|
-
- The model has no generic shell.
|
|
285
|
-
- Only explicitly allowed, declared package scripts can run; the model must provide the exact script text for approval binding.
|
|
286
|
-
- Checks run without automatic `.env` loading and with a reduced environment.
|
|
287
|
-
- Patch application, moves, quarantine, restore, and command execution require interruptible approval.
|
|
288
|
-
- Every edit carries the digest observed during inspection; stale creates and updates fail closed.
|
|
289
|
-
- Existing file modes are preserved and successful replacements are published atomically.
|
|
290
|
-
- Unsafe state roots, protected workspace paths, files, and symlink targets are rejected before a run store is created.
|
|
291
|
-
- Environment values are not injected into prompts, diagnostics, or tool responses.
|
|
292
|
-
- Remote MCP output is bounded, schema-checked, treated as untrusted, and rejected on common prompt-injection directives.
|
|
293
|
-
- Network MCP always pauses for approval; custom read-only annotation trust must be explicit and injected by the host application.
|
|
294
|
-
- Subagent children inherit scope, workspace, cancellation, approval, and store policy while retaining independent budgets and fingerprints.
|
|
295
|
-
- OCI execution binds the durable run to the resolved image identity and enforced policy; resume fails if either changes.
|
|
296
|
-
- Snapshot discovery excludes secrets, Git internals, harness state, dependency trees, and build output. Dependencies may be mounted separately read-only.
|
|
297
|
-
- Untrusted commands receive a quota-backed tmpfs workspace, never a writable host bind; only successful, frozen, validated snapshots replace durable environment state.
|
|
298
|
-
- Container processes receive no provider credentials or arbitrary host environment values, and host changes require a separately approved digest-bound patch import.
|
|
299
|
-
|
|
300
|
-
The default `none` backend provides governance but no OS isolation and therefore exposes no shell-class tool. The local OCI backend enforces the documented container boundary, but it is not a VM or a managed hostile-code sandbox; use a dedicated host or microVM when the container runtime itself is outside the threat model.
|
|
301
|
-
|
|
302
|
-
## Development
|
|
303
|
-
|
|
304
|
-
```bash
|
|
305
|
-
bun run typecheck
|
|
306
|
-
bun run readiness:1.0
|
|
307
|
-
bun test
|
|
308
|
-
bun run build
|
|
309
|
-
bun run evaluate
|
|
310
|
-
bun run benchmark:workspace
|
|
311
|
-
bun run benchmark:workspace -- --files 50000 --repetitions 10 --warmups 2
|
|
312
|
-
bun run benchmark:oci -- --files 1000 --commands 20 --repetitions 10 --warmups 1
|
|
313
|
-
bun run benchmark:safe-fix:ci
|
|
314
|
-
bun run smoke:package
|
|
315
|
-
bun run pack:inspect
|
|
316
|
-
bun run check
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
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.
|
|
320
|
-
|
|
321
|
-
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.
|
|
322
|
-
|
|
323
|
-
Full generated reports remain local and Git-ignored under `./results/` (source checkout). Commit only digest-verified, sanitized evidence snapshots under [`benchmarks/baselines`](./benchmarks/baselines/).
|
|
324
|
-
|
|
325
|
-
The live gate is opt-in and billable:
|
|
326
|
-
|
|
327
|
-
```bash
|
|
328
|
-
ZHIVEX_HARNESS_LIVE=1 bun run scripts/live-provider-smoke.ts
|
|
329
|
-
ZHIVEX_HARNESS_LIVE=1 bun run smoke:live:routing
|
|
330
|
-
```
|
|
72
|
+
Version `1.0.0` is the current public npm release. Source checkout changes can be
|
|
73
|
+
newer than the published package. Consult the [changelog](CHANGELOG.md) and
|
|
74
|
+
[repository release status](https://raw.githubusercontent.com/Zhivex/zhivex-harness/main/release-status.json)
|
|
75
|
+
for release identity; [release evidence](https://github.com/Zhivex/zhivex-harness/blob/main/docs/LIVE_CERTIFICATION.md)
|
|
76
|
+
records validation scope and limitations.
|
package/SECURITY.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## Supported versions
|
|
4
4
|
|
|
5
|
-
Security fixes are provided for the latest published `0.
|
|
5
|
+
Security fixes are provided for the latest published `1.0.x` patch. Older minors and private checkpoints are not supported release channels. Registry integrity and provenance do not substitute for the separate provider and execution evidence recorded in [docs/LIVE_CERTIFICATION.md](https://github.com/Zhivex/zhivex-harness/blob/main/docs/LIVE_CERTIFICATION.md).
|
|
6
6
|
|
|
7
7
|
## Reporting a vulnerability
|
|
8
8
|
|
package/SUPPORT.md
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Support
|
|
2
2
|
|
|
3
|
-
Zhivex Harness `0.
|
|
3
|
+
Zhivex Harness `1.0.x` is the latest supported Node-first CLI and TypeScript library. Stable 1.x contracts follow [the stability policy](./docs/STABILITY.md); incompatible changes require a major release except documented urgent security corrections. Beta and experimental surfaces retain their declared policies. The mutable machine-readable public release state is recorded in the repository [release-status.json](https://raw.githubusercontent.com/Zhivex/zhivex-harness/main/release-status.json), outside immutable npm artifacts.
|
|
4
4
|
|
|
5
|
-
The
|
|
5
|
+
The 1.0 support scope is tracked in the [machine-readable support matrix](./docs/support-matrix.json) and its [human-readable view](./docs/SUPPORT_MATRIX.md). Compatibility and removals follow [DEPRECATIONS.md](./docs/DEPRECATIONS.md) for the published 1.x line.
|
|
6
6
|
|
|
7
7
|
## Supported baseline
|
|
8
8
|
|
|
@@ -13,7 +13,11 @@ The detailed 1.0 target is tracked in the [machine-readable support matrix](./do
|
|
|
13
13
|
- the provider/model combinations marked certified in the package documentation; and
|
|
14
14
|
- HTTPS or explicitly allowed loopback-HTTP MCP endpoints using the documented bounded JSON-RPC subset.
|
|
15
15
|
|
|
16
|
-
Only the most recent published `0.
|
|
16
|
+
Only the most recent published `1.0.x` patch receives routine fixes. The exact `v1.0.0` tag passed protected release-bound base, orchestration, routing and model-directed execution for Meta, Qwen and OpenAI on 2026-09-20; the complete representative matrix passed on its authorized second attempt. Gemini remains provisional until its complete harness live matrix passes against an exact release candidate. Live provider evidence is account-, model-, endpoint-, artifact-, and date-dependent; see [docs/LIVE_CERTIFICATION.md](https://github.com/Zhivex/zhivex-harness/blob/main/docs/LIVE_CERTIFICATION.md).
|
|
17
|
+
|
|
18
|
+
## Installation diagnostics
|
|
19
|
+
|
|
20
|
+
Follow the [stable installation commands](./README.md#installation) or [isolated Bun example](./examples/README.md). Run `zhx --version`, `zhx --help`, and `zhx doctor` before reporting an installation issue. Doctor is local: a missing provider credential produces a diagnostic failure until that credential is configured. Include the version, OS, Node/Bun versions and sanitized diagnostics in a report; never include keys or your `.env` file.
|
|
17
21
|
|
|
18
22
|
## Support channels
|
|
19
23
|
|
package/benchmarks/README.md
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Benchmark implementations, deterministic fixtures, OCI image contracts, and their tests live in this repository because they measure Zhivex Harness behavior.
|
|
4
4
|
|
|
5
|
-
Complete generated reports remain local under `../results/` (source checkout). Only compact sanitized snapshots belong in [`baselines`](
|
|
5
|
+
Complete generated reports remain local under `../results/` (source checkout). Only compact sanitized snapshots belong in [`baselines`](https://github.com/Zhivex/zhivex-harness/tree/main/benchmarks/baselines). A baseline must omit raw samples, host details, worktree paths, and the invocation command, and must retain the exact report digest, dataset digest, model, image identity, matrix size, aggregate outcomes, confidence intervals, compact efficiency averages when available, and evidence boundary.
|
|
6
6
|
|
|
7
7
|
These snapshots are local observations, not provider certification, public leaderboard results, or cross-platform performance guarantees.
|
|
8
8
|
|
|
9
9
|
Both current live snapshots exercise the single-approval terminal edit-verify-import transaction. The bounded smoke is a fast 12-run check; the larger snapshot is a separate 216-run variance and defect-family check. Do not pool their observations or present either as a public benchmark score.
|
|
10
10
|
|
|
11
|
-
The 12-task expanded Time-to-Safe-Fix fixture lives at [`evaluations/time-to-safe-fix-expanded.jsonl`](../evaluations/time-to-safe-fix-expanded.jsonl). Its default three-repetition live matrix is intentionally opt-in and runs 216 cases sequentially so provider and OCI contention do not distort latency comparisons. Keep its [expanded baseline](
|
|
11
|
+
The 12-task expanded Time-to-Safe-Fix fixture lives at [`evaluations/time-to-safe-fix-expanded.jsonl`](../evaluations/time-to-safe-fix-expanded.jsonl). Its default three-repetition live matrix is intentionally opt-in and runs 216 cases sequentially so provider and OCI contention do not distort latency comparisons. Keep its [expanded baseline](https://github.com/Zhivex/zhivex-harness/blob/main/benchmarks/baselines/time-to-safe-fix-live-expanded-2026-08-21.json) separate from the bounded smoke snapshot.
|
|
12
12
|
|
|
13
13
|
In the 2026-08-21 expanded local GPT-5.6 Luna run, governed resolved 72/72 safely and direct/optimized each resolved 71/72, with zero completed attacks or unauthorized effects. Safe-run p50 was 9.64 s direct, 17.56 s governed, and 8.49 s optimized. The optimized failure was a fail-closed `STALE_DIGEST` rejection with no host effect; it is retained as historical evidence of the pre-recovery behavior rather than selectively retried away. The newer bounded smoke baseline validates the recovery implementation without rewriting this expanded observation.
|
|
14
14
|
|
|
@@ -42,7 +42,7 @@ continuity suite nor a workspace microbenchmark establishes competitive superior
|
|
|
42
42
|
|
|
43
43
|
## External agent comparison
|
|
44
44
|
|
|
45
|
-
The opt-in [SWE-bench comparison](
|
|
45
|
+
The opt-in [SWE-bench comparison](https://github.com/Zhivex/zhivex-harness/blob/main/docs/reports/EXTERNAL_COMPARISON.md) runs upstream
|
|
46
46
|
mini-SWE-agent and the native Zhivex OCI harness, exports actual patches, and grades
|
|
47
47
|
with the official SWE-bench evaluator. `bun run benchmark:swebench:test` validates
|
|
48
48
|
its offline contracts. Paid runs require a prepared, pinned matrix and `--live`.
|