chore(release): bump version to v3.9.7

Release notes + CHANGELOG + fleetVersion bump for v3.9.7. See
docs/releases/v3.9.7.md for the user-facing summary.

Highlights:
  - Release-gate corpus with 4 pinned real public repo fixtures
    (mitt, p-queue, RuView with sha256-pinned regression marker,
    agentic-qe self-dogfood) running `aqe init --auto` end-to-end
    before every publish
  - `aqe init --json` with stable schemaVersion 1 contract and
    stricter exit codes
  - Phase 06 no longer hides non-critical failures behind
    result.success:true (the v3.9.3 failure shape is now structurally
    impossible to ship silently)
  - Post-publish canary re-runs the corpus against the freshly
    published package via real npm CDN edge
  - Watchdog effectiveness unit test covering async-stall branches
  - AQE_SKIP_CODE_INDEX promoted to permanent supported flag

Verification:
  - npm run build — clean
  - npm run typecheck — clean
  - tests/unit/init/ + tests/unit/cli/ — 1084/1084 pass
  - Full corpus gate against /tmp/agentic-qe-3.9.7.tgz — 4/4 pass
    with 22 assertions each
  - Isolated install probe (npm install + aqe --version) — OK
  - aqe security --sast on all touched files — 0 findings

Refs: #401, #412

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dragan Spiridonov
2026-04-07 17:28:54 +00:00
parent 05dcfe92dd
commit 65b2599390
6 changed files with 114 additions and 4 deletions
+1 -1
View File
@@ -932,7 +932,7 @@
},
"metadata": {
"generatedBy": "Agentic QE Fleet",
"fleetVersion": "3.9.6",
"fleetVersion": "3.9.7",
"manifestVersion": "1.3.0",
"lastUpdated": "2026-02-04T00:00:00.000Z",
"contributors": [
+38
View File
@@ -5,6 +5,44 @@ 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.9.7] - 2026-04-07
### Added
- **Release-gate corpus with real public repo fixtures** ([#401](https://github.com/proffesor-for-testing/agentic-qe/issues/401), [#412](https://github.com/proffesor-for-testing/agentic-qe/pull/412)) — `tests/fixtures/init-corpus/` now contains 4 pinned real-public-repo fixtures that run `aqe init --auto` end-to-end before every npm publish. This is the structural verification layer the v3.9.1v3.9.4 init regression series exposed as missing. The corpus includes `developit/mitt` (tiny TS), `sindresorhus/p-queue` (mid-size TS), `ruvnet/RuView` (multi-lang, with `examples/ruview_live.py` sha256-pinned to the exact 28,745-byte content that triggered the v3.9.4 hang), and `agentic-qe` itself as the dogfood case. 22 assertions per fixture including per-step JSON error inspection, snapshot-based KG thresholds with tolerance, skills/agents/MCP/CLAUDE.md/workers/config.yaml presence checks, subthreshold stall detection, and a second init pass that exercises phase 06's delta-scan path — the actual surface that hung in v3.9.1 ruview and was never reached on a first init.
- **`aqe init --json` structured output** ([#412](https://github.com/proffesor-for-testing/agentic-qe/pull/412)) — new flag emits the full `InitResult` as machine-readable JSON with `schemaVersion: 1`, stable per-phase `steps[]`, and aggregate `summary`. Exit code is stricter in `--json` mode: non-zero on **any** step error, not just critical-phase failures. This is the stable contract the release gate and future CI consumers rely on instead of grepping stdout for human banners.
- **Phase 06 watchdog effectiveness unit test** (`tests/unit/init/phases/code-intelligence-watchdog.test.ts`) — 4 cases proving the async-stall branches of `runBoundedScan` actually work (per-file timeout, per-file error recovery, phase-level cap) plus explicit documentation of the sync-block limitation that requires `AQE_SKIP_CODE_INDEX` or future worker isolation.
- **Pre-publish-gate CI job** (`.github/workflows/npm-publish.yml`) — runs the corpus against the freshly-built tarball before publish. Blocks the release tag on any gate failure.
- **Post-publish canary workflow** (`.github/workflows/post-publish-canary.yml`) — fires only on real publishes (filtered against `workflow_dispatch` dry-runs), polls the actual npm CDN via `npm install --dry-run` (not `npm view` which only hits registry metadata), runs the corpus against the published package, opens a P0 issue via `gh issue create --body-file` if any fixture fails.
- **Pull request template** (`.github/PULL_REQUEST_TEMPLATE.md`) with a single load-bearing checkbox: every failure mode in a PR description must have a test or a linked tracking issue. Honor-system today; CI enforcement tracked in [#408](https://github.com/proffesor-for-testing/agentic-qe/issues/408).
### Fixed
- **Phase 06 no longer hides non-critical failures behind `result.success: true`** ([#412](https://github.com/proffesor-for-testing/agentic-qe/pull/412)) — `runCodeIntelligenceScan` previously had a top-level `catch` that returned `{status: 'skipped', entries: 0}` on any throw, producing a successful phase result with hidden failure semantics. Init would report "AQE v3 initialized successfully" while the KG was empty and the user had no signal. The catch is gone; exceptions now propagate to `BasePhase.execute()` and appear as `step.status='error'` in the result, visible to both the user and the release gate. This is the exact failure shape that v3.9.3 shipped with — now structurally impossible to ship silently.
- **Resource leak in phase 06 cleanup path** — the old `runCodeIntelligenceScan` only cleaned up `kgService` and memory handles on the success branch. On any throw, those native handles (better-sqlite3 + hnswlib-node + KG service) leaked and could cause `database is locked` or stale-connection failures in subsequent init phases or in `aqe code index` runs. Now released via `try/finally`, guaranteed even on throw.
### Changed
- **`AQE_SKIP_CODE_INDEX` promoted to permanent supported flag.** Originally added in v3.9.4 as an emergency escape hatch during the ruvector deadlock, this flag is now formally documented as a permanent defense-in-depth option in code comments, CLI help, and the phase interface type. The underlying deadlock was fixed by ADR-090 in v3.9.6; the flag stays as the user's break-glass if verification ever misses a future native stall.
- **`tests-on-tag-sha` job simplified** (`.github/workflows/npm-publish.yml`) — previously tried to skip re-running tests when `optimized-ci.yml` had already passed on the same SHA, via a `gh api` conditional. Devils-advocate review found four failure modes in that conditional (matrix partial-success, head SHA drift, rate limit, file rename). Replaced with an unconditional fast unit test run on release events only (~2 min added, no API calls, no race conditions).
### Deferred (tracking issues)
The following items from the #401 Part 2 proposal are deferred with explicit tracking issues rather than dropped silently:
- Phase 06 `worker_threads.Worker` isolation — [#407](https://github.com/proffesor-for-testing/agentic-qe/issues/407) with defined revisit triggers
- PR template CI enforcement (branch protection + lint) — [#408](https://github.com/proffesor-for-testing/agentic-qe/issues/408)
- `VERIFICATION.md` + release-notes verification matrix — [#409](https://github.com/proffesor-for-testing/agentic-qe/issues/409)
- Chaos workflow for pathological init inputs — [#410](https://github.com/proffesor-for-testing/agentic-qe/issues/410)
- Mirror init-corpus tarballs to GitHub Releases — [#411](https://github.com/proffesor-for-testing/agentic-qe/issues/411)
## [3.9.6] - 2026-04-06
### Fixed
+1
View File
@@ -4,6 +4,7 @@ All Agentic QE release notes organized by version.
| Version | Date | Highlights |
|---------|------|------------|
| [v3.9.7](v3.9.7.md) | 2026-04-07 | Release-gate corpus + `aqe init --json` + phase 06 stops lying about success (#401) |
| [v3.9.6](v3.9.6.md) | 2026-04-06 | Native HNSW works again — replaced @ruvector/router with hnswlib-node, no more vectors.db cruft |
| [v3.9.5](v3.9.5.md) | 2026-04-06 | Root-cause fix: disable native HNSW (deadlocks on certain inputs), faster JS backend by default |
| [v3.9.4](v3.9.4.md) | 2026-04-06 | Hotfix: governance phase chunk-split regression, `--skip-code-index` escape hatch, per-file logging |
+71
View File
@@ -0,0 +1,71 @@
# v3.9.7 Release Notes
**Release Date:** 2026-04-07
## TL;DR
**The verification layer that was structurally missing during the v3.9.1v3.9.4 init regression series is now in place.** Every `npm publish` now runs `aqe init --auto` against a corpus of 4 pinned real public repositories with 22 assertions per fixture — including a sha256-pinned regression marker for the exact 28,745-byte Python file that triggered the v3.9.4 deadlock, and a second init pass that exercises phase 06's delta-scan code path (the actual surface that hung in v3.9.1 ruview and was never reached on a first init). Phase 06 no longer hides non-critical failures behind `result.success: true`, and `aqe init --json` provides a stable structured contract for CI tooling. Addresses [#401](https://github.com/proffesor-for-testing/agentic-qe/issues/401).
## Highlights
- **4-fixture release-gate corpus** (`tests/fixtures/init-corpus/`) runs `aqe init --auto` end-to-end against pinned real public repos before every npm publish. Any init regression is blocked at the tag, not discovered by users after publish.
- **`aqe init --json`** — new machine-readable output with schema version 1 and stricter exit codes (non-zero on any step error, not just critical failures).
- **Phase 06 stops lying about success.** Errors in `runCodeIntelligenceScan` now propagate to `step.status='error'` in the result — the exact v3.9.3 failure shape is now structurally impossible to ship silently.
- **Post-publish canary** re-runs the corpus against the freshly-published package on the actual npm CDN and opens a P0 issue if anything fails.
- **Watchdog effectiveness unit test** covers the async-stall branches that v3.9.3 shipped broken.
## Upgrade
```bash
# Claude Code
claude mcp add agentic-qe -- npx -y agentic-qe@3.9.7
aqe init --auto
# Global
npm install -g agentic-qe@3.9.7
aqe init --auto
```
No flags or environment variables needed.
## Added
- **Release-gate corpus** at `tests/fixtures/init-corpus/` with 4 pinned real public-repo fixtures: `developit/mitt@b240473` (tiny TS), `sindresorhus/p-queue@55d306b` (mid-size TS with strict types), `ruvnet/RuView@2a05378` (multi-lang TS/Python/Rust/JS/Swift with `examples/ruview_live.py` sha256-pinned to the 28,745-byte content that triggered the v3.9.4 hang), and `agentic-qe` itself as the dogfood case. 22 per-fixture assertions including JSON `step.status` inspection, snapshot-based KG thresholds with tolerance, skills/agents/MCP/CLAUDE.md/workers/config.yaml presence checks, subthreshold stall detection, and a mandatory second init pass that exercises phase 06's delta-scan branch.
- **`aqe init --json` flag** — emits the full `InitResult` as structured JSON with `schemaVersion: 1`, per-phase `steps[]` (`success`/`warning`/`error`/`skipped`), aggregate `summary` counts, timing, and timestamp. Suppresses chalk banners on stdout (redirected to stderr for CI visibility) so the JSON output is parseable. Exit code is stricter than human mode: non-zero on **any** step with `status='error'`, not just critical-phase failures.
- **Pre-publish-gate CI job** in `.github/workflows/npm-publish.yml` — downloads the build artifact, runs `npm pack` to produce the release tarball, installs it in per-fixture cleanrooms, runs `aqe init --auto --json` against each fixture, and blocks the publish on any assertion failure. Cache-keyed by manifest hash so fixture tarballs are redownloaded only when pins change.
- **Post-publish canary workflow** (`.github/workflows/post-publish-canary.yml`) — fires only on real `release` events (not manual `workflow_dispatch` dry-runs), polls the actual npm CDN edge via `npm install --dry-run` instead of registry metadata, runs the corpus against the freshly-published package, and opens a P0 issue via `gh issue create --body-file` if any fixture fails.
- **Pull request template** (`.github/PULL_REQUEST_TEMPLATE.md`) with a single required checkbox: every failure mode in a PR description must have a test or a linked tracking issue. Honor-system today; CI enforcement tracked in [#408](https://github.com/proffesor-for-testing/agentic-qe/issues/408).
- **Watchdog effectiveness unit test** (`tests/unit/init/phases/code-intelligence-watchdog.test.ts`) — 4 cases covering per-file timeout firing on async stalls, per-file error recovery without breaking the loop, phase-level cap enforcement, and explicit documentation of the sync-block limitation that requires `AQE_SKIP_CODE_INDEX` or future worker isolation.
## Fixed
- **Phase 06 no longer reports success when it actually failed.** The old `runCodeIntelligenceScan` had a top-level `catch` that returned `{status: 'skipped', entries: 0}` on any throw, producing a successful phase result with hidden failure semantics. Init would print "AQE v3 initialized successfully!" while the knowledge graph was empty and the user had no signal that anything was wrong. This is the exact failure shape that shipped in v3.9.3 — the catch is gone; exceptions now propagate to `BasePhase.execute()` and surface as `step.status='error'` in the result.
- **Resource leak in phase 06 cleanup.** The old implementation only cleaned up `kgService` and the memory backend in the success branch. On any throw, those native handles (`better-sqlite3`, `hnswlib-node`, KG service) leaked and could cause `database is locked` or stale-connection failures in later init phases or in `aqe code index` runs. Now always released via `try/finally`.
## Changed
- **`AQE_SKIP_CODE_INDEX` is now a permanent supported flag.** Originally added in v3.9.4 as an emergency escape hatch during the ruvector deadlock, it is now formally documented as a permanent defense-in-depth option in code comments, CLI help text, and the phase interface type. The underlying deadlock was eliminated by ADR-090 in v3.9.6, but the flag remains as the user-facing break-glass if verification ever misses a future native stall.
- **`tests-on-tag-sha` job simplified** in `.github/workflows/npm-publish.yml`. An earlier draft tried to skip re-running tests when `optimized-ci.yml` had already passed on the same SHA, via a `gh api` conditional. Devils-advocate review found four failure modes in that conditional (matrix partial-success misreading, head SHA drift on merge commits, rate limit silent failure, workflow file rename). Replaced with an unconditional fast unit test run on release events only (~2 min, no API calls, no race conditions).
## Deferred (tracked for follow-up)
These items from the [#401 Part 2](https://github.com/proffesor-for-testing/agentic-qe/issues/401) proposal are deferred with explicit tracking issues:
- Phase 06 `worker_threads.Worker` isolation — [#407](https://github.com/proffesor-for-testing/agentic-qe/issues/407) with defined revisit triggers (e.g. if the corpus ever catches a sync-blocking native dep that can't be fixed upstream)
- PR template CI enforcement (branch protection + body linting) — [#408](https://github.com/proffesor-for-testing/agentic-qe/issues/408)
- `VERIFICATION.md` + release-notes verification matrix — [#409](https://github.com/proffesor-for-testing/agentic-qe/issues/409)
- Chaos workflow for pathological init inputs (encodings, symlinks, binary-as-text) — [#410](https://github.com/proffesor-for-testing/agentic-qe/issues/410)
- Mirror init-corpus tarballs to GitHub Releases (codeload sha drift resilience) — [#411](https://github.com/proffesor-for-testing/agentic-qe/issues/411)
## Links
- [#401 Post-mortem](https://github.com/proffesor-for-testing/agentic-qe/issues/401) — the original issue that motivated this release
- [#412 PR](https://github.com/proffesor-for-testing/agentic-qe/pull/412) — the implementation
- [CHANGELOG.md](../../CHANGELOG.md) — full changelog
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "agentic-qe",
"version": "3.9.6",
"version": "3.9.7",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "agentic-qe",
"version": "3.9.6",
"version": "3.9.7",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "agentic-qe",
"version": "3.9.6",
"version": "3.9.7",
"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",