Skip to content

Noisegate v0.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 14 Jul 03:05
4284a0d

Noisegate 0.2.0 is a safety and signal-quality release. Compacted output keeps more of the details that help an agent recover from a failure, while source, patches, retrieval results, and other exact evidence are handled more conservatively. The goal is not simply shorter output; it is smaller output that remains trustworthy.

This release also hardens the boundary between Noisegate and Hermes. Installer target detection, JSON envelopes, command aliases, exit hints, and artifact decisions now have stricter regression coverage. No config migration is required, the noisy-tool allowlist has not been broadened, and raw artifact storage remains opt-in.

Highlights

  • More useful failure output. Tight budgets now favor assertion messages, tracebacks, chained exceptions, BaseExceptionGroup headers, concrete dependency-resolution errors, and other actionable anchors over repetitive progress lines.
  • Exact context stays exact. Direct source reads, V4A patches, git show REV:path, attached fd/fdfind read consumers, protected execute_code output, and Hermes-LCM recovery references are preserved instead of being mistaken for noisy logs.
  • A safer Hermes boundary. reduce-json now handles mixed and nested host envelopes, conflicting command aliases, structured argv, exit-status precedence, metadata-key collisions, and artifact no-gain paths without corrupting valid JSON or claiming recovery data that was not stored.
  • Better operator visibility. Diagnostic metadata can be sent to stderr without changing stdout, and noisegate doctor exposes the effective runtime configuration and artifact limits more clearly.

Added

  • noisegate reduce, reduce-json, and wrap accept --metadata / --debug for out-of-band diagnostic JSON on stderr.
  • Regression contracts define why execute_code remains protected by default and how command-aware routes can deliberately compact known terminal-style output instead.
  • Product-contract and adversarial tests cover exact-output ownership, shell and package-runner wrappers, Docker/build noise, dependency failures, malformed host payloads, and recovery-handle preservation.

Changed

  • noisegate install-hermes now accepts only a real Hermes console script or supported Hermes shim inside a virtual environment. Ambiguous or unrelated Python launchers fail closed.
  • install-hermes --dry-run explicitly reports that install, enable, doctor, and Hermes restart/reload actions are not performed.
  • Plugin enablement is idempotent and removes a stale noisegate entry from plugins.disabled without rewriting an already-correct configuration.
  • Unchanged reductions report more precise reason codes and attempted reducers; noisegate doctor now shows effective config, artifact location, size limits, and environment fallback warnings.

Fixed

  • Pytest and Python diagnostics retain the assertion, traceback, task, chained-exception, and exception-group details most likely to explain the failure under tight line or character budgets.
  • uv run pytest distinguishes resolver failures that happen before pytest starts from resolver-like text printed by a real test run.
  • Source-like content remains exact even when it contains strings such as FAILED, ERROR, Traceback, or npm ERR!; exact passthrough no longer depends on whether the content happens to resemble a log.
  • Hermes-LCM externalized_ref values and recovery placeholders survive compaction without requiring Noisegate artifacts. If every distinct recovery handle cannot be retained, Noisegate fails open.
  • Complete JSON envelopes make artifact decisions transactionally: no-gain paths write nothing, accepted recovery IDs resolve to the stored raw text, and multi-artifact envelopes avoid partial or orphaned writes.

Documentation

  • Clarified Noisegate's ground-up Hermes positioning and corrected the Tokenjuice attribution link used for background context.

How to update

For an existing Hermes Agent installation, run:

uvx --from noisegate-hermes noisegate install-hermes

Preview the exact commands first. Dry-run mode does not run the install/enable/doctor commands and does not restart or reload Hermes:

uvx --from noisegate-hermes noisegate install-hermes --dry-run

npm users can use the wrapper instead:

npx -p noisegate-hermes noisegate install-hermes

The installer finds hermes on PATH, verifies that the launcher points at a Hermes Python console script or supported Hermes shim inside a virtual environment, installs noisegate-hermes there, enables the noisegate plugin, removes any stale plugins.disabled entry for noisegate, and runs noisegate doctor.

If Hermes is running as a long-lived gateway/service, restart or reload that Hermes process through your normal maintenance flow after installing so the plugin/config change is picked up. Avoid interrupting in-flight agent work.

Included pull requests

Release range: v0.1.2...v0.2.0.

Security / Safety

  • #15 Harden install-hermes for real Hermes hosts — @Tosko4. Harden noisegate install-hermes so it only targets launchers that resolve to a real Hermes console script or supported Hermes shim inside a virtualenv.
  • #17 Level up Noisegate product safety and context value — @Tosko4. Adds a product-contract checklist for Noisegate maintainers: context value first, exact context protection, fail-open behavior, artifact boundaries, and thin Hermes integration.
  • #23 Harden protected command intent across terminal envelopes — @Tosko4. Preserve exact command intent when args, arguments, payload aliases, and argv disagree.
  • #12 Strengthen Noisegate host adapter protocol — @Tosko4. Harden reduce-json across Hermes-like envelopes, direct tool payloads, nested objects, JSON-string results, mixed direct/nested fields, and non-text results.

Release / Packaging

  • #24 Prepare Noisegate 0.2.0 release — @Tosko4. Prepare all Python, plugin, lockfile, and npm metadata for Noisegate 0.2.0.

Added

  • #13 Improve Noisegate diagnostics and reducer visibility — @Tosko4. Add --metadata / --debug diagnostics for reduce, reduce-json, and wrap without changing stdout.
  • #20 Validate Noisegate with LCM externalized payloads — @Tosko4. Add Hermes-like LCM externalized payload fixtures covering terminal output, externalized placeholders, lcm_describe, paged lcm_expand, missing-file fallback, externalization failure fallback, media-ish placeholders, and huge JSON…
  • #19 Define safe execute_code compaction boundaries — @Tosko4. Add execute_code boundary coverage for small JSON, huge JSON arrays, printed source, configs, diffs, pytest-like output, web excerpts, dependency reports, apt-style spam, and invalid text.

Fixed

  • #8 Fix Tokenjuice attribution link — @Tosko4. Fix the Tokenjuice attribution link in the README.
  • #16 Prevent source-like noise from corrupting exact content — @Tosko4. Preserve exact source-like terminal file displays (cat, sed -n, head, tail, less, more, nl, bat, git show REV:path) even when contents look like failing logs.
  • #9 fix: preserve pytest assertion details under tight budgets — @stephenschoettler. Preserve pytest assertion details before pytest progress/status lines when Noisegate is under tight budgets.
  • #11 Improve reducer coverage for real agent slop — @Tosko4. Preserve uv dependency-resolution failures that occur before uv run pytest starts, including wrapped/compound invocations and tight output budgets.
  • #22 Preserve follow-up diagnostic anchors — @Tosko4. Preserve Python task/chained exception headers under tight line and char budgets.

Documentation

  • #14 Simplify README project note — @Tosko4. Simplify the closing README project note to one sentence.

New contributors

  • @stephenschoettler made their first merged Noisegate PR in #9 — fix: preserve pytest assertion details under tight budgets.