mirror of
https://github.com/proffesor-for-testing/agentic-qe.git
synced 2026-09-19 08:45:47 +08:00
chore(release): prepare v3.13.5
This commit is contained in:
@@ -5,6 +5,54 @@ 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.5] - 2026-08-03
|
||||
|
||||
Quality decisions and generated tests now carry evidence that reflects what AQE
|
||||
actually measured or executed, while initialization and embedding workflows are
|
||||
more reliable across supported environments.
|
||||
|
||||
### Added
|
||||
|
||||
- **Measured quality-gate evidence** ([#596]). CLI and MCP quality evaluation
|
||||
now share canonical thresholds and require fresh, attributed measurements for
|
||||
coverage, passing tests, critical bugs, code smells, security findings,
|
||||
technical debt, and duplication. Missing, malformed, or stale evidence fails
|
||||
closed instead of silently receiving a fabricated passing value.
|
||||
- **Optional status-line installation** ([#591]). `aqe init --no-statusline`
|
||||
skips AQE's status line, removes an existing AQE-owned status line during an
|
||||
upgrade, and preserves a project-authored status line.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **Generated tests are trustworthy and executable** ([#577]). Test generation
|
||||
preserves framework imports, validates evidence before reporting success, and
|
||||
no longer treats structurally incomplete output as a passing quality result.
|
||||
- **Node's built-in test runner is honored end to end** ([#592]). Test discovery
|
||||
filters Node test files correctly, execution uses the selected framework, and
|
||||
retry confidence remains bounded.
|
||||
- **Batch embedding semantics are consistent** ([#585]). Mixed batches send only
|
||||
semantic content to the embedding provider, nonsemantic entries receive zero
|
||||
vectors in their original positions, and all-nonsemantic batches avoid
|
||||
provider initialization entirely.
|
||||
- **HNSW initialization works in native ESM** ([#586]). Runtime dependency
|
||||
loading no longer assumes a CommonJS global `require`.
|
||||
- **Learning-engine tests use isolated persistence** ([#588]), preventing shared
|
||||
worker databases from accumulating duplicate genesis data and causing long
|
||||
test runs.
|
||||
|
||||
### Changed
|
||||
|
||||
- Refreshed bundled Claude helpers and development-only Ruflo dependencies,
|
||||
including upstream security and compatibility fixes.
|
||||
|
||||
[#577]: https://github.com/proffesor-for-testing/agentic-qe/issues/577
|
||||
[#585]: https://github.com/proffesor-for-testing/agentic-qe/issues/585
|
||||
[#586]: https://github.com/proffesor-for-testing/agentic-qe/issues/586
|
||||
[#588]: https://github.com/proffesor-for-testing/agentic-qe/issues/588
|
||||
[#591]: https://github.com/proffesor-for-testing/agentic-qe/issues/591
|
||||
[#592]: https://github.com/proffesor-for-testing/agentic-qe/issues/592
|
||||
[#596]: https://github.com/proffesor-for-testing/agentic-qe/issues/596
|
||||
|
||||
## [3.13.4] - 2026-08-02
|
||||
|
||||
Codex users now receive a complete, upgradeable Agentic QE workflow instead of
|
||||
|
||||
@@ -940,7 +940,7 @@
|
||||
},
|
||||
"metadata": {
|
||||
"generatedBy": "Agentic QE Fleet",
|
||||
"fleetVersion": "3.13.4",
|
||||
"fleetVersion": "3.13.5",
|
||||
"manifestVersion": "1.4.0",
|
||||
"lastUpdated": "2026-04-13T00:00:00.000Z",
|
||||
"contributors": [
|
||||
|
||||
@@ -4,6 +4,7 @@ All Agentic QE release notes organized by version.
|
||||
|
||||
| Version | Date | Highlights |
|
||||
|---------|------|------------|
|
||||
| [v3.13.5](v3.13.5.md) | 2026-08-03 | Measured quality gates and trustworthy cross-framework test execution. |
|
||||
| [v3.13.4](v3.13.4.md) | 2026-08-02 | Reliable Codex fleet setup, upgrades, hooks, and verification. |
|
||||
| [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). |
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
# v3.13.5 Release Notes
|
||||
|
||||
**Release Date:** 2026-08-03
|
||||
|
||||
## Highlights
|
||||
|
||||
AQE now bases quality decisions on fresh, attributed measurements and produces
|
||||
more trustworthy, executable tests across Jest, Vitest, and Node's built-in test
|
||||
runner. Initialization and embeddings are also more reliable in real projects.
|
||||
|
||||
## Added
|
||||
|
||||
- Canonical quality evidence for coverage, passing tests, bugs, code smells,
|
||||
security findings, technical debt, and duplication.
|
||||
- Shared CLI and MCP quality thresholds that fail closed when measurements are
|
||||
missing, malformed, or stale.
|
||||
- `aqe init --no-statusline` for installations that do not want AQE's status
|
||||
line, without disturbing a project-authored status line.
|
||||
|
||||
## Fixed
|
||||
|
||||
- Generated tests retain the correct framework imports and must satisfy
|
||||
evidence-backed validation before AQE reports success.
|
||||
- Node test discovery, execution, and retry behavior now honor the selected
|
||||
framework consistently.
|
||||
- Mixed embedding batches preserve output order while excluding nonsemantic
|
||||
content from provider calls; entirely nonsemantic batches make no provider
|
||||
call.
|
||||
- HNSW runtime loading works when AQE is imported as native ESM.
|
||||
- Learning-engine unit tests no longer share persistence across test cases.
|
||||
|
||||
## Changed
|
||||
|
||||
- Refreshed bundled Claude helpers.
|
||||
- Updated development-only Ruflo UI and tooling dependencies, including upstream
|
||||
security fixes.
|
||||
|
||||
## Upgrade notes
|
||||
|
||||
No configuration migration is required. Existing installations can upgrade and
|
||||
refresh their managed assets normally:
|
||||
|
||||
```bash
|
||||
npx agentic-qe init --auto --upgrade
|
||||
```
|
||||
|
||||
Projects that want to remove only AQE's managed status line can run:
|
||||
|
||||
```bash
|
||||
npx agentic-qe init --auto --upgrade --no-statusline
|
||||
```
|
||||
|
||||
Project-authored status-line configuration is preserved.
|
||||
|
||||
Tracking: [#577](https://github.com/proffesor-for-testing/agentic-qe/issues/577),
|
||||
[#585](https://github.com/proffesor-for-testing/agentic-qe/issues/585),
|
||||
[#586](https://github.com/proffesor-for-testing/agentic-qe/issues/586),
|
||||
[#588](https://github.com/proffesor-for-testing/agentic-qe/issues/588),
|
||||
[#591](https://github.com/proffesor-for-testing/agentic-qe/issues/591),
|
||||
[#592](https://github.com/proffesor-for-testing/agentic-qe/issues/592), and
|
||||
[#596](https://github.com/proffesor-for-testing/agentic-qe/issues/596).
|
||||
Generated
+2
-2
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "agentic-qe",
|
||||
"version": "3.13.4",
|
||||
"version": "3.13.5",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "agentic-qe",
|
||||
"version": "3.13.4",
|
||||
"version": "3.13.5",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "agentic-qe",
|
||||
"version": "3.13.4",
|
||||
"version": "3.13.5",
|
||||
"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",
|
||||
@@ -71,7 +71,7 @@
|
||||
"test:unit:fast": "vitest run --exclude='**/qe-reasoning-bank.test.ts' --exclude='**/qe-reasoning-bank-feedback-loop.test.ts' --exclude='**/aqe-learning-engine.test.ts' --exclude='**/aqe-learning-engine-patterns.test.ts' tests/unit/adapters tests/unit/shared tests/unit/cli tests/unit/learning tests/unit/kernel tests/unit/workers tests/unit/routing tests/unit/strange-loop tests/unit/sync tests/unit/feedback tests/unit/error-paths tests/unit/early-exit tests/unit/causal-discovery tests/unit/neural-optimizer tests/unit/test-scheduling tests/unit/logging tests/unit/validation tests/unit/memory tests/unit/performance tests/unit/scripts tests/unit/planning",
|
||||
"test:unit:heavy": "vitest run tests/unit/coordination tests/unit/domains tests/unit/integrations tests/unit/optimization tests/unit/init --exclude='**/browser/**' --exclude='**/*.e2e.test.ts' --exclude='**/vibium/**' --exclude='**/browser-swarm-coordinator.test.ts'",
|
||||
"test:unit:mcp": "vitest run tests/unit/mcp --exclude='**/mcp/handlers/domain-handlers.test.ts' --fileParallelism=false",
|
||||
"test:ci": "vitest run --exclude='**/browser/**' --exclude='**/*.e2e.test.ts' --exclude='**/vibium/**' --exclude='**/integration/browser/**' --exclude='**/browser-swarm-coordinator.test.ts' --exclude='**/mcp/handlers/domain-handlers.test.ts'",
|
||||
"test:ci": "vitest run --exclude='**/browser/**' --exclude='**/*.e2e.test.ts' --exclude='**/vibium/**' --exclude='**/integration/browser/**' --exclude='**/browser-swarm-coordinator.test.ts' --exclude='**/mcp/handlers/domain-handlers.test.ts' --exclude='**/fixtures/init-corpus/**'",
|
||||
"test:e2e": "vitest run tests/integration/browser --testTimeout=120000",
|
||||
"test:safe": "NODE_OPTIONS='--max-old-space-size=768 --expose-gc' vitest run --maxForks=1",
|
||||
"test:dev": "npm run test:unit:fast",
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* in production, written by sentence-transformers/all-MiniLM-L6-v2-style
|
||||
* models) and verifies:
|
||||
*
|
||||
* 1. Self-query returns id=self with score 1.0 (exact-match recall)
|
||||
* 1. Self-query returns an exact vector match with score 1.0
|
||||
* 2. Top-10 recall vs brute-force ground truth = 100%
|
||||
* 3. Repeated for several random query vectors to rule out one-off luck
|
||||
* 4. Vectors persisted in memory.db deserialize correctly into the backend
|
||||
@@ -183,7 +183,7 @@ describe('NativeHnswBackend — real qe-kernel fixture (#399)', () => {
|
||||
);
|
||||
|
||||
it.runIf(fixture !== null && fixture.length >= 100)(
|
||||
'should hit recall@10 >= 0.9 and top-1 == self on real qe-kernel embeddings',
|
||||
'should hit recall@10 >= 0.9 with an exact top match on real qe-kernel embeddings',
|
||||
() => {
|
||||
const pool = fixture!;
|
||||
const backend = new NativeHnswBackend({
|
||||
@@ -209,13 +209,12 @@ describe('NativeHnswBackend — real qe-kernel fixture (#399)', () => {
|
||||
// them based on entry-point luck. 90-100% recall@10 is the
|
||||
// standard approximate-HNSW guarantee.
|
||||
//
|
||||
// The TOP-1 self-match assertion is the strict bug-detector — it's
|
||||
// mathematically impossible to fail unless HNSW is fundamentally
|
||||
// broken (which is exactly what @ruvector/router 0.1.28 was: it
|
||||
// returned random non-neighbors with recall@10 = 0% to 10%). Anything
|
||||
// above 0.5 recall@10 here would already be a clear pass. We hold
|
||||
// the bar at 0.9 to catch tuning regressions while accepting the
|
||||
// legitimate plateau-region behavior of real embeddings.
|
||||
// The TOP-1 exact-vector assertion is the strict bug-detector. Several
|
||||
// real fixture rows can contain byte-identical embeddings, so requiring
|
||||
// the queried row's numeric id would make the result depend on arbitrary
|
||||
// tie-breaking. @ruvector/router 0.1.28 returned random non-neighbors
|
||||
// with recall@10 = 0% to 10%; requiring an exact top result still catches
|
||||
// that failure while accepting indistinguishable duplicate vectors.
|
||||
const RECALL_FLOOR = 0.9;
|
||||
|
||||
for (const queryIdx of [
|
||||
@@ -234,7 +233,8 @@ describe('NativeHnswBackend — real qe-kernel fixture (#399)', () => {
|
||||
const recallAt10 =
|
||||
[...groundTruthIds].filter((id) => hitIds.has(id)).length / groundTruthIds.size;
|
||||
|
||||
expect(results[0].id).toBe(queryIdx); // self MUST be top-1 (exact-match guarantee)
|
||||
expect(pool[results[0].id].vector).toEqual(queryVector);
|
||||
expect(results[0].score).toBeGreaterThanOrEqual(0.999);
|
||||
expect(recallAt10).toBeGreaterThanOrEqual(RECALL_FLOOR);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user