Files
Profa 722bb04f19 chore(release): bump version to v3.7.3
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-27 13:31:34 +00:00

5.6 KiB

v3.7.3 Release Notes

Release Date: 2026-02-27

Highlights

This release completes the Phase 0 + Phase 1 CI/CD integration milestone, making AQE CLI fully CI-native. Any CI/CD pipeline (GitHub Actions, GitLab CI, Jenkins, CircleCI, Buildkite) can now consume AQE outputs natively — no special SDK, no MCP requirement, no platform lock-in.

The strategic decision: CLI-first, format-rich, platform-agnostic. aqe security --format sarif runs in ANY pipeline and brings 150K learned patterns to bear.

Phase 0: CLI/MCP Verification — 17 Bug Fixes

Ran 87 test cases across all 26 CLI commands and 59 MCP tools. Found and fixed 17 issues (5 critical, 6 high, 6 medium):

Critical Fixes

  • CRIT-1: CLI process hangs after command completion — switched to parseAsync() + cleanupAndExit()
  • CRIT-2: Auto-init messages pollute stdout in --format json mode — routed to stderr
  • CRIT-3: aqe quality calls wrong domain API method (evaluate → evaluateGate) — fixed with correct method signature and default metrics/thresholds
  • CRIT-4: aqe security --compliance calls wrong method (checkCompliance → runComplianceCheck) — fixed with Promise.all for multiple frameworks
  • CRIT-5: OpenRouter/Ollama providers crash on undefined defaultModel — added null coalescing

High-Priority Fixes

  • HIGH-1: aqe <nonexistent> hangs instead of showing help
  • HIGH-2: aqe status/aqe health auto-initializes in non-project dirs — added ensureInitializedStrict() checking for .agentic-qe/ dir
  • HIGH-3: MCP aqe_health reports hardcoded version '3.7.0' — changed to build-time __CLI_VERSION__
  • HIGH-4: team_scale ignores requested size due to clamping — maxSize = Math.max(getMaxTeamSize, targetSize, maxActiveTeams)
  • HIGH-5: test_execute_parallel throws on failed tests instead of returning result — returns failed result object
  • HIGH-6: infra_healing_status shows "not initialized" — added inline default playbook YAML fallback

Medium-Priority Fixes

  • MED-1: Test plan references non-existent CLI flags
  • MED-2: Coverage percentages show too many decimals — added .toFixed(1) formatting
  • MED-3: aqe quality without --gate submits async task instead of inline eval — always uses inline mode now
  • MED-4: Ghost coverage analyzer produces false positive security/integration gaps on math files — added getApplicableCategories() file-context filtering
  • MED-5: model_route always returns tier 0 with complexity 0 — added minimum complexity floor, expanded keywords
  • MED-6: MCP coverage_analyze_sublinear returns 0% vs CLI ~80% — added buildHeuristicCoverage() fallback

Phase 1: CI-Native CLI — All 5 Items Complete

1.1 --format flag on all output-producing commands ✅

All 4 core commands support format-aware output:

  • aqe test execute --format json|junit|markdown
  • aqe coverage --format json|markdown
  • aqe security --format json|sarif|markdown
  • aqe quality --format json|markdown

1.2 --output <path> for artifact generation ✅

All 4 core commands support --output <path> via shared writeOutput() utility. When used, writes full report to file and prints summary to stdout.

1.3 vitest JUnit XML generation ✅

Added JUnit reporter to vitest.config.ts. CI workflows now get junit.xml automatically.

1.4 Synchronous quality gate with direct pass/fail ✅

aqe quality now runs inline (no async task submission + polling). Returns structured JSON with criteria breakdown, per-criterion pass/fail, overall verdict, and exit code.

1.5 SARIF v2.1.0 output for aqe security ✅

toSARIF() fully implemented in ci-output.ts. Produces schema-compliant SARIF for GitHub Code Scanning / GHAS integration.

1.6 Exit codes: 0 / 1 / 2 convention ✅

Exit Code Meaning CI Usage
0 Success Pipeline continues
1 Failure Pipeline fails
2 Warning Pipeline can choose to continue or fail

Per-command logic:

Command Exit 1 Exit 2
security Critical/high vulnerabilities Medium-only vulnerabilities
quality Quality gate failed Score within 5% of perfect
coverage Below threshold Within 5% above threshold
test Any test failures >20% tests skipped

Bug fix: aqe coverage previously always exited 0 regardless of threshold — now correctly exits 1 when below threshold.

Additional Fixes

  • concept_edges O(n^2) bloat — Prevented quadratic edge growth in knowledge graph and isolated test DB
  • Crypto-secure randomness — Replaced Math.random() with crypto.randomUUID() in CI-sensitive paths
  • OpenCode skill tier validation — Fixed 9 skill configs with invalid tier1-fast → tier1-any
  • Score calculator tests — Updated test assertions for MED-5 minimum complexity floor

CI Pipeline Example

After this release, a complete AQE quality gate in GitHub Actions looks like:

- name: Security scan
  run: aqe security --sast --format sarif --output security.sarif

- name: Upload SARIF
  uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: security.sarif

- name: Coverage check
  run: aqe coverage --threshold 80 --format json --output coverage.json

- name: Quality gate
  run: aqe quality --format json --output quality.json

- name: Test execution
  run: aqe test execute --format junit --output results.xml

Exit codes 0/1/2 let pipelines distinguish pass/fail/warn without parsing output.