What's New
Two fixes about being able to trust what AQE tells you.
Learning capture no longer stops silently
If your project sets AQE_DISABLE_WAL (the flag for filesystems where SQLite's
WAL journal is unsafe — notably macOS Docker bind mounts), AQE could stop
recording learning entirely and never say so. Hooks kept reporting success while
nothing was being written, and the condition could not clear on its own.
AQE now only changes the database journal mode when it is actually wrong, so
normal operation no longer needs an exclusive lock. If it genuinely cannot get
that lock, it refuses to write rather than risking the database you set the flag
to protect — and tells you the exact command that finds whatever is holding it,
instead of guessing.
The bundled statusline also now refreshes every 60 seconds rather than every 5;
it was reopening the learning database on every tick.
QE-Court's default panel no longer breaks its own rule
The bundled config.json seated the defense and the jury on two tiers of the
same vendor — exactly what the court's writerIsNeverJuror anti-collusion rule
forbids — so a brand-new project got an invalid review panel with no user action.
The rule also could not have caught it: nothing connected the configured routing
to the validator.
The default panel is now genuinely cross-vendor, validation runs before a court
convenes, the config's options block actually takes effect, and the shipped
config files are checked in CI so this cannot regress unnoticed.
Thanks to @pacphi for the report (#576).
Upgrading
No action required. If you have customized .claude/skills/qe-court/config.json,
your file is untouched — but check that your defense and jury providers are
on different vendors, since the court now enforces that rather than seating a
colluding panel.
Getting Started
npx agentic-qe init --autoSee CHANGELOG for full details.