Skip to content

v3.14.8: Dependency advisory removed, reliability fixes

Choose a tag to compare

@proffesor-for-testing proffesor-for-testing released this 04 Oct 11:43
· 842 commits to main since this release
4b0b91a

Highlights

This patch removes a high-severity dependency advisory from the installed
package and fixes about thirty reliability bugs. Memory searches stay in
their namespace and page correctly. The self-learning engine keeps its patterns
and feedback across restarts and storage failures. Test runs and CI gates now
report only what actually ran and passed. Caches can no longer hand back stale
or shared results.

Security

  • Installing agentic-qe no longer pulls in braces (GHSA-vfj7-8cjw-p6xm, a
    high-severity denial of service). No fixed braces release exists, so file
    scanning now uses tinyglobby instead of fast-glob. The files it finds are
    unchanged, and scans are faster (#837).
  • The bundled ruflo helpers are refreshed to 3.51.1, with two local hardening
    patches. The session helper can no longer be steered by a crafted session
    file to write outside the project. The auto-memory helper loads its modules
    from its own install location instead of the opened project. Dangerous shell
    commands are now actually blocked by the pre-bash hook (#837).

Fixed

Memory

  • Semantic searches without an explicit namespace stay in the default
    namespace instead of returning entries from every namespace (#816).
  • Paged memory queries report correctly whether another page exists (#817).
  • Two agents sharing knowledge at the same moment no longer overwrite each
    other's share (#822).
  • Memory key searches honour only * and ? as wildcards. Persistent
    searches no longer treat _ and % as wildcards, and in-memory searches
    match whole keys (#825).

Self-learning (SONA)

  • Deleting a pattern removes it from both the queued and the stored state, so
    it doesn't come back (#818).
  • String actions that look like JSON keep their exact value across a restart
    (#819).
  • A closed persistent engine can be initialized again (#820).
  • Pattern sync keeps the feedback counters you have already recorded
    (#823).
  • Writes deferred after a native storage failure are kept and saved on the next
    successful flush instead of being lost (#829).

Test execution and CI gates

  • Timed-out test runners are stopped together with their whole process tree
    (#824).
  • Coverage evidence comes only from the current run, never from an earlier
    run's leftover files (#827).
  • A retried test counts as passing only when the retry actually ran and passed
    at least one test; a retry whose filter matched nothing stays failed
    (#830).
  • The quality gate's mechanical oracle accepts only real boolean evidence;
    strings such as "false" no longer count as passing (#828).
  • aqe ci rejects unknown or empty phase selections (#832), reads your real
    YAML configuration instead of falling back to default phases (#834), and
    enforces the coverage threshold you configured (#835).

MCP server, caching and runtime

  • Live status reads (task_status, fleet, agent, health and metrics) return
    current data instead of a cached snapshot up to an hour old, so a finished
    task no longer shows as running. Other cached reads are kept (#831).
  • The MCP connection pool never gives one connection to two callers at once,
    and doesn't prune connections still in use (#844). Concurrent start-up
    creates the pool only once, and shutdown during start-up leaves no timers
    running (#848).
  • The LLM response cache keys requests on an unambiguous identity, so different
    requests can no longer share a cached answer (#841). Importing a cache
    snapshot no longer duplicates entries in the eviction order (#842).
  • Session-cache fingerprints follow real JSON values, so different dates or
    arrays no longer collide (#845). Refreshing a cached operation no longer
    evicts an unrelated result when the cache is full (#850).
  • Cached embedding vectors are copied, so a caller changing its array can't
    corrupt the cache (#846).
  • A plugin whose copy into the cache fails partway is cleaned up, so a retry
    stores it properly instead of reusing the broken copy (#840).
  • With retries disabled, an already-cancelled operation no longer runs once
    anyway (#843).
  • An older A2A webhook send can no longer remove a newer queued replacement,
    or report retries after it was cancelled (#847).
  • The quality daemon clears expired background work before rejecting a new
    quality-gate or CI failure alert as over capacity (#849).
  • CLI commands release the stores they opened before exiting, so
    patterns.rvf.lock is no longer left behind (#821).

Changed

  • Test suites for SONA persistence and MCP cancellation use isolated SQLite
    fixtures and the real runner, so they no longer interfere with each other
    (#826, #833).
  • Updated figlet in the ruflo graph-intelligence plugin (#839).

Thanks

Thanks to @rudycelekli, who contributed 31 of the fixes in this release.

Getting Started

npx agentic-qe init --auto

See the CHANGELOG for full details.