Skip to content

Releases: keeltrace/hermes-nerve

Nerve v0.4.15

Choose a tag to compare

@keeltrace keeltrace released this 25 Oct 21:15
Immutable release. Only release title and notes can be modified.
76320ec

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

Choose a tag to compare

@keeltrace keeltrace released this 24 Oct 18:18

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

Choose a tag to compare

@keeltrace keeltrace released this 02 Oct 03:52

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-nerve settings 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_stats advertises 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/HermesContextBus remains supported.
  • nerve setup --explain no 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_stats schema
  • #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

Nerve v0.3.1rc1 Pre-release
Pre-release

Choose a tag to compare

@keeltrace keeltrace released this 30 Sep 20:14
  • Fix Nerve settings namespace handling so configuration is read from plugins.entries.nerve.settings; warn on the legacy ignored hermes-nerve block 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 patch are 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

Choose a tag to compare

@github-actions github-actions released this 27 Sep 00:19
b9e78dd

Nerve v0.3.0

  • Add nerve setup with 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 compatibility hermes_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

Full Changelog: v0.2.3...v0.3.0

Nerve v0.2.3

Choose a tag to compare

@github-actions github-actions released this 25 Sep 13:38
faecfaf

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

Full Changelog: v0.2.2...v0.2.3

Nerve v0.2.2

Choose a tag to compare

@github-actions github-actions released this 22 Sep 15:43
a8e1173

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

Choose a tag to compare

@github-actions github-actions released this 19 Sep 17:55
f9cdeb1

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

Full Changelog: v0.1.3...v0.2.1.2

Hermes-Jev v0.1.3

Choose a tag to compare

@keeltrace keeltrace released this 18 Sep 02:10

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 — return PASS | RETRY | REPLAN | ESCALATE for execution verification.
  • Optional pre_tool_call gate with off, advisory, and enforce modes.
  • 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.py

Then 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.