Skip to content

feat(release): v0.2.19 - #217

Merged
dan-petty merged 18 commits into
mainfrom
release/v0.2.19
Sep 18, 2026
Merged

dan-petty merged 18 commits into
mainfrom
release/v0.2.19

Conversation

@dan-petty

@dan-petty dan-petty commented Sep 16, 2026

Copy link
Copy Markdown
Owner

feat(release): v0.2.19

Summary

Release v0.2.19 tracking PR under GitHub pull request merge controls.

Target Milestone Deliverables

Release Notes

Added

  • Adaptive Embedding Batch Sizing Circuit Breaker & Valkey L2 Chunk Caching (devops_cli.ai.rag.embeddings):
    • Implemented dynamic batch sizing starting at 32 with automatic halving (32 -> 16 -> 8 -> 4 -> 2 -> 1) on latency degradation (> 2.0s) or timeouts.
    • Added recursive sub-batch subdivision and single-chunk request fallback when multi-chunk batches fail across candidate nodes.
    • Implemented exponential backoff with bounded jitter on transient network timeouts.
    • Integrated pre-flight Valkey SHA-256 chunk cache checks before remote embedding dispatch, with automatic write-through caching and 7-day TTL.
  • Automated Draft Release PR Description Generator (devops release pr):
    • Automatically queries and lists target milestone issues and deliverables under ### Target Milestone Deliverables.
    • Dynamically synthesizes 10-gate CI quality checklists, CodeQL, and PR readiness controls adapted for draft vs. ready pull requests.
    • Resolves clean, non-duplicate release notes from git commits and changelog sources, preventing previous release note duplication.
  • Git Squash Merge Commit Body Parsing & Categorization (devops release changelog):
    • Parses squash commit bodies (%B) to extract PR commit items into Keep-a-Changelog sections (### Added, ### Fixed & Hardened, ### Changed & Improved).

Performance & Optimization

  • Parallel Async Branch and PR Review Worker Pool with Semaphore Concurrency (devops_cli.ai.review):
    • Implemented ReviewWorkerPool.create() with bounded semaphore concurrency ($1 \le C \le 8$), token-bucket rate limiting (DEFAULT_REVIEW_RATE_LIMIT = 10.0), and per-task timeout management.
    • Upgraded pre-analysis refresh, multi-persona segment review, findings validation, and persona loops in both ReviewPipelineOrchestrator and runner.py to use managed asynchronous worker pools.
    • Replaced legacy unbound ThreadPoolExecutor and sequential single-worker fallbacks with concurrent execution, accelerating multi-file and multi-persona review cycles while preventing VRAM spikes, Ollama out-of-memory errors, and rate-limit throttling.
    • Hardened error isolation with return_exceptions=True across parallel review stages, guaranteeing that an isolated LLM inference error or malformed payload does not fail remaining segment reviews.

Fixed & Hardened

  • GitHub Copilot Review Completion on Resolved Threads (devops pr monitor, devops pr wait):
    • Automatically transitions copilot_status to completed when all recommended changes in review threads have been addressed and 0 unresolved threads remain.
    • Prevents premature failure exit code 2 when all CI checks are green and all discussion threads have been resolved.
    • Excludes bot reviews from human review approval decision evaluations in _resolve_review_decision.
  • Main Branch AI Review & Base Resolution (devops ai review branch):
    • Dynamically resolves comparison bases when reviewing main branch or when passing main as an argument from another branch (e.g. release/v0.2.19).
    • Supports diffing uncommitted working tree modifications against HEAD, and cleanly falls back to latest release tags or parent commits (main~1) when working tree is clean.
    • Automatically switches comparison targets when positional branch argument matches default base on an active topic/release branch.
  • Documentation Compactor Idempotency (devops docs compact):
    • Enhanced version range regex to parse all matching version patterns from roadmap headers and recognize canonical summary blocks, guaranteeing idempotent compaction.
  • Polyglot Tree-Sitter File Size Boundary Guard & Resource Containment (devops_cli.ai.repomap):
    • Enforced pre-flight MAX_REPOMAP_FILE_SIZE_BYTES checks in _polyglot_to_file_node for all multilingual source trees (TypeScript, Go, Rust, Java, HCL), excluding files exceeding 5MB to prevent memory spikes and OOM crashes.
    • Hardened symlink resolution with strict=True to trap and exclude circular symlink loops (ELOOP) and symlinks escaping repository workspace boundaries.
    • Added structured warning logging on oversized file exclusions and symlink containment violations.
  • Pre-Release Non-Empty Changelog Verification (devops release check):
    • Enforced strict validation ensuring changelog notes are populated prior to release certification.

Changed & Improved

  • AI/LLM Prompt Deduplication & Optimization:
    • Authoritatively centralized anti-hallucination invariants into src/devops_cli/ai/tasks/review.md.
    • Removed duplicate multi-paragraph blocks across all 6 personas (architect, auditor, challenger, devsecops, pm, qa) and review task prompts.
    • Slashed prompt footprint by 32% (~1,500 tokens saved per review turn).
  • High-Performance AST Context Packer with Binary Search Truncation (devops_cli.ai.context_packer):
    • Replaced O(N^2) linear statement re-unparsing loops with O(log N) binary search truncation index discovery.
    • Implemented O(1) per-statement token weight estimation with AST node memoization (_estimate_stmt_tokens).
    • Added tokenizer pre-warming in ContextPacker initialization, dropping 1,000-line AST tree pruning latency from >300ms down to <5ms.
  • Release v0.2.19 Branch Initialization:
    • Created release/v0.2.19 tracking branch, bumped version to 0.2.19, and synchronized documentation across the repository.

Quality Gate Checklist

  • 10-Gate CI Quality Gate passing (devops ci)
  • Documentation and Command Matrix in README.md synchronized
  • Version matching across pyproject.toml and src/devops_cli/__init__.py
  • CodeQL & Static Analysis passing
  • Pre-commit & CI validation passing
  • Milestone deliverables reviewed and merged into release/v0.2.19
  • Final release readiness verified before converting from draft

@dan-petty dan-petty added the release Release pull requests label Sep 16, 2026
…e resolution (#218) (#219)

* feat(release): fix draft PR description generator and milestone deliverable resolution

* docs(agent): track task 218 for release draft pr description generator fix

* fix(release): prevent duplicate text by formatting milestone issues as clean autolinks

* fix(release): isolate milestone cache, dynamic draft checklist, and mock run_gh in tests
…anch (#220) (#221)

* fix(ai): support main branch diffing and base resolution in review branch (#220)

* fix(review): propagate target_branch to target_ref and update task 220 status to In Review (#221)
…hreads remain (#216) (#222)

* fix(github): treat copilot review as completed when zero unresolved threads remain (#216)

* docs(agent): update task 216 with PR #222 and status In Review

* test(github): test monitor_pr across get_pr_monitoring_status boundary with mock threads (#222)
… fallback (#117) (#223)

* feat(ai): adaptive embedding batch sizing circuit breaker and timeout fallback (#117)

* docs(agent): link PR #223 and transition task 117 to In Review

* fix(ai): resolve review feedback on fallback cache poisoning and query key isolation (#117)
…cation (#118) (#224)

* perf(ai): high-performance AST context packer with binary search truncation (#118)

* docs(agent): link PR #224 and transition task 118 to In Review

* fix(ai): resolve review feedback on full-body binary search, empty AST isolation, and tokenizer prewarming (#118)

* fix(ai): accurately evaluate truncation boolean and expand test coverage (#118)
…ontainment (#119) (#225)

* fix(ai): polyglot tree-sitter file size boundary guard and resource containment (#119)

* fix(ai): harden repomap symlink resolution and syntax tuple

* test(ci): isolate ci workspace root to tmp_path to prevent unlinking active coverage
…ore concurrency (#120) (#226)

* perf(ai): parallel async branch and pr review worker pool with semaphore concurrency (#120)

* docs(agent): link PR #226 to task-120 tracking

* fix(ai): address Copilot review feedback on error isolation and sanitization

* fix(security): sanitize CodeQL clear-text logging by recording exception type names
…123) (#230)

* feat(ai): llm structured output retry and json schema repair engine (#123)

* fix(ci): remove redundant pr merge readiness gate and remediate review findings (#123) (#230)

* chore(ci): deduplicate pre-commit code checks and scope hooks to pre-commit stage
…cking, and repos clone destination (#231) (#232)

* chore(ci): real-time quality gate streaming, re-entrant rate limit locking, and project quota safety

* feat(repos): parse organization destination from clone url instead of hardcoding standalone

* docs(agent): add task-231 tracking for realtime CI, rate limiter locking, and repos clone

* docs(agent): link PR #232 to task-231 tracking

* fix(gh): isolate disk quota lock yield and add fallback pacing for unknown quotas

* docs(agent): document task-231 CI failure remediation and merge readiness
…e dry-run reconciliation (#233) (#234)

* docs(agent): record PR #232 merge and close task 231

* fix(github): resolve paginated url replacement loop, optimize dry-run project reconciliation, and add pr edit milestone (#233)

* docs(agent): update task 233 status to in-review and link PR #234

* fix(github): resolve PR review comments for #234 with milestone resolution, off-board dry-run test, and tuple except syntax

* fix: config
… tracking, and optimize project reconciliation (#235) (#236)

* fix(github): eliminate bare gh invocations, harden rate limiter quota tracking, and optimize project reconciliation (#235)

* fix(github): replace hardcoded gh CLI strings with CONST_GH_CLI constant (#235)

* fix(github): resolve review feedback on mutation budgeting, rate limiter caching, and milestone editing (#235)

- Pass shared MutationBudget across issue sync, candidate provisioning, and custom field edits to enforce a strict aggregate cap of 25 mutations
- Reject all HTTP mutation methods (POST, PUT, PATCH, DELETE) and field arguments in _is_cacheable_api_call
- Retain --milestone option on devops pr edit with REST fallback
- Raise GitHubRateLimitError instead of bare TypeError on non-dictionary data in QuotaState.from_dict
- Enforce max_backoff in calculate_backoff_delay and quota_max_age in QuotaState.is_valid
- Account effective_cost during limiter.acquire() and eliminate redundant second decrement in _post_process_run
- Update Task 235 tracking to PR #236 and Status: In Review

* fix(github): eliminate delay-bypassing caps and mock external calls in tests (#235)

- Remove DEFAULT_GH_MAX_PACING_DELAY_SECONDS and DEFAULT_GH_MAX_BACKOFF_SECONDS to ensure mandatory pauses are never bypassed or truncated
- Ensure _acquire_locked pauses for full calculated request delay and calculate_backoff_delay pauses for full duration until reset
- Properly mock _resolve_project_owner_arg in project tests to eliminate unmocked rate limit network calls
…rate quota defaults (#237) (#238)

* fix(github): eliminate bare gh invocations, error masking, and inaccurate quota defaults (#237)

* docs(agent): link PR #238 in task-237 tracking

* fix(github): resolve review feedback on error classification, syntax, and sync resiliency (#237)
…bility fallback (#126) (#239)

* feat(k8s): minikube gpu detection and dynamic service nodeport reachability fallback (#126)

* docs(agent): update task-126 status to in review with pr #239

* fix(k8s): resolve PR #239 review feedback on valkey normalization, scheme fallback, and sanitization

* feat(devcontainer): build from debian:sid with python3.14, uv 0.12.16, and CI caching optimizations

* fix(devcontainer): normalize VERSION_CODENAME to trixie for devcontainer feature compatibility
…anitizer (#128) (#241)

* feat(ai): streaming reasoning think token parser and bounded stream sanitizer (#128)

* docs(task): update task-128 PR link to #241

* fix(ai): resolve review feedback on streaming reasoning and error bounds
) (#242)

* feat(ai): high-throughput LLM gateway and distributed model router (#142)

* docs(agent): update task-142 tracking with PR #242

* fix(ai): remediate review comments on llm gateway, vllm manifests, and router (#142)
@dan-petty
dan-petty marked this pull request as ready for review September 18, 2026 11:22
Copilot AI lite review requested due to automatic review settings September 18, 2026 11:22

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

One critical container-build blocker and multiple CI, hook-enforcement, and Kubernetes deployment issues remain unresolved.

Get a fresh assessment by requesting another Copilot review.

Pull request overview

Release v0.2.19 consolidating AI, GitHub, Kubernetes, CI, documentation, and tooling improvements.

Changes:

  • Added AI gateway, vLLM, embedding, streaming, and review-pool capabilities.
  • Hardened GitHub operations, subprocess handling, CI workflows, and release tooling.
  • Updated Kubernetes manifests, dependencies, documentation, tests, and DevContainer configuration.
File summaries
File Summary
uv.lock Updated dependency lockfile.
tests/test_subprocess_env_boundary.py Tests subprocess environment boundaries.
tests/test_review.py Tests review commands.
tests/test_review_pipeline.py Tests review pipeline behavior.
tests/test_repos.py Tests repository commands.
tests/test_process.py Tests process handling.
tests/test_instruction_generator.py Tests instruction generation.
tests/test_github_secrets.py Tests GitHub secrets operations.
tests/test_github_pages.py Tests GitHub Pages operations.
tests/test_github_milestones.py Tests milestone operations.
tests/test_github_issues.py Tests issue operations.
tests/test_github_client.py Tests GitHub client behavior.
tests/test_github_branch_protection.py Tests branch protection.
tests/test_devcontainer.py Tests DevContainer behavior.
tests/test_context_packer.py Tests context packing.
tests/test_config_commands.py Tests configuration commands.
tests/test_ci.py Tests CI commands.
tests/test_ai_review_pool.py Tests AI review worker pools.
tests/test_ai_client_providers_and_embeddings.py Tests AI providers and embeddings.
tests/test_ai_agent_step_persistence.py Tests agent-step persistence.
src/devops_cli/server/routes/status.py Updates status route handling.
src/devops_cli/output/formatters/panels.py Updates panel formatting.
src/devops_cli/lang/en/messages.py Updates localized messages.
src/devops_cli/lang/en/help.py Updates CLI help text.
src/devops_cli/github/secrets.py Handles GitHub secrets.
src/devops_cli/github/pages.py Handles GitHub Pages.
src/devops_cli/github/issues.py Handles GitHub issues.
src/devops_cli/github/client.py Updates GitHub client operations.
src/devops_cli/github/branch_protection.py Manages branch protection.
src/devops_cli/exceptions/ai.py Adds AI-related exceptions.
src/devops_cli/docs/compactor.py Improves documentation compaction.
src/devops_cli/core/process.py Updates process execution.
src/devops_cli/config/settings.py Updates configuration settings.
src/devops_cli/config/defaults.py Adds configuration defaults.
src/devops_cli/config/constants.py Updates configuration constants.
src/devops_cli/config/__init__.py Updates configuration exports.
src/devops_cli/commands/review.py Updates review commands.
src/devops_cli/commands/repos.py Updates repository commands.
src/devops_cli/commands/k8s/bootstrap.py Updates Kubernetes bootstrap.
src/devops_cli/commands/config.py Updates configuration commands.
src/devops_cli/commands/ci.py Updates CI commands.
src/devops_cli/ai/thinking_stream.py Updates reasoning stream handling.
src/devops_cli/ai/tasks/review_pipeline_eval.md Updates review evaluation guidance.
src/devops_cli/ai/tasks/review_output_instruction.md Updates review output instructions.
src/devops_cli/ai/tasks/path_review_prompt.md Updates path review prompts.
src/devops_cli/ai/tasks/paginated_review_protocol.md Updates paginated review protocol.
src/devops_cli/ai/tasks/diff_review_prompt.md Updates diff review prompts.
src/devops_cli/ai/tasks/code_review_prompt.md Updates code review prompts.
src/devops_cli/ai/review/pool.py Implements managed review workers.
src/devops_cli/ai/repomap.py Updates repository mapping safeguards.
src/devops_cli/ai/personas/qa/prompt.md Updates QA persona prompt.
src/devops_cli/ai/personas/pm/prompt.md Updates PM persona prompt.
src/devops_cli/ai/personas/devsecops/prompt.md Updates DevSecOps persona prompt.
src/devops_cli/ai/personas/challenger/prompt.md Updates challenger persona prompt.
src/devops_cli/ai/personas/auditor/prompt.md Updates auditor persona prompt.
src/devops_cli/ai/personas/architect/prompt.md Updates architect persona prompt.
src/devops_cli/ai/knowledge_base/it_domains/tools/github_cli.md Updates GitHub CLI guidance.
src/devops_cli/ai/instruction_generator.py Updates instruction generation.
src/devops_cli/ai/durable.py Updates durable AI operations.
src/devops_cli/ai/client/openai.py Updates OpenAI client integration.
src/devops_cli/ai/client/__init__.py Updates AI client exports.
src/devops_cli/ai/__init__.py Updates AI package exports.
src/devops_cli/__init__.py Bumps package version.
README.md Updates project documentation.
pyproject.toml Updates metadata and dependencies.
k8s/llm/vllm/service.yaml Adds vLLM service.
k8s/llm/vllm/networkpolicy.yaml Adds vLLM network policy.
k8s/llm/vllm/deployment.yaml Adds vLLM deployment.
k8s/llm/networkpolicy.yaml Adds LLM network policy.
k8s/llm/kustomization.yaml Updates LLM resource composition.
k8s/llm/gateway/service.yaml Adds gateway service.
k8s/llm/gateway/networkpolicy.yaml Adds gateway network policy.
k8s/llm/gateway/deployment.yaml Adds gateway deployment.
k8s/llm/gateway/configmap.yaml Adds gateway configuration.
docs/SELF_IMPROVEMENT.md Updates self-improvement documentation.
docs/ERRORS.md Updates error documentation.
docs/DEVCONTAINER_USAGE.md Updates DevContainer documentation.
docs/CONFIGURATION.md Updates configuration documentation.
docs/commands/repos.md Documents repository commands.
docs/commands/release.md Documents release commands.
docs/commands/pr.md Documents pull-request commands.
docs/commands/gh.md Documents GitHub commands.
docs/commands/ai.md Documents AI commands.
docs/agent/tasks/task-237-rate-limit-quota-accuracy-gh-cli-hardening.md Tracks GitHub quota hardening.
docs/agent/tasks/task-235-project-reconcile-rate-quota-exhaustion.md Tracks project reconciliation.
docs/agent/tasks/task-233-paginated-url-dry-run-reconciliation.md Tracks paginated reconciliation.
docs/agent/tasks/task-231-ci-realtime-streaming-rate-limiter-repos-clone.md Tracks CI and repository improvements.
docs/agent/tasks/task-220-main-branch-review-diffing.md Tracks main-branch review diffing.
docs/agent/tasks/task-218-fix-release-draft-pr-description-generator.md Tracks release description generation.
docs/agent/tasks/task-216-copilot-review-completed-when-threads-resolved.md Tracks Copilot review completion.
docs/agent/tasks/task-142-llm-gateway-distributed-router.md Tracks distributed LLM routing.
docs/agent/tasks/task-128-streaming-reasoning-think-tokens.md Tracks streaming reasoning tokens.
docs/agent/tasks/task-127-ai-model-prewarming-vram-eviction.md Tracks model prewarming.
docs/agent/tasks/task-126-k8s-minikube-gpu-nodeport-fallback.md Tracks Kubernetes GPU fallback.
docs/agent/tasks/task-123-llm-structured-output-retry-json-repair.md Tracks structured-output recovery.
docs/agent/tasks/task-120-parallel-async-review-pool.md Tracks asynchronous review pooling.
docs/agent/tasks/task-119-polyglot-treesitter-boundary-guard.md Tracks repository-map safeguards.
docs/agent/tasks/task-118-ast-context-packer-binary-search.md Tracks context-packer optimization.
docs/agent/tasks/task-117-adaptive-embedding-batch-sizing.md Tracks adaptive embedding batches.
.vscode/settings.json Updates editor settings.
.pre-commit-config.yaml Revises quality hooks.
.github/workflows/release.yml Updates release workflow.
.github/workflows/ci.yml Updates CI permissions and checks.
.devcontainer/Dockerfile Reworks development container build.
Review details

Suppressed comments (2)

k8s/llm/kustomization.yaml:16

  • Adding the vLLM deployment to the base llm kustomization makes every normal stack bootstrap deploy this GPU-specific workload. On clusters without an nvidia RuntimeClass or two allocatable GPUs, the stack will remain unschedulable (and can block/slow bootstrap) even when users only intend to run Ollama. Keep vLLM behind a GPU-specific overlay/optional kustomization, or otherwise gate this resource so the default stack remains deployable on CPU and single-GPU environments.
    k8s/llm/vllm/deployment.yaml:93
  • The vLLM model cache is backed by emptyDir, so every pod reschedule, rollout, or node drain discards the downloaded 70B weights and forces another large download before readiness. This makes the gateway unavailable for a potentially long interval and defeats the intended inference-service resilience; use a persistent, node-local/shared model cache or explicitly gate this deployment as disposable development-only infrastructure.
  • Files reviewed: 144/146 changed files
  • Comments generated: 3
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .devcontainer/Dockerfile Outdated
Comment thread .github/workflows/ci.yml
Comment thread .pre-commit-config.yaml
…heck/lockfile quality gates (#243)

* fix: address PR #217 comments, remediate uv diagnostics, upgrade dependencies, and add uv-check/lockfile quality gates

* fix(devcontainer): support sys_bin path parameter and add edge-case coverage for shadowed binary reconciliation

* fix: remove reconcile_shadowed_user_binaries and debian_sid test, honor table payload options, integrate outdated check into CI
@dan-petty
dan-petty merged commit 421bd66 into main Sep 18, 2026
5 checks passed
@dan-petty
dan-petty deleted the release/v0.2.19 branch September 18, 2026 13:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Release pull requests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants