v2.15.0
Added
- A deterministic Python e2e test harness (
tests/e2e/), replacing the old ~815-line LLM-orchestrated e2e script. It opens throwaway PRs/MRs on the real GitHub/GitLab/Bitbucket test repos, runs the built review container against them, and verifies the posted output with plain code (telemetry JSON, fetched comments/annotations) instead of asking an LLM to eyeball shell output. A new.github/workflows/e2e.ymlbuilds the candidate image once and runs it against all three platforms in parallel matrix legs, gated behind ane2e-gateaggregate check and a dedicatede2e-liveGitHub Environment restricted torelease/*branches. Live-run end to end against all three platforms at least once each, including together in a single 3-platformworkflow_dispatchrun: GitLab and Bitbucket each passed cleanly; GitHub’s runs correctly exercise every check but don’t currently pass cleanly, for the reason in the Known limitation below. .github/workflows/lint.yml’s test/lint job is now a required branch-protection status check onmain, alongside the existing AI review check.
Fixed
Found and fixed during this harness’s own live validation runs and a follow-up comprehensive review: per-platform pinned fixture seed SHAs, a self-approval-degrade check that compared against a hardcoded expectation instead of telemetry’s own intent, Bitbucket’s auth scheme/URL-encoding/annotation-pagination bugs, a fail-open bug in e2e-gate that could report success on a broken release PR, empty-string secret fallback bugs, argv/.git/config credential exposure in local clones, a world-writable output directory, non-idempotent retry-induced duplicate resources, missing Bitbucket orphan-branch cleanup, loose finding-matching in the verifier, inconsistent hand-copied pagination loops, and missing literal-value secret redaction in CI artifacts.
Known limitation
- GitHub’s e2e leg runs self-review-degraded until separate seeder/reviewer GitHub identities are provisioned, a real platform restriction the harness correctly detects, not a harness bug.
e2e-gateis not yet a required check onmain.
See CHANGELOG.md for full technical detail.