chore(release): bump version to v3.13.3

This commit is contained in:
Dragan Spiridonov
2026-07-29 15:08:25 +00:00
parent 3bd03ba2cc
commit 8f91c6e227
8 changed files with 140 additions and 6 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "agentic-qe",
"version": "3.13.1",
"version": "3.13.3",
"description": "Agentic Quality Engineering — AI-powered QE platform with 60 specialized agents, 75+ skills, sublinear coverage analysis, ReasoningBank pattern learning, and deep MCP integration for Claude Code and 11 coding agent platforms",
"author": {
"name": "Agentic QE Team",
+1 -1
View File
@@ -940,7 +940,7 @@
},
"metadata": {
"generatedBy": "Agentic QE Fleet",
"fleetVersion": "3.13.2",
"fleetVersion": "3.13.3",
"manifestVersion": "1.4.0",
"lastUpdated": "2026-04-13T00:00:00.000Z",
"contributors": [
+43
View File
@@ -5,6 +5,49 @@ All notable changes to the Agentic QE project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [3.13.3] - 2026-07-29
Two independent quality-of-evidence fixes: learning capture could stop silently
for days on a filesystem where WAL is disabled, and QE-Court shipped a default
review panel that violated its own anti-collusion rule.
### Fixed
- **Learning capture no longer stops silently when `AQE_DISABLE_WAL` is set.**
With that flag on, AQE tried to switch the database journal mode on *every*
writable connection. That switch needs exclusive access, so any other process
holding the database open — a stray MCP server, for example — made the attempt
fail and take the whole persistence layer down with it. Hooks kept reporting
success while nothing was being recorded, which hid the outage for days.
AQE now only changes the journal mode when it is actually wrong (so normal
operation never needs the exclusive lock), refuses to write in a mode you have
declared unsafe rather than risking corruption, and — when something really is
holding the database — tells you the exact command that finds it instead of
guessing which process to blame.
- **QE-Court's shipped default panel violated `writerIsNeverJuror`** ([#576]).
The bundled `config.json` seated the defense and the jury on two tiers of the
same vendor, which is exactly what the court's core anti-collusion rule
forbids — so a brand-new project got an invalid panel with no user action.
Worse, the rule could never have caught it: nothing turned the configured
routing into a panel, so validation never ran outside its own unit test, and
the config's `options` block was not wired to anything.
The default panel is now genuinely cross-vendor (and keeps the deeper-review
round on a different vendor from the jury, so escalation stays independent),
validation is a required step before a court convenes, the `options` block
actually takes effect, and the shipped config files are checked in CI so this
cannot regress unnoticed. Reported by @pacphi.
### Changed
- The bundled statusline refreshes every 60 seconds instead of every 5. It
reopened the learning database on every tick, adding constant pressure to the
same lock the fix above depends on.
[#576]: https://github.com/proffesor-for-testing/agentic-qe/issues/576
## [3.13.2] - 2026-07-24
Stops short-lived learning hooks from repeatedly producing
+1 -1
View File
@@ -940,7 +940,7 @@
},
"metadata": {
"generatedBy": "Agentic QE Fleet",
"fleetVersion": "3.13.2",
"fleetVersion": "3.13.3",
"manifestVersion": "1.4.0",
"lastUpdated": "2026-04-13T00:00:00.000Z",
"contributors": [
+1
View File
@@ -4,6 +4,7 @@ All Agentic QE release notes organized by version.
| Version | Date | Highlights |
|---------|------|------------|
| [v3.13.3](v3.13.3.md) | 2026-07-29 | Learning capture no longer stops silently under `AQE_DISABLE_WAL` (it now refuses to write in an unsafe journal mode and names what is holding the DB), and QE-Court's shipped panel no longer violates its own `writerIsNeverJuror` rule (#576). |
| [v3.13.2](v3.13.2.md) | 2026-07-24 | Stops hook-driven `brain.rvf`/`patterns.rvf` corruption loops by closing native stores after every hook and protecting same-process live locks (#574). |
| [v3.13.1](v3.13.1.md) | 2026-07-23 | Honesty release: coverage analysis no longer reports numbers it never measured (real `cargo llvm-cov` for Rust; uncollected metrics are `null`, not 0 or 100), `test_generate_enhanced` actually calls your LLM (#567), and a HIGH advisory no longer ships via an optional peer (#565). Adds on-disk per-agent LLM routing (#568) and Codex CLI QE skills. BREAKING: coverage metrics are now `number \| null`. |
| [v3.13.0](v3.13.0.md) | 2026-07-18 | QE-Court: adversarial review where a change is prosecuted by independent cross-vendor AI reviewers and a SHIP verdict must survive an escalating deeper review — it reviewed this release and blocked it, catching 3 data-loss/crash bugs. Adds a Codex (GPT) provider, a significance gate for the flywheel, automatic memory.db recovery, per-agent cost tracking, and clears 4 HIGH CVEs from consumer installs (#565). |
+90
View File
@@ -0,0 +1,90 @@
# v3.13.3 Release Notes
**Release Date:** 2026-07-29
## Highlights
Two fixes about evidence you can trust. Learning capture could stop recording
for days without saying so on any project that sets `AQE_DISABLE_WAL`, and
QE-Court shipped a default review panel that broke the court's own
anti-collusion rule the moment it was created.
## Fixed
### Learning capture no longer stops silently under `AQE_DISABLE_WAL`
`AQE_DISABLE_WAL=1` exists for filesystems where SQLite's WAL journal is unsafe
— notably macOS Docker bind mounts, where it has corrupted the learning database
before. With the flag set, AQE attempted to switch the journal mode on **every**
writable connection.
Changing a database's journal mode requires exclusive access. Any other process
holding the database open makes that attempt fail, and the failure took the
whole persistence layer down with it: the memory manager could not initialize,
so nothing was recorded. The hooks kept returning success, so from the outside
everything looked healthy while no learning was being captured at all. The
condition could not clear on its own, because the switch can never succeed while
any reader exists.
What changed:
- AQE reads the current journal mode first and only attempts a change when it is
actually wrong. Normal operation no longer needs the exclusive lock at all, so
the one-time migration is out of the everyday path.
- Only genuine lock contention is treated as such. Other faults — I/O errors,
corruption, permissions — now surface as themselves instead of being
misreported as "something else is using the database".
- If the journal mode cannot be changed, AQE **refuses to write** rather than
continuing in a mode you have declared unsafe. Availability is not worth
risking the database you enabled the flag to protect.
- The change is verified after it is applied, so a silently ignored switch
cannot leave AQE writing in the unsafe mode believing it is safe.
- The diagnostic now prints the exact command that lists whatever is holding the
database, instead of naming processes it guessed at. The previous guidance
pointed at the wrong ones, which is most of why this went unnoticed for days.
The bundled statusline also now refreshes every 60 seconds rather than every 5.
It reopened the learning database on every tick, adding constant pressure to the
same lock.
### QE-Court's shipped panel violated its own `writerIsNeverJuror` rule ([#576])
The bundled `config.json` — the template copied into every project on first run
— seated the defense on `cognitum-low` and the jury on `cognitum-high`. Those
are different tiers of the **same vendor**, and QE-Court measures collusion by
vendor, not tier. A brand-new project therefore got a panel that failed the
court's central rule before anyone had touched it.
The deeper problem was that the rule could not have caught it. Nothing converted
the configured routing into a seated panel, so `validatePanel` was never reached
outside its own unit test, and the `options` block in the config was not wired to
the validator at all — a rule with no caller is not enforced.
What changed:
- The default panel is genuinely cross-vendor. We moved the **defense** rather
than the jury: the deeper reviewer already runs on `codex`, so re-seating the
jury there would have put the jury and the escalation round on one vendor and
weakened the overturn mechanic the court depends on.
- `panelFromRouting()` and `validateCourtConfig()` connect the config to the
validator, and running the validation is now a required step before a court
convenes — an invalid panel stops the run instead of quietly seating.
- The `options` block takes effect: `minDistinctVendors` and `writerIsNeverJuror`
are read rather than decorative.
- A routing map with no jury is now reported as invalid instead of passing.
- CI validates the **shipped config files themselves**, so a future routing edit
fails the build rather than a user's court.
Reported by @pacphi.
## Upgrade notes
No action required. If you set `AQE_DISABLE_WAL=1` and another process is
holding your learning database open, AQE will now refuse that connection with a
message naming the command that finds the holder — previously it failed silently.
If you have already customized `.claude/skills/qe-court/config.json`, your file
is untouched; check that your `defense` and `jury` providers are on different
vendors, as the court now enforces.
[#576]: https://github.com/proffesor-for-testing/agentic-qe/issues/576
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "agentic-qe",
"version": "3.13.2",
"version": "3.13.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "agentic-qe",
"version": "3.13.2",
"version": "3.13.3",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "agentic-qe",
"version": "3.13.2",
"version": "3.13.3",
"description": "Agentic Quality Engineering V3 - Domain-Driven Design Architecture with 13 Bounded Contexts, O(log n) coverage analysis, ReasoningBank learning, 60 specialized QE agents, mathematical Coherence verification, deep Claude Flow integration",
"type": "module",
"main": "./dist/index.js",