Repository navigation
Releases: keeltrace/hermes-nerve
Release list
Nerve v0.4.15
Nerve v0.4.15
Verified source: 76320ec5d764d588d9042baac60702f333896b1a (merged PR #76).
Git tree: e2ded55ffe6ed9fb7cbc9f403f168c02dac6878e.
Included repairs
- Preserve caller ContextVars through bounded and queued advisory work.
- Respect scoped SystemOne timeouts and a single retry deadline.
- Preserve session-end callback and profile-scoped activation telemetry fixes.
- Exclude transport attachment envelopes and bare version strings from requested output paths while retaining explicit file requests.
- Handle expected browser peer disconnects at the HTTP response boundary without swallowing unrelated failures.
- Retain the DEV17 timeout repair and qualify release checks at two test workers.
Existing contributor history and credit are preserved; see CONTRIBUTORS.md and CHANGELOG.md.
Executed qualification
- Final-main workflow 40230355905: all required Python 3.10–3.14 jobs, native plugin validation/doctor and aggregate passed. Actual checkout is the exact release commit.
- Full DEV17: all 118 expected test-file PASS results and final PASS marker. Earlier approved local run also passed all 118 files, exit 0, in 167.528 seconds.
- PR CI included 634 unit tests on Python 3.10 and 641 on Python 3.11–3.14; these totals include documented skips, not a claim every test executed on every interpreter.
- The unchanged complete release tree passed the single independent source/standards review and actual existing-Hermes 0.22.5 disposable-profile install/enable/doctor, authenticated HTTP configuration checks, post-install corruption/restoration, and native teardown with zero connected QA adapters. All 373 source files were bound to the qualified source; original serving configuration and gateway identity were preserved.
- Both Python distributions were rebuilt from final main: each has 111 package runtime members plus exact root plugin entrypoint and manifest. Both source archives match all 373 tracked files. SHA256SUMS.txt covers all four artifacts.
Security and boundaries
- Enabled plugin scanner: CAUTION, 359 findings (20 high, 276 medium, 63 low), zero critical. Intended subprocess/network capabilities require normal trust and authorization. No scanner bypass or force installation was used.
- Artifact/source secrets sweep exited 1 with 47 reviewed hits across nine unique noncredential source-expression/test-fixture patterns; this is reviewed triage, not a clean scanner exit.
- Actual survival through a future Hermes core update remains UNVERIFIED under the owner's explicit scope exclusion. Current-runtime lifecycle and dependency tests do not establish an empirical core-update transition.
- No live model-inference or package-manager crash-atomicity claim is made. Recovery was demonstrated by restoring the verified admissible candidate backup, not by using scanner-blocked v0.4.14.
This version is published at the exact verified commit without overwriting an existing tag or release. Checksums are supplied for independent verification. GitHub's separate repository-wide platform immutability setting is not changed by this release.
Nerve v0.4.14 — sidecar authority, save-path repairs, sanitized public tree
Full release notes in RELEASE_NOTES_0.4.14.md / RELEASE_NOTES_0.4.13.md (security disclosure). Quality gates: 1,339/0/6 suite, verifier PASS 0.4.14, secrets sweep clean. Install: hermes plugins install keeltrace/hermes-nerve --yes-deps --force (stock scanner flags 3 deliberate gated capabilities — review before installing).
Nerve v0.3.1
Nerve v0.3.1 — stable maintenance release
Nerve 0.3.1 is the stable maintenance, hardening, and quality-of-life release for the 0.3.0 profile-aware line. It also includes one deliberately approved, opt-in additive safety feature: @jcrabapple's ask-only Action Gate mode from #41, with the #44 maintainer hardening.
It promotes the validated v0.3.1rc1 maintenance baseline and adds the final public-facing setup correction for Shared Context. It deliberately does not pull 0.3.2 feature work into the maintenance release.
What this release fixes
Configuration and context-engine correctness
- Hermes settings are documented and consumed from the real plugin namespace,
plugins.entries.nerve.settings. - Legacy
plugins.entries.hermes-nervesettings are detected and reported instead of being silently treated as active. - The unsupported context-engine directory-loader path is refused rather than constructing an unconfigured Nerve engine.
- Unknown context-engine modes fail safe to shadow behavior; a typo cannot silently enable destructive apply mode.
nerve_statsadvertises only sections its handler actually serves.- Context-ledger evidence uses the hook-supplied Hermes session ID instead of incorrectly relying on a process-global session.
Primary contributor series: #29, #30, #31, #32, #33.
Multiplexed gateway / secret-scope propagation
The NervousSystem worker and asynchronous Reflex shadow execution now preserve the enqueuer's contextvars context across thread hops. This prevents profile-scoped provider credentials from being lost under multiplexed Hermes gateways.
Reported in #35; fixed through the #36 maintenance work.
Completion integrity
Machine-checkable Definition-of-Done criteria are re-evaluated against current workspace state on each completion attempt.
A stale earlier PASS can no longer survive:
- deletion of a required file,
- a test that later becomes failing,
- newly dirty or untracked Git state.
The validated clean maintenance re-land is represented by #49.
Retry-loop suppression
Deterministic non-retryable failures now trigger local replanning rather than spending another identical provider/tool cycle.
Examples include stable policy, permission, schema, and path failures. Transient failure behavior remains retryable.
The clean maintenance reconciliation is represented by #50.
Task-relative progress and environment-thrash recovery
Nerve no longer treats arbitrary activity as implementation progress.
The maintenance behavior now:
- ignores scratch/repro-only mutations as completion progress,
- recognizes native mutation aliases such as
patch, - requires persisted task-relevant changes for implementation completion,
- requires successful verification when verification/tests were explicitly requested,
- accepts ordinary zero-failure test summaries,
- detects repeated package/venv/test-environment setup failures and redirects toward repository-native recovery instead of endless setup churn.
The validated clean reconciliation is represented by #50.
Shared Context public-install behavior
Issue #39 correctly identified that Operator and Fat Cat default-enabled Shared Context even though HermesContextBus had no public install source.
For 0.3.1:
- Shared Context is OFF by default in every named profile.
- Explicit module opt-in remains supported.
nerve setup --install-shared-context /path/to/HermesContextBusremains supported.nerve setup --explainno longer reports a missing HermesContextBus dependency while Shared Context is disabled.- Explicitly enabling Shared Context still reports the missing dependency when it is unavailable.
This is the conservative maintenance fix. Public HermesContextBus distribution remains separate work in #40.
Public source hygiene
Historical machine-specific absolute filesystem paths in public planning/evidence material were replaced with generic equivalents before the final release source tag. This is documentation/evidence hygiene only and does not alter runtime behavior.
See #54.
Explicitly excluded from 0.3.1
The following remain separate development/feature tracks:
- Deep Research Kit — #37
- block-review judge — #38
- public HermesContextBus packaging/publication — #40
- other 0.3.2 development work
This boundary is intentional: 0.3.1 is a maintenance release, not a feature aggregation release.
Attribution
@jcrabapple
Authored the contributor series that hardened Nerve's provider and Action Gate behavior:
- #20 — resolve provider credentials through Hermes' profile-aware secret scope instead of relying on ambient process environment
- #21 — record bounded answer distributions in gate telemetry so operators can inspect the signal actually used by the classifier
- #22 — require both calibration confidence and p(ALLOW) for enforce-mode automatic continuation
- #41 — add the opt-in ask-only enforce mode so BLOCK verdicts escalate to human approval rather than becoming a classifier-owned hard stop
#41 is included in v0.3.1 together with the maintainer safety hardening from #44: action-specific approval keys, registration-time environment fallback, contract updates, and focused regressions.
@colibrishin
Reported #29 and authored the four-part hardening series:
- #30 — real plugin settings namespace + directory-loader guard
- #31 — fail-safe context-engine mode handling and documentation
- #32 — truthful
nerve_statsschema - #33 — correct Hermes hook session attribution
These changes materially improved configuration correctness and runtime truthfulness.
@omarabdo516
Reported #35, including the concrete multiplexed-gateway UnscopedSecretError failure and ContextVar/thread-hop diagnosis. That report drove the worker/shadow context propagation fix represented by #36.
@HiroKws
Reported #39 and followed it with a detailed implementation/history investigation. The report identified that the Shared Context integration had been shipped without a public HermesContextBus source and distinguished the runtime integration from the distribution defect. That work directly drove the 0.3.1 opt-in correction and the separate #40 publication track.
@keeltrace
Maintainer integration, release engineering, regression-campaign reconciliation, retry/completion/progress hardening, public-source hygiene, and assembly of the final 0.3.1 maintenance line.
AI-assistance disclosure
Parts of the implementation and review process used coding/reviewer agents. Relevant public PRs contain their own disclosures where applicable. Contributor credit in this document follows the human-visible GitHub issue/PR authorship and reporting record; AI assistance is not substituted for human contributor attribution.
Final release gates
This draft should not be promoted until the exact final branch passes:
- Python 3.10, 3.11, 3.12, 3.13, and 3.14 CI
- full repository test suite
scripts/verify_release.py- Hermes Plugin Validate
- Hermes Plugin Doctor
- focused settings/context/session-scope regressions
- focused stale-completion/retry/progress regressions
- Shared Context profile/setup regressions
- package build and release-asset structural verification
- final diff review confirming no 0.3.2 feature ancestry entered the branch
The release tag must be created from the exact reviewed/verified final commit.
Nerve v0.3.1rc1
- Fix Nerve settings namespace handling so configuration is read from
plugins.entries.nerve.settings; warn on the legacy ignoredhermes-nerveblock and preserve omitted profile-script settings instead of overwriting effective values. - Harden context-engine registration/loading, unknown-mode fallback, stats truthfulness, ledger session attribution, and worker profile secret-scope propagation.
- Re-evaluate machine-checkable completion criteria against current repository state so stale PASS verdicts cannot survive deleted files, regressed tests, or newly dirty Git state.
- Stop deterministic retry loops immediately on policy/permission/schema/path failures while preserving transient retry behavior.
- Make implementation progress task-relative: scratch/repro edits do not count as completion progress, native mutation aliases such as
patchare recognized consistently, and requested verification must actually pass before completion. - Detect repeated package/virtualenv/test-environment setup failures and force repository-native recovery instead of continuing environment thrash.
- Release scope is maintenance-only: no Shared Context / issue #39 publication work, no policy-memory feature, no Deep Research Kit feature, and no ask-only gate mode feature are included in this RC.
Verification target: Python 3.10–3.14 CI, release structural verification, plugin validation/doctor, focused completion/retry/progress regressions, and the canonical dev17 release gate.
Nerve v0.3.0
Nerve v0.3.0
- Add
nerve setupwith Full Configuration, Fat Cat, Operator, Lean, Marie Kondo, Custom, and explicit Legacy behavior. - Make named profiles control the actual runtime surface: disabled modules omit their tools, hooks, optional provider paths, and context engines where applicable; headless Kanban workers remain schema-minimal.
- Add profile-aware Action Gate defaults, dependency pruning, runtime-disable truthfulness, and reason reporting so resolved capability state matches actual runtime behavior.
- Add Assistant Accountability with durable loop state, bounded audit/review flows, explicit operator-owned enable/disable authority, concurrency fencing, and fail-closed persistence recovery.
- Add optional HermesContextBus v0.2 Shared Context integration with compatibility/health checks, explicit replacement, symlink protections, rollback-safe installation, and coordination-only authority.
- Harden profile persistence and recovery: atomic primary/backup handling, exact rollback/snapshot restoration, stale-backup cleanup, same-profile advanced-setting preservation, and explicit reset semantics.
- Harden profile-home and report-path trust boundaries against nested/vendor/unmarked profile hijacking while preserving legitimate fresh and alternate-root profiles.
- Strip unrelated parent Kanban identity from local remote-runner subprocesses and make remote-execution regression fixtures independent of executable-/tmp sandbox policy.
- Add explicit setuptools package discovery so release wheels contain the intended
hermes_nerve*and compatibilityhermes_jev*packages only. - Final release qualification: 310/310 pytest in clean and hostile Kanban environments, Python 3.10–3.14 GitHub CI, Hermes plugin validate/doctor, 69/69 structured release checks, and 6/6 deliberate regression mutations caught.
What's Changed
- feat: add Nerve setup profiles and optional modules by @keeltrace in #27
- release: Nerve v0.3.0 by @keeltrace in #28
Full Changelog: v0.2.3...v0.3.0
Nerve v0.2.3
Nerve v0.2.3
- Fix provider cost visibility so missing provider-reported cost remains unknown instead of being silently reported as zero, while preserving explicit zero-cost responses.
- Resolve provider credentials through Hermes profile-aware secret scope so gateway and cron execution can use profile-local keys without borrowing ambient secrets; preserve secret-scope failures instead of masking host scoping bugs.
- Record bounded gate answer distributions (probabilities, top probability, and margin) with finite/range validation for operational tuning.
- Harden enforce-mode ALLOW decisions: automatic continuation now requires both the existing confidence threshold and p(ALLOW) >= 0.90 by default; low ALLOW probability escalates to the existing human-approval path. Missing or unusable distributions retain the shipped confidence-only fallback.
- Repair the deferred nerve_assess contract: instructions is required for every typed question, optional NOUL criteria must be exactly true/false, malformed payloads fail locally before provider work, and valid 16-question batches remain supported.
- Keep issue #19 open for the separately proposed ask-only enforce variant; v0.2.3 includes the telemetry and dual-signal ALLOW enforcement work but does not add that mode.
- OpenJev real 27B inference and hosted-Jev/OpenJev A/B validation remain explicitly untested and tracked in issue #10.
- Make stable GitHub releases immutable and fail-closed: rerunning an existing version is a no-op only on the exact same authoritative remote tag SHA; conflicting release/tag reuse or ambiguous API/tag lookup failures abort instead of deleting, retagging, or trusting stale local state.
Verification for the release candidate includes Python 3.10–3.14 CI, Hermes plugin validate/doctor, release structural verification, focused provider-contract regressions, and exact-SHA independent maintainer review.
What's Changed
- maint: finish provider cost visibility contract by @keeltrace in #17
- fix(telemetry): surface missing provider cost as None, never a bare 0.0 by @apoapostolov in #16
- fix(client): resolve provider keys through the Hermes secret scope by @jcrabapple in #20
- fix(gate): log the answer distribution in gate events by @jcrabapple in #21
- fix(gate): require p(ALLOW) for enforce auto-allow, not confidence alone by @jcrabapple in #22
- fix(assess): enforce deferred provider question contract by @keeltrace in #24
- release: Nerve v0.2.3 by @keeltrace in #25
New Contributors
- @apoapostolov made their first contribution in #16
- @jcrabapple made their first contribution in #20
Full Changelog: v0.2.2...v0.2.3
Nerve v0.2.2
Nerve v0.2.2
This release promotes the validated dev17 RC and lands the Nerve supervisory architecture from PR #9.
- Nerve/Reflex is the watchdog and forecaster; the main Hermes orchestrator/reviewer retains the final COMPLETE / MORE WORK / CHANGES / BLOCK authority.
- Hosted Jev and self-hosted Laya are live-validated on the RC path, including the SSH transport and orchestrator-review handoff.
- OpenJev integration is included and covered by unit/interface tests, setup guards, identity pinning, and LOCAL_ONLY provenance.
- Source archives include the frozen dev6 benchmark fixture and the documented dev17 verification path is release-gated.
OpenJev validation status
Real OpenJev 27B model inference and hosted-Jev vs OpenJev A/B testing have not been performed on suitable large-GPU hardware. This is intentionally tracked as follow-up issue #10 and is not claimed as tested by v0.2.2.
What's Changed
- feat: add paid OpenCode Zen Jev provider and finish repo hardening (0.2.2.dev4) by @keeltrace in #7
- feat: dev17 Nerve supervision + open Reflex backends by @keeltrace in #9
- release: promote dev17 RC to v0.2.2 by @keeltrace in #11
- ci: fix v0.2.2 release workflow by @keeltrace in #12
- refactor: make Nerve the canonical v0.2.2 identity by @keeltrace in #13
- fix: make Nerve v0.2.2 release package self-contained by @keeltrace in #15
Full Changelog: v0.2.1.2...v0.2.2
Hermes-Jev v0.2.1.2
What's Changed
- fix: stabilize context engine for v0.2.1.2 by @keeltrace in #3
- chore: bring repository maintenance and release hygiene up to date by @keeltrace in #4
New Contributors
- @keeltrace made their first contribution in #3
Full Changelog: v0.1.3...v0.2.1.2
Hermes-Jev v0.1.3
Hermes-Jev v0.1.3
First public release candidate of Hermes-Jev: a standalone Hermes community plugin for bounded, typed System One decisions using TypeSafe Jev.
Included
jev_decide— choose one label from a caller-declared choice set with confidence/probabilities.jev_rank— rank a bounded candidate set using Jev choice probabilities.jev_verify— returnPASS | RETRY | REPLAN | ESCALATEfor execution verification.- Optional
pre_tool_callgate withoff,advisory, andenforcemodes. - Privacy redaction before external evaluation.
- Hash-only decision receipts by default.
- Hermes-native plugin settings for gate mode, confidence threshold, and receipt detail.
- Offline test suite plus an opt-in live API smoke test using synthetic state only.
Important: live API testing pending
The offline suite and mocked HTTP wire-contract tests pass, but the maintainer is currently waiting for TypeSafe API access and has not yet recorded a successful live authenticated Jev call from this release.
If you already have a TYPESAFE_API_KEY, please run:
python3 scripts/live_api_smoke.pyThen report the result without sharing your API key. See docs/LIVE_API_TESTING.md for the requested report fields.
This release does not claim Jev is infallible, does not claim a live benchmark, and does not treat typed output as proof of correctness.