chore: release v0.1.0 #94

Merged
jwilger merged 1 commit from release-plz-2026-05-05T18-58-15Z into main 2026-05-05 12:18:07 -07:00
Owner

🤖 New release

  • ar-forgejo: 0.1.0
  • ar-llm: 0.1.0
  • ar-index: 0.1.0
  • ar-prompts: 0.1.0
  • ar-review: 0.1.0
  • ar-orchestrator: 0.1.0
  • ar-chat: 0.1.0
  • ar-gateway: 0.1.0
  • ar-cli: 0.1.0
Changelog

ar-forgejo

0.1.0 - 2026-05-05

Added

  • (cli,forgejo) list-webhooks and unregister-webhook
  • (gateway,forgejo,orchestrator) polling fallback for review-thread mentions
  • (forgejo,chat) post_issue_comment + ChatHandler with help/remember/forget
  • (forgejo,gateway,chat) wire issue_comment events through chat command parser
  • (forgejo) get_compare_diff for incremental review support
  • (forgejo) get_pull_request returns a PullRequestSummary
  • (forgejo,gateway) /version endpoint + Forgejo get_server_version
  • (forgejo) InitClient + create_access_token + create_webhook
  • (forgejo,gateway) implement Forgejo client and webhook intake
  • bootstrap workspace for Forgejo AI PR reviewer

Fixed

  • (forgejo) use web compare diff route (#73)
  • (gateway) handle bot review requests (#60)
  • (pre-merge) scan every marker occurrence in contains_todo_marker (#4)
  • (chat) skip re-review on closed/merged PRs
  • (forgejo) apply cap_for_error to remaining direct API call sites
  • (forgejo) cap Forgejo error response body at 1 KiB
  • (forgejo) mark auth header sensitive on the main Client
  • (forgejo) normalise InitClient base URL the same as main Client
  • (forgejo) support subpath-deployed Forgejo by normalising base URL
  • (forgejo) paginate list_pr_review_comments and list_webhooks
  • (forgejo) paginate list_changed_files for large PRs

Other

  • (toolchain) switch to rust nightly via flake-pinned snapshot
  • (ci) pin toolchain via flake.nix; CI runs nix flake check
  • cargo fmt sweep for rustfmt 1.8.0 stable style drift
  • per-crate READMEs for all 11 workspace crates

ar-llm

0.1.0 - 2026-05-05

Added

  • (llm) OpenAI-compatible provider and tier-based router
  • bootstrap workspace for Forgejo AI PR reviewer

Fixed

  • (embed) size embedding pass for local Ollama (#20) (#21)
  • (llm) cap LLM provider error response body at 1 KiB
  • (llm) normalise OpenAI provider base URL for subpath deploys

Other

  • (toolchain) switch to rust nightly via flake-pinned snapshot
  • (ci) pin toolchain via flake.nix; CI runs nix flake check
  • per-crate READMEs for all 11 workspace crates

ar-index

0.1.0 - 2026-05-05

Added

  • persist runtime state across restarts (closes #19) (#25)
  • (index) SqliteVectorStore — persistent embeddings without protoc
  • (index) SQLite-backed LearningsStore for cross-restart persistence
  • (index) tree-sitter symbol extraction for Go
  • (index) persistent learnings store (in-memory implementation)
  • (index) VectorStore trait + InMemoryVectorStore implementation
  • (index) symbol-level embedding pass via the LLM router
  • (index) co-change graph from git history
  • (index) index_workspace walks a clone and emits IndexedSymbols
  • (index) extract_symbols_for_path dispatches by file extension
  • (index) tree-sitter symbol extraction for TypeScript and TSX
  • (index) tree-sitter symbol extraction for Python
  • (index) tree-sitter symbol extraction for Rust (Milestone 2 RAG groundwork)
  • bootstrap workspace for Forgejo AI PR reviewer

Fixed

  • (embed) size embedding pass for local Ollama (#20) (#21)
  • (pre-merge) scan every marker occurrence in contains_todo_marker (#4)
  • (ci) satisfy rustfmt + clippy gates on M0 deliverables
  • (index) cap index_workspace walker depth at 64 (parity with verifier)
  • (index) batch embed_symbols calls to handle large repos

Other

  • (toolchain) switch to rust nightly via flake-pinned snapshot
  • (ci) pin toolchain via flake.nix; CI runs nix flake check
  • per-crate READMEs for all 11 workspace crates

ar-prompts

0.1.0 - 2026-05-05

Added

  • (review) suggest missing CI linters (#65)
  • (review) retire bundled linter execution (#54)
  • (review) custom natural-language pre-merge checks
  • (prompts,review) verification agent (Milestone 3 piece)
  • (prompts,review,cli) repo_context field for RAG-retrieved context
  • (prompts) LLM triage prompt + JSON schema + validation
  • (prompts,review,orchestrator) inject .auto_review.yaml guidelines into LLM prompt
  • (prompts,review) optional walkthrough + Mermaid diagram in review body
  • (prompts) inject static-analysis findings section into review prompt
  • (review) single-pass review pipeline with self-heal validation
  • (prompts) review JSON schema, validation, and prompt rendering
  • bootstrap workspace for Forgejo AI PR reviewer

Fixed

  • (review) drop pre-merge checks (#64)
  • (pre-merge) scan every marker occurrence in contains_todo_marker (#4)
  • (prompts) cap rendered linter findings at 100 with overflow summary
  • (prompts) cap guidelines (8 KiB) and repo_context (16 KiB) too
  • (prompts) cap PR title (512 B) and body (8 KiB) before LLM call

Other

  • (toolchain) switch to rust nightly via flake-pinned snapshot
  • (ci) pin toolchain via flake.nix; CI runs nix flake check
  • cargo fmt sweep for rustfmt 1.8.0 stable style drift
  • per-crate READMEs for all 11 workspace crates

ar-review

0.1.0 - 2026-05-05

Added

  • (review) suggest missing CI linters (#65)
  • (review) retire bundled linter execution (#54)
  • persist runtime state across restarts (closes #19) (#25)
  • (tools) languagetool HTTP runner (opt-in via LANGUAGETOOL_URL)
  • (review) defense-in-depth path guard before posting findings
  • (metrics) track verifier-dropped findings as a counter
  • (orchestrator) severity breakdown in commit-status description
  • (review) AR_SEVERITY_FLOOR for signal-to-noise tuning
  • (cli,review) validate-config --strict catches typo'd keys
  • (review) linter-only review mode
  • (review) custom natural-language pre-merge checks
  • (review) pre-merge checks alongside the LLM review
  • (cli,tools) list-linters subcommand + canonical catalogue
  • (cli) validate-config subcommand for .auto_review.yaml files
  • (tools,review) jsonlint runner. 44th bundled linter.
  • (tools,review) nilaway runner. 43rd bundled linter.
  • (tools,review) vint runner. 42nd bundled linter.
  • (tools,review) shfmt runner. 41st bundled linter.
  • (tools,review) helm runner. 40th bundled linter.
  • (tools,review) prettier runner. 39th bundled linter.
  • (tools,review) htmlhint runner. 38th bundled linter.
  • (tools,review) pylint runner. 37th bundled linter.
  • (tools,review) ktlint runner. 36th bundled linter.
  • (tools,review) stylelint runner. 35th bundled linter.
  • (tools,review) staticcheck runner. 34th bundled linter.
  • (tools,review) tflint runner. 33rd bundled linter.
  • (tools,review) ansible-lint runner. 32nd bundled linter.
  • (tools,review) gosec runner. 31st bundled linter.
  • (tools,review) pmd runner. 30th bundled linter.
  • (tools,review) cppcheck runner. 29th bundled linter.
  • (tools,review) typos runner. 28th bundled linter.
  • (tools,review) buf runner. 27th bundled linter.
  • (tools,review) swiftlint runner. 26th bundled linter.
  • (tools,review) vale runner. 25th bundled linter.
  • (tools,review) bandit runner. 24th bundled linter.
  • (tools,review) mypy runner. 23rd bundled linter.
  • (tools,review) kubeconform runner. 22nd bundled linter.
  • (tools,review) dotenv-linter runner. 21st bundled linter.
  • (tools,review) checkov runner. 20th bundled linter.
  • (tools,review) taplo runner. 19th bundled linter.
  • (tools,review) oxlint runner. 18th bundled linter.
  • (orchestrator,review) wire agentic verifier behind AR_AGENTIC_VERIFIER
  • (review) agentic verifier with sandboxed read_file/search tools
  • (tools,review) phpstan runner. 17th bundled linter.
  • (tools,review) biome runner. 16th bundled linter.
  • (tools,review) ast-grep runner. 15th bundled linter.
  • (tools,review) sqlfluff runner. 14th bundled linter.
  • (tools,review) osv-scanner runner. 13th bundled linter.
  • (orchestrator,gateway) production sandbox via AR_SANDBOX_IMAGE
  • (orchestrator,gateway) share LearningsStore between chat and RAG
  • (tools,review) trivy runner. 12th bundled linter.
  • (tools,review) rubocop runner. 11th bundled linter.
  • (tools,review) golangci-lint runner. 10th bundled linter.
  • (prompts,review) verification agent (Milestone 3 piece)
  • (tools,review) semgrep runner (multi-language SAST). 9th linter.
  • (orchestrator,review) incremental diff via Client::get_compare_diff
  • (review) build_review_context integrates the RAG layer end-to-end
  • (review) format_repo_context renders RAG retrieval as prompt markdown
  • (prompts,review,cli) repo_context field for RAG-retrieved context
  • (review) triage_files_with_llm wires the cheap-tier classifier
  • (tools,review) yamllint runner for general YAML
  • (tools,review) actionlint runner for workflow YAML
  • (prompts,review,orchestrator) inject .auto_review.yaml guidelines into LLM prompt
  • (review,orchestrator) wire ignored_paths through review pipeline
  • (review) glob-based ignored_paths utilities for diff/file filtering
  • (orchestrator) honor .auto_review.yaml enabled + disabled_tools
  • (review) repo-level .auto_review.yaml config loader
  • (review) cap PR diff at 100 KiB before sending to LLM
  • (tools,review) gitleaks runner for committed-secret detection
  • (prompts,review) optional walkthrough + Mermaid diagram in review body
  • (review,orchestrator) heuristic triage skips lockfile-only PRs
  • (tools,review) eslint runner + routing for JS/TS extensions
  • (orchestrator,review) wire clone+lint into the review pipeline
  • (review) route changed files to language-specific linters
  • (review) thread linter findings through review_pull_request
  • (review) workspace prep with shallow clone + auth-stripping logs
  • (prompts) inject static-analysis findings section into review prompt
  • (review) single-pass review pipeline with self-heal validation
  • bootstrap workspace for Forgejo AI PR reviewer

Fixed

  • (review) rescope normal sandbox runtime (#67)
  • (review) drop pre-merge checks (#64)
  • (review) approve clean re-reviews (#53)
  • (review) show linter run summaries in reviews (#40)
  • (review) request changes for failed pre-merge checks (#38)
  • (review) detect inline Rust tests in pre-merge checks (#36)
  • (rag) wire diff embed through EmbedConfig (closes #26) (#27)
  • (pre-merge) scan every marker occurrence in contains_todo_marker (#4)
  • (ignored) extract_diff_path handles git's quoted-path form too
  • (llm) set temperature=0 on every deterministic LLM call
  • (review) cap each finding's message at 4 KiB before posting
  • (review) cap rendered review body at 32 KiB before posting
  • (triage) pure-removal PRs are not skippable
  • (review) verifier_dropped now excludes path-guard drops
  • (pre_merge_llm) cap embedded diff at 40 KiB before cheap-tier call
  • (agentic_verify) cap initial diff at 40 KiB (parity with simple verifier)
  • (verify) cap embedded diff at 40 KiB before cheap-tier call
  • (context) cap diff at 32 KiB before embedding for RAG query
  • (triage) cap embedded diff at 40 KiB before cheap-tier call
  • (workspace_tools) cap walk_dir recursion depth at 64 levels
  • (workspace_tools) cap scan_file/read_file at 1 MiB per file
  • (config) cap .auto_review.yaml at 64 KiB before read
  • (workspace) reject non-hex head_sha before reaching git argv
  • (workspace_tools) skip symlinks during recursive search

Other

  • (toolchain) switch to rust nightly via flake-pinned snapshot
  • (ci) pin toolchain via flake.nix; CI runs nix flake check
  • (context) use cap_for_prompt helper for embed query cap too
  • (diff) consolidate cheap-tier diff caps into one helper
  • (review) embed the diff once per RAG context build
  • cargo fmt sweep for rustfmt 1.8.0 stable style drift
  • (config) example yaml + contract test for RepoConfig drift
  • (review) apply severity floor BEFORE the verifier
  • per-crate READMEs for all 11 workspace crates
  • (red-team) pin threat-model mitigations as CI tests
  • (red-team) adversarial-input coverage for workspace tools + sandbox argv
  • (tools,review) route every linter spawn through ar_sandbox::Sandbox
  • (review) bundle review_pull_request inputs into ReviewArgs struct

ar-orchestrator

0.1.0 - 2026-05-05

Added

  • (actions) add Forgejo CI action and quiet compare fallback (#69)
  • (review) retire bundled linter execution (#54)
  • persist runtime state across restarts (closes #19) (#25)
  • (metrics) track queue waits on the concurrency cap
  • (orchestrator) AR_REVIEW_CONCURRENCY caps in-flight reviews
  • (metrics) track verifier-dropped findings as a counter
  • (orchestrator) severity breakdown in commit-status description
  • (cli,orchestrator) purge-history for long-running deploys
  • (orchestrator) SqliteReviewHistory for restart-survival
  • (review) AR_SEVERITY_FLOOR for signal-to-noise tuning
  • (review) linter-only review mode
  • (review) custom natural-language pre-merge checks
  • (metrics) review-pipeline outcome counters via ReviewObserver
  • (gateway,forgejo,orchestrator) polling fallback for review-thread mentions
  • (orchestrator,review) wire agentic verifier behind AR_AGENTIC_VERIFIER
  • (orchestrator,gateway) production sandbox via AR_SANDBOX_IMAGE
  • (orchestrator,chat,gateway) @auto_review re-review actually re-reviews
  • (orchestrator,gateway) share LearningsStore between chat and RAG
  • (orchestrator,review) incremental diff via Client::get_compare_diff
  • (orchestrator) SpawningDispatcher tracks per-PR review history
  • (orchestrator) wire LLM-driven file triage into the lint phase
  • (orchestrator) wire build_review_context into the review pipeline
  • (orchestrator) per-PR review history for incremental reviews
  • (prompts,review,orchestrator) inject .auto_review.yaml guidelines into LLM prompt
  • (review,orchestrator) wire ignored_paths through review pipeline
  • (orchestrator) honor .auto_review.yaml enabled + disabled_tools
  • (review,orchestrator) heuristic triage skips lockfile-only PRs
  • (orchestrator,review) wire clone+lint into the review pipeline
  • (review) thread linter findings through review_pull_request
  • (review) workspace prep with shallow clone + auth-stripping logs
  • (orchestrator,gateway) wire webhook intake to review pipeline
  • bootstrap workspace for Forgejo AI PR reviewer

Fixed

  • (forgejo) use web compare diff route (#73)
  • (gateway) gate semantic reviews behind CI (#72)
  • (review) drop pre-merge checks (#64)
  • (review) show linter run summaries in reviews (#40)
  • (post) default AR_SEVERITY_FLOOR to warning (#6) (#17)
  • (ci) satisfy rustfmt + clippy gates on M0 deliverables
  • (orchestrator) only record review history on successful reviews
  • (orchestrator) cap commit-status description at 240 chars
  • (orchestrator) defer Started until after early-skip checks pass
  • (orchestrator,metrics) bucket review-task panics so counts add up
  • (orchestrator) log when agentic verifier silently downgrades
  • (orchestrator) post a crash status when the review task panics
  • (orchestrator) log panics and cancellations from spawned review tasks

Other

  • (toolchain) switch to rust nightly via flake-pinned snapshot
  • (ci) pin toolchain via flake.nix; CI runs nix flake check
  • (orchestrator) synthetic e2e drives webhook-to-review in-process
  • (orchestrator) share raw_diff between lint phase and pipeline
  • (orchestrator) fetch list_changed_files once, share with lint phase
  • cargo fmt sweep for rustfmt 1.8.0 stable style drift
  • per-crate READMEs for all 11 workspace crates
  • (review) bundle review_pull_request inputs into ReviewArgs struct

ar-chat

0.1.0 - 2026-05-05

Added

  • (chat) @auto_review tests scaffolds unit tests for new items
  • (chat) @auto_review docstring generates docstrings as inline patches
  • (chat) @auto_review autofix posts inline suggestion patches
  • (chat) freeform @auto_review questions answered by the cheap-tier LLM
  • (orchestrator,chat,gateway) @auto_review re-review actually re-reviews
  • (forgejo,chat) post_issue_comment + ChatHandler with help/remember/forget
  • (chat) @auto_review chat command parser (Milestone 4 groundwork)
  • bootstrap workspace for Forgejo AI PR reviewer

Fixed

  • (gateway) gate semantic reviews behind CI (#72)
  • (review) rescope normal sandbox runtime (#67)
  • (chat) paths_in_diff handles git's quoted-path form
  • (llm) set temperature=0 on every deterministic LLM call
  • (chat) test scaffolds distinguishes "no coverage needed" from malformed
  • (chat) autofix distinguishes "no patches" from "all hallucinated"
  • (chat) skip autofix/docstrings/tests on closed PRs (parity with re_review)
  • (chat) skip re-review on closed/merged PRs
  • (chat) case-insensitive mention parsing matches Forgejo's UI
  • (chat) cap test-scaffold source at 4 KiB before posting
  • (chat) cap autofix patch reason (1 KiB) and replacement (4 KiB)
  • (chat) cap freeform question text at 4 KiB before LLM call
  • (chat) cap remember text at 4 KiB before embedding/storing
  • (chat) grow test-scaffold fence past internal backtick runs
  • (chat) grow autofix suggestion fence past internal backtick runs
  • (chat) cap freeform LLM reply size before posting to Forgejo
  • (chat) autofix/docstrings drops patches outside the PR's diff

Other

  • (toolchain) switch to rust nightly via flake-pinned snapshot
  • (ci) pin toolchain via flake.nix; CI runs nix flake check
  • (chat) round-trip HELP_TEXT keywords through the parser
  • (chat) contract test linking HELP_TEXT to ChatCommand variants
  • per-crate READMEs for all 11 workspace crates

ar-gateway

0.1.0 - 2026-05-05

Added

  • (actions) wire CI semantic review job (#70)
  • (actions) add CI review gateway action (#68)
  • (review) retire bundled linter execution (#54)
  • (gateway) add CI-triggered review dispatch (#48)
  • persist runtime state across restarts (closes #19) (#25)
  • (sandbox) support docker as OCI runtime alongside podman
  • (gateway) probe git at startup, log result
  • (gateway) warn at startup when WEBHOOK_SECRET is too short
  • (metrics) track queue waits on the concurrency cap
  • (orchestrator) AR_REVIEW_CONCURRENCY caps in-flight reviews
  • (metrics) track verifier-dropped findings as a counter
  • (gateway) graceful shutdown on SIGTERM/SIGINT
  • (orchestrator) SqliteReviewHistory for restart-survival
  • (gateway) webhook delivery dedup via X-Forgejo-Delivery
  • (gateway) webhook rate limiter (T7 mitigation)
  • (gateway) GET /info runtime-config snapshot
  • (metrics) poller observability counters
  • (gateway) /readyz endpoint distinct from /healthz
  • (metrics) proper Prometheus histogram for review duration
  • (metrics) review-pipeline outcome counters via ReviewObserver
  • (gateway) /metrics endpoint with Prometheus-format counters
  • (gateway,forgejo,orchestrator) polling fallback for review-thread mentions
  • (orchestrator,gateway) production sandbox via AR_SANDBOX_IMAGE
  • (gateway) persist learnings to SQLite when AR_LEARNINGS_DB is set
  • (orchestrator,chat,gateway) @auto_review re-review actually re-reviews
  • (orchestrator,gateway) share LearningsStore between chat and RAG
  • (gateway) wire ChatHandler end-to-end (Milestone 4 chat live)
  • (forgejo,gateway,chat) wire issue_comment events through chat command parser
  • (gateway) expose Embedding + Cheap tier env vars; enables RAG end-to-end
  • (forgejo,gateway) /version endpoint + Forgejo get_server_version
  • (orchestrator,review) wire clone+lint into the review pipeline
  • (orchestrator,gateway) wire webhook intake to review pipeline
  • (forgejo,gateway) implement Forgejo client and webhook intake
  • bootstrap workspace for Forgejo AI PR reviewer

Fixed

  • (gateway) gate semantic reviews behind CI (#72)
  • (review) rescope normal sandbox runtime (#67)
  • (gateway) deduplicate chat mentions (#62)
  • (gateway) handle bot review requests (#60)
  • (gateway) separate Forgejo token env (#61)
  • (embed) size embedding pass for local Ollama (#20) (#21)
  • (pre-merge) scan every marker occurrence in contains_todo_marker (#4)
  • (poller) Delay missed-tick behaviour avoids catch-up bursts
  • (poller) prune cursor entries for purged PRs each cycle
  • (webhook) skip non-Created issue_comment actions
  • (poller) case-insensitive mention pre-filter (parity with parser)
  • (gateway) warn when env-var integer parses fail (don't silently default)
  • (gateway) warn when only one half of rate-limit env vars is set
  • (orchestrator,metrics) bucket review-task panics so counts add up
  • (poller) case-insensitive self-loop match (matches webhook handler)
  • (gateway) apply read_non_empty_env to remaining sandbox/db checks
  • (gateway) treat empty LLM_*_MODEL env vars as unset
  • (gateway) validate AR_BOT_LOGIN/NAME at startup, dedupe reads
  • (gateway) bail on startup when LLM_REASONING_MODEL is empty
  • (poller) first-sight seeding must not dispatch historical mentions
  • (metrics) unknown failure classes no longer misbucket as unhealable
  • (metrics) unknown skip reasons no longer misbucket as disabled
  • (gateway) honour AR_BOT_LOGIN/AR_BOT_NAME in webhook chat path

Other

  • (toolchain) switch to rust nightly via flake-pinned snapshot
  • (ci) pin toolchain via flake.nix; CI runs nix flake check
  • (metrics) contract test pinning every counter exposed at /metrics
  • cargo fmt sweep for rustfmt 1.8.0 stable style drift
  • per-crate READMEs for all 11 workspace crates
  • drop-in Grafana dashboard
  • drop-in Prometheus rules pack

ar-cli

0.1.0 - 2026-05-05

Added

  • (review) retire bundled linter execution (#54)
  • persist runtime state across restarts (closes #19) (#25)
  • (doctor) probe for git in PATH
  • (bench) expand_fixture_paths now recurses into subdirectories
  • (cli) explain-routing for understanding linter dispatch
  • (cli,orchestrator) purge-history for long-running deploys
  • (cli) list-learnings + forget-learning admin commands
  • (cli) reset-pr subcommand for ad-hoc history clears
  • (orchestrator) SqliteReviewHistory for restart-survival
  • (cli,review) validate-config --strict catches typo'd keys
  • (cli) status subcommand for live gateway snapshot
  • (bench) --baseline FILE comparison + --fail-on-regression
  • (cli,forgejo) list-webhooks and unregister-webhook
  • (cli) doctor verifies configured LLM model names are loaded
  • (cli) doctor subcommand for deployment health checks
  • (cli) test-webhook subcommand for deploy smoke-tests
  • (cli,tools) list-linters subcommand + canonical catalogue
  • (metrics) review-pipeline outcome counters via ReviewObserver
  • (cli) validate-config subcommand for .auto_review.yaml files
  • (cli) bench harness scores precision/recall against labelled fixtures
  • (cli) bench subcommand for fixture-replay regression tracking
  • (orchestrator,gateway) production sandbox via AR_SANDBOX_IMAGE
  • (orchestrator,chat,gateway) @auto_review re-review actually re-reviews
  • (orchestrator,gateway) share LearningsStore between chat and RAG
  • (orchestrator) SpawningDispatcher tracks per-PR review history
  • (prompts,review,cli) repo_context field for RAG-retrieved context
  • (cli) review-once --dry-run prints the rendered LLM prompt
  • (cli) auto_review review-once for one-shot demos / debugging
  • (cli) auto_review init + register-webhook subcommands
  • bootstrap workspace for Forgejo AI PR reviewer

Fixed

  • (gateway) gate semantic reviews behind CI (#72)
  • (review) rescope normal sandbox runtime (#67)
  • (bench) bail on empty LLM_BASE_URL or LLM_REASONING_MODEL
  • (cli) reject empty/weak webhook secrets at registration time
  • (bench) success-rate drop now triggers --fail-on-regression

Other

  • (toolchain) switch to rust nightly via flake-pinned snapshot
  • (ci) pin toolchain via flake.nix; CI runs nix flake check
  • (cli) init's next-step hint suggests openssl rand -hex 32
  • cargo fmt sweep for rustfmt 1.8.0 stable style drift
  • (cli) README contract test catches subcommand drift
  • per-crate READMEs for all 11 workspace crates
  • expand labelled corpus from 1 to 5 fixtures
  • (bench) assert shipped bench/fixtures parse against the Fixture struct
  • (changelog,cli) freshen CHANGELOG; correct ar-cli crate description


This PR was generated with release-plz.

## 🤖 New release * `ar-forgejo`: 0.1.0 * `ar-llm`: 0.1.0 * `ar-index`: 0.1.0 * `ar-prompts`: 0.1.0 * `ar-review`: 0.1.0 * `ar-orchestrator`: 0.1.0 * `ar-chat`: 0.1.0 * `ar-gateway`: 0.1.0 * `ar-cli`: 0.1.0 <details><summary><i><b>Changelog</b></i></summary><p> ## `ar-forgejo` <blockquote> ## [0.1.0](https://git.johnwilger.com/jwilger/auto_review/releases/tag/ar-forgejo-v0.1.0) - 2026-05-05 ### Added - *(cli,forgejo)* list-webhooks and unregister-webhook - *(gateway,forgejo,orchestrator)* polling fallback for review-thread mentions - *(forgejo,chat)* post_issue_comment + ChatHandler with help/remember/forget - *(forgejo,gateway,chat)* wire issue_comment events through chat command parser - *(forgejo)* get_compare_diff for incremental review support - *(forgejo)* get_pull_request returns a PullRequestSummary - *(forgejo,gateway)* /version endpoint + Forgejo get_server_version - *(forgejo)* InitClient + create_access_token + create_webhook - *(forgejo,gateway)* implement Forgejo client and webhook intake - bootstrap workspace for Forgejo AI PR reviewer ### Fixed - *(forgejo)* use web compare diff route ([#73](https://git.johnwilger.com/jwilger/auto_review/pulls/73)) - *(gateway)* handle bot review requests ([#60](https://git.johnwilger.com/jwilger/auto_review/pulls/60)) - *(pre-merge)* scan every marker occurrence in contains_todo_marker ([#4](https://git.johnwilger.com/jwilger/auto_review/pulls/4)) - *(chat)* skip re-review on closed/merged PRs - *(forgejo)* apply cap_for_error to remaining direct API call sites - *(forgejo)* cap Forgejo error response body at 1 KiB - *(forgejo)* mark auth header sensitive on the main Client - *(forgejo)* normalise InitClient base URL the same as main Client - *(forgejo)* support subpath-deployed Forgejo by normalising base URL - *(forgejo)* paginate list_pr_review_comments and list_webhooks - *(forgejo)* paginate list_changed_files for large PRs ### Other - *(toolchain)* switch to rust nightly via flake-pinned snapshot - *(ci)* pin toolchain via flake.nix; CI runs nix flake check - cargo fmt sweep for rustfmt 1.8.0 stable style drift - per-crate READMEs for all 11 workspace crates </blockquote> ## `ar-llm` <blockquote> ## [0.1.0](https://git.johnwilger.com/jwilger/auto_review/releases/tag/ar-llm-v0.1.0) - 2026-05-05 ### Added - *(llm)* OpenAI-compatible provider and tier-based router - bootstrap workspace for Forgejo AI PR reviewer ### Fixed - *(embed)* size embedding pass for local Ollama ([#20](https://git.johnwilger.com/jwilger/auto_review/pulls/20)) ([#21](https://git.johnwilger.com/jwilger/auto_review/pulls/21)) - *(llm)* cap LLM provider error response body at 1 KiB - *(llm)* normalise OpenAI provider base URL for subpath deploys ### Other - *(toolchain)* switch to rust nightly via flake-pinned snapshot - *(ci)* pin toolchain via flake.nix; CI runs nix flake check - per-crate READMEs for all 11 workspace crates </blockquote> ## `ar-index` <blockquote> ## [0.1.0](https://git.johnwilger.com/jwilger/auto_review/releases/tag/ar-index-v0.1.0) - 2026-05-05 ### Added - persist runtime state across restarts (closes #19) ([#25](https://git.johnwilger.com/jwilger/auto_review/pulls/25)) - *(index)* SqliteVectorStore — persistent embeddings without protoc - *(index)* SQLite-backed LearningsStore for cross-restart persistence - *(index)* tree-sitter symbol extraction for Go - *(index)* persistent learnings store (in-memory implementation) - *(index)* VectorStore trait + InMemoryVectorStore implementation - *(index)* symbol-level embedding pass via the LLM router - *(index)* co-change graph from git history - *(index)* index_workspace walks a clone and emits IndexedSymbols - *(index)* extract_symbols_for_path dispatches by file extension - *(index)* tree-sitter symbol extraction for TypeScript and TSX - *(index)* tree-sitter symbol extraction for Python - *(index)* tree-sitter symbol extraction for Rust (Milestone 2 RAG groundwork) - bootstrap workspace for Forgejo AI PR reviewer ### Fixed - *(embed)* size embedding pass for local Ollama ([#20](https://git.johnwilger.com/jwilger/auto_review/pulls/20)) ([#21](https://git.johnwilger.com/jwilger/auto_review/pulls/21)) - *(pre-merge)* scan every marker occurrence in contains_todo_marker ([#4](https://git.johnwilger.com/jwilger/auto_review/pulls/4)) - *(ci)* satisfy rustfmt + clippy gates on M0 deliverables - *(index)* cap index_workspace walker depth at 64 (parity with verifier) - *(index)* batch embed_symbols calls to handle large repos ### Other - *(toolchain)* switch to rust nightly via flake-pinned snapshot - *(ci)* pin toolchain via flake.nix; CI runs nix flake check - per-crate READMEs for all 11 workspace crates </blockquote> ## `ar-prompts` <blockquote> ## [0.1.0](https://git.johnwilger.com/jwilger/auto_review/releases/tag/ar-prompts-v0.1.0) - 2026-05-05 ### Added - *(review)* suggest missing CI linters ([#65](https://git.johnwilger.com/jwilger/auto_review/pulls/65)) - *(review)* retire bundled linter execution ([#54](https://git.johnwilger.com/jwilger/auto_review/pulls/54)) - *(review)* custom natural-language pre-merge checks - *(prompts,review)* verification agent (Milestone 3 piece) - *(prompts,review,cli)* repo_context field for RAG-retrieved context - *(prompts)* LLM triage prompt + JSON schema + validation - *(prompts,review,orchestrator)* inject .auto_review.yaml guidelines into LLM prompt - *(prompts,review)* optional walkthrough + Mermaid diagram in review body - *(prompts)* inject static-analysis findings section into review prompt - *(review)* single-pass review pipeline with self-heal validation - *(prompts)* review JSON schema, validation, and prompt rendering - bootstrap workspace for Forgejo AI PR reviewer ### Fixed - *(review)* drop pre-merge checks ([#64](https://git.johnwilger.com/jwilger/auto_review/pulls/64)) - *(pre-merge)* scan every marker occurrence in contains_todo_marker ([#4](https://git.johnwilger.com/jwilger/auto_review/pulls/4)) - *(prompts)* cap rendered linter findings at 100 with overflow summary - *(prompts)* cap guidelines (8 KiB) and repo_context (16 KiB) too - *(prompts)* cap PR title (512 B) and body (8 KiB) before LLM call ### Other - *(toolchain)* switch to rust nightly via flake-pinned snapshot - *(ci)* pin toolchain via flake.nix; CI runs nix flake check - cargo fmt sweep for rustfmt 1.8.0 stable style drift - per-crate READMEs for all 11 workspace crates </blockquote> ## `ar-review` <blockquote> ## [0.1.0](https://git.johnwilger.com/jwilger/auto_review/releases/tag/ar-review-v0.1.0) - 2026-05-05 ### Added - *(review)* suggest missing CI linters ([#65](https://git.johnwilger.com/jwilger/auto_review/pulls/65)) - *(review)* retire bundled linter execution ([#54](https://git.johnwilger.com/jwilger/auto_review/pulls/54)) - persist runtime state across restarts (closes #19) ([#25](https://git.johnwilger.com/jwilger/auto_review/pulls/25)) - *(tools)* languagetool HTTP runner (opt-in via LANGUAGETOOL_URL) - *(review)* defense-in-depth path guard before posting findings - *(metrics)* track verifier-dropped findings as a counter - *(orchestrator)* severity breakdown in commit-status description - *(review)* AR_SEVERITY_FLOOR for signal-to-noise tuning - *(cli,review)* validate-config --strict catches typo'd keys - *(review)* linter-only review mode - *(review)* custom natural-language pre-merge checks - *(review)* pre-merge checks alongside the LLM review - *(cli,tools)* list-linters subcommand + canonical catalogue - *(cli)* validate-config subcommand for .auto_review.yaml files - *(tools,review)* jsonlint runner. 44th bundled linter. - *(tools,review)* nilaway runner. 43rd bundled linter. - *(tools,review)* vint runner. 42nd bundled linter. - *(tools,review)* shfmt runner. 41st bundled linter. - *(tools,review)* helm runner. 40th bundled linter. - *(tools,review)* prettier runner. 39th bundled linter. - *(tools,review)* htmlhint runner. 38th bundled linter. - *(tools,review)* pylint runner. 37th bundled linter. - *(tools,review)* ktlint runner. 36th bundled linter. - *(tools,review)* stylelint runner. 35th bundled linter. - *(tools,review)* staticcheck runner. 34th bundled linter. - *(tools,review)* tflint runner. 33rd bundled linter. - *(tools,review)* ansible-lint runner. 32nd bundled linter. - *(tools,review)* gosec runner. 31st bundled linter. - *(tools,review)* pmd runner. 30th bundled linter. - *(tools,review)* cppcheck runner. 29th bundled linter. - *(tools,review)* typos runner. 28th bundled linter. - *(tools,review)* buf runner. 27th bundled linter. - *(tools,review)* swiftlint runner. 26th bundled linter. - *(tools,review)* vale runner. 25th bundled linter. - *(tools,review)* bandit runner. 24th bundled linter. - *(tools,review)* mypy runner. 23rd bundled linter. - *(tools,review)* kubeconform runner. 22nd bundled linter. - *(tools,review)* dotenv-linter runner. 21st bundled linter. - *(tools,review)* checkov runner. 20th bundled linter. - *(tools,review)* taplo runner. 19th bundled linter. - *(tools,review)* oxlint runner. 18th bundled linter. - *(orchestrator,review)* wire agentic verifier behind AR_AGENTIC_VERIFIER - *(review)* agentic verifier with sandboxed read_file/search tools - *(tools,review)* phpstan runner. 17th bundled linter. - *(tools,review)* biome runner. 16th bundled linter. - *(tools,review)* ast-grep runner. 15th bundled linter. - *(tools,review)* sqlfluff runner. 14th bundled linter. - *(tools,review)* osv-scanner runner. 13th bundled linter. - *(orchestrator,gateway)* production sandbox via AR_SANDBOX_IMAGE - *(orchestrator,gateway)* share LearningsStore between chat and RAG - *(tools,review)* trivy runner. 12th bundled linter. - *(tools,review)* rubocop runner. 11th bundled linter. - *(tools,review)* golangci-lint runner. 10th bundled linter. - *(prompts,review)* verification agent (Milestone 3 piece) - *(tools,review)* semgrep runner (multi-language SAST). 9th linter. - *(orchestrator,review)* incremental diff via Client::get_compare_diff - *(review)* build_review_context integrates the RAG layer end-to-end - *(review)* format_repo_context renders RAG retrieval as prompt markdown - *(prompts,review,cli)* repo_context field for RAG-retrieved context - *(review)* triage_files_with_llm wires the cheap-tier classifier - *(tools,review)* yamllint runner for general YAML - *(tools,review)* actionlint runner for workflow YAML - *(prompts,review,orchestrator)* inject .auto_review.yaml guidelines into LLM prompt - *(review,orchestrator)* wire ignored_paths through review pipeline - *(review)* glob-based ignored_paths utilities for diff/file filtering - *(orchestrator)* honor .auto_review.yaml enabled + disabled_tools - *(review)* repo-level .auto_review.yaml config loader - *(review)* cap PR diff at 100 KiB before sending to LLM - *(tools,review)* gitleaks runner for committed-secret detection - *(prompts,review)* optional walkthrough + Mermaid diagram in review body - *(review,orchestrator)* heuristic triage skips lockfile-only PRs - *(tools,review)* eslint runner + routing for JS/TS extensions - *(orchestrator,review)* wire clone+lint into the review pipeline - *(review)* route changed files to language-specific linters - *(review)* thread linter findings through review_pull_request - *(review)* workspace prep with shallow clone + auth-stripping logs - *(prompts)* inject static-analysis findings section into review prompt - *(review)* single-pass review pipeline with self-heal validation - bootstrap workspace for Forgejo AI PR reviewer ### Fixed - *(review)* rescope normal sandbox runtime ([#67](https://git.johnwilger.com/jwilger/auto_review/pulls/67)) - *(review)* drop pre-merge checks ([#64](https://git.johnwilger.com/jwilger/auto_review/pulls/64)) - *(review)* approve clean re-reviews ([#53](https://git.johnwilger.com/jwilger/auto_review/pulls/53)) - *(review)* show linter run summaries in reviews ([#40](https://git.johnwilger.com/jwilger/auto_review/pulls/40)) - *(review)* request changes for failed pre-merge checks ([#38](https://git.johnwilger.com/jwilger/auto_review/pulls/38)) - *(review)* detect inline Rust tests in pre-merge checks ([#36](https://git.johnwilger.com/jwilger/auto_review/pulls/36)) - *(rag)* wire diff embed through EmbedConfig (closes #26) ([#27](https://git.johnwilger.com/jwilger/auto_review/pulls/27)) - *(pre-merge)* scan every marker occurrence in contains_todo_marker ([#4](https://git.johnwilger.com/jwilger/auto_review/pulls/4)) - *(ignored)* extract_diff_path handles git's quoted-path form too - *(llm)* set temperature=0 on every deterministic LLM call - *(review)* cap each finding's message at 4 KiB before posting - *(review)* cap rendered review body at 32 KiB before posting - *(triage)* pure-removal PRs are not skippable - *(review)* verifier_dropped now excludes path-guard drops - *(pre_merge_llm)* cap embedded diff at 40 KiB before cheap-tier call - *(agentic_verify)* cap initial diff at 40 KiB (parity with simple verifier) - *(verify)* cap embedded diff at 40 KiB before cheap-tier call - *(context)* cap diff at 32 KiB before embedding for RAG query - *(triage)* cap embedded diff at 40 KiB before cheap-tier call - *(workspace_tools)* cap walk_dir recursion depth at 64 levels - *(workspace_tools)* cap scan_file/read_file at 1 MiB per file - *(config)* cap .auto_review.yaml at 64 KiB before read - *(workspace)* reject non-hex head_sha before reaching git argv - *(workspace_tools)* skip symlinks during recursive search ### Other - *(toolchain)* switch to rust nightly via flake-pinned snapshot - *(ci)* pin toolchain via flake.nix; CI runs nix flake check - *(context)* use cap_for_prompt helper for embed query cap too - *(diff)* consolidate cheap-tier diff caps into one helper - *(review)* embed the diff once per RAG context build - cargo fmt sweep for rustfmt 1.8.0 stable style drift - *(config)* example yaml + contract test for RepoConfig drift - *(review)* apply severity floor BEFORE the verifier - per-crate READMEs for all 11 workspace crates - *(red-team)* pin threat-model mitigations as CI tests - *(red-team)* adversarial-input coverage for workspace tools + sandbox argv - *(tools,review)* route every linter spawn through ar_sandbox::Sandbox - *(review)* bundle review_pull_request inputs into ReviewArgs struct </blockquote> ## `ar-orchestrator` <blockquote> ## [0.1.0](https://git.johnwilger.com/jwilger/auto_review/releases/tag/ar-orchestrator-v0.1.0) - 2026-05-05 ### Added - *(actions)* add Forgejo CI action and quiet compare fallback ([#69](https://git.johnwilger.com/jwilger/auto_review/pulls/69)) - *(review)* retire bundled linter execution ([#54](https://git.johnwilger.com/jwilger/auto_review/pulls/54)) - persist runtime state across restarts (closes #19) ([#25](https://git.johnwilger.com/jwilger/auto_review/pulls/25)) - *(metrics)* track queue waits on the concurrency cap - *(orchestrator)* AR_REVIEW_CONCURRENCY caps in-flight reviews - *(metrics)* track verifier-dropped findings as a counter - *(orchestrator)* severity breakdown in commit-status description - *(cli,orchestrator)* purge-history for long-running deploys - *(orchestrator)* SqliteReviewHistory for restart-survival - *(review)* AR_SEVERITY_FLOOR for signal-to-noise tuning - *(review)* linter-only review mode - *(review)* custom natural-language pre-merge checks - *(metrics)* review-pipeline outcome counters via ReviewObserver - *(gateway,forgejo,orchestrator)* polling fallback for review-thread mentions - *(orchestrator,review)* wire agentic verifier behind AR_AGENTIC_VERIFIER - *(orchestrator,gateway)* production sandbox via AR_SANDBOX_IMAGE - *(orchestrator,chat,gateway)* @auto_review re-review actually re-reviews - *(orchestrator,gateway)* share LearningsStore between chat and RAG - *(orchestrator,review)* incremental diff via Client::get_compare_diff - *(orchestrator)* SpawningDispatcher tracks per-PR review history - *(orchestrator)* wire LLM-driven file triage into the lint phase - *(orchestrator)* wire build_review_context into the review pipeline - *(orchestrator)* per-PR review history for incremental reviews - *(prompts,review,orchestrator)* inject .auto_review.yaml guidelines into LLM prompt - *(review,orchestrator)* wire ignored_paths through review pipeline - *(orchestrator)* honor .auto_review.yaml enabled + disabled_tools - *(review,orchestrator)* heuristic triage skips lockfile-only PRs - *(orchestrator,review)* wire clone+lint into the review pipeline - *(review)* thread linter findings through review_pull_request - *(review)* workspace prep with shallow clone + auth-stripping logs - *(orchestrator,gateway)* wire webhook intake to review pipeline - bootstrap workspace for Forgejo AI PR reviewer ### Fixed - *(forgejo)* use web compare diff route ([#73](https://git.johnwilger.com/jwilger/auto_review/pulls/73)) - *(gateway)* gate semantic reviews behind CI ([#72](https://git.johnwilger.com/jwilger/auto_review/pulls/72)) - *(review)* drop pre-merge checks ([#64](https://git.johnwilger.com/jwilger/auto_review/pulls/64)) - *(review)* show linter run summaries in reviews ([#40](https://git.johnwilger.com/jwilger/auto_review/pulls/40)) - *(post)* default AR_SEVERITY_FLOOR to warning ([#6](https://git.johnwilger.com/jwilger/auto_review/pulls/6)) ([#17](https://git.johnwilger.com/jwilger/auto_review/pulls/17)) - *(ci)* satisfy rustfmt + clippy gates on M0 deliverables - *(orchestrator)* only record review history on successful reviews - *(orchestrator)* cap commit-status description at 240 chars - *(orchestrator)* defer Started until after early-skip checks pass - *(orchestrator,metrics)* bucket review-task panics so counts add up - *(orchestrator)* log when agentic verifier silently downgrades - *(orchestrator)* post a crash status when the review task panics - *(orchestrator)* log panics and cancellations from spawned review tasks ### Other - *(toolchain)* switch to rust nightly via flake-pinned snapshot - *(ci)* pin toolchain via flake.nix; CI runs nix flake check - *(orchestrator)* synthetic e2e drives webhook-to-review in-process - *(orchestrator)* share raw_diff between lint phase and pipeline - *(orchestrator)* fetch list_changed_files once, share with lint phase - cargo fmt sweep for rustfmt 1.8.0 stable style drift - per-crate READMEs for all 11 workspace crates - *(review)* bundle review_pull_request inputs into ReviewArgs struct </blockquote> ## `ar-chat` <blockquote> ## [0.1.0](https://git.johnwilger.com/jwilger/auto_review/releases/tag/ar-chat-v0.1.0) - 2026-05-05 ### Added - *(chat)* @auto_review tests scaffolds unit tests for new items - *(chat)* @auto_review docstring generates docstrings as inline patches - *(chat)* @auto_review autofix posts inline suggestion patches - *(chat)* freeform @auto_review questions answered by the cheap-tier LLM - *(orchestrator,chat,gateway)* @auto_review re-review actually re-reviews - *(forgejo,chat)* post_issue_comment + ChatHandler with help/remember/forget - *(chat)* @auto_review chat command parser (Milestone 4 groundwork) - bootstrap workspace for Forgejo AI PR reviewer ### Fixed - *(gateway)* gate semantic reviews behind CI ([#72](https://git.johnwilger.com/jwilger/auto_review/pulls/72)) - *(review)* rescope normal sandbox runtime ([#67](https://git.johnwilger.com/jwilger/auto_review/pulls/67)) - *(chat)* paths_in_diff handles git's quoted-path form - *(llm)* set temperature=0 on every deterministic LLM call - *(chat)* test scaffolds distinguishes "no coverage needed" from malformed - *(chat)* autofix distinguishes "no patches" from "all hallucinated" - *(chat)* skip autofix/docstrings/tests on closed PRs (parity with re_review) - *(chat)* skip re-review on closed/merged PRs - *(chat)* case-insensitive mention parsing matches Forgejo's UI - *(chat)* cap test-scaffold source at 4 KiB before posting - *(chat)* cap autofix patch reason (1 KiB) and replacement (4 KiB) - *(chat)* cap freeform question text at 4 KiB before LLM call - *(chat)* cap remember text at 4 KiB before embedding/storing - *(chat)* grow test-scaffold fence past internal backtick runs - *(chat)* grow autofix suggestion fence past internal backtick runs - *(chat)* cap freeform LLM reply size before posting to Forgejo - *(chat)* autofix/docstrings drops patches outside the PR's diff ### Other - *(toolchain)* switch to rust nightly via flake-pinned snapshot - *(ci)* pin toolchain via flake.nix; CI runs nix flake check - *(chat)* round-trip HELP_TEXT keywords through the parser - *(chat)* contract test linking HELP_TEXT to ChatCommand variants - per-crate READMEs for all 11 workspace crates </blockquote> ## `ar-gateway` <blockquote> ## [0.1.0](https://git.johnwilger.com/jwilger/auto_review/releases/tag/ar-gateway-v0.1.0) - 2026-05-05 ### Added - *(actions)* wire CI semantic review job ([#70](https://git.johnwilger.com/jwilger/auto_review/pulls/70)) - *(actions)* add CI review gateway action ([#68](https://git.johnwilger.com/jwilger/auto_review/pulls/68)) - *(review)* retire bundled linter execution ([#54](https://git.johnwilger.com/jwilger/auto_review/pulls/54)) - *(gateway)* add CI-triggered review dispatch ([#48](https://git.johnwilger.com/jwilger/auto_review/pulls/48)) - persist runtime state across restarts (closes #19) ([#25](https://git.johnwilger.com/jwilger/auto_review/pulls/25)) - *(sandbox)* support docker as OCI runtime alongside podman - *(gateway)* probe git at startup, log result - *(gateway)* warn at startup when WEBHOOK_SECRET is too short - *(metrics)* track queue waits on the concurrency cap - *(orchestrator)* AR_REVIEW_CONCURRENCY caps in-flight reviews - *(metrics)* track verifier-dropped findings as a counter - *(gateway)* graceful shutdown on SIGTERM/SIGINT - *(orchestrator)* SqliteReviewHistory for restart-survival - *(gateway)* webhook delivery dedup via X-Forgejo-Delivery - *(gateway)* webhook rate limiter (T7 mitigation) - *(gateway)* GET /info runtime-config snapshot - *(metrics)* poller observability counters - *(gateway)* /readyz endpoint distinct from /healthz - *(metrics)* proper Prometheus histogram for review duration - *(metrics)* review-pipeline outcome counters via ReviewObserver - *(gateway)* /metrics endpoint with Prometheus-format counters - *(gateway,forgejo,orchestrator)* polling fallback for review-thread mentions - *(orchestrator,gateway)* production sandbox via AR_SANDBOX_IMAGE - *(gateway)* persist learnings to SQLite when AR_LEARNINGS_DB is set - *(orchestrator,chat,gateway)* @auto_review re-review actually re-reviews - *(orchestrator,gateway)* share LearningsStore between chat and RAG - *(gateway)* wire ChatHandler end-to-end (Milestone 4 chat live) - *(forgejo,gateway,chat)* wire issue_comment events through chat command parser - *(gateway)* expose Embedding + Cheap tier env vars; enables RAG end-to-end - *(forgejo,gateway)* /version endpoint + Forgejo get_server_version - *(orchestrator,review)* wire clone+lint into the review pipeline - *(orchestrator,gateway)* wire webhook intake to review pipeline - *(forgejo,gateway)* implement Forgejo client and webhook intake - bootstrap workspace for Forgejo AI PR reviewer ### Fixed - *(gateway)* gate semantic reviews behind CI ([#72](https://git.johnwilger.com/jwilger/auto_review/pulls/72)) - *(review)* rescope normal sandbox runtime ([#67](https://git.johnwilger.com/jwilger/auto_review/pulls/67)) - *(gateway)* deduplicate chat mentions ([#62](https://git.johnwilger.com/jwilger/auto_review/pulls/62)) - *(gateway)* handle bot review requests ([#60](https://git.johnwilger.com/jwilger/auto_review/pulls/60)) - *(gateway)* separate Forgejo token env ([#61](https://git.johnwilger.com/jwilger/auto_review/pulls/61)) - *(embed)* size embedding pass for local Ollama ([#20](https://git.johnwilger.com/jwilger/auto_review/pulls/20)) ([#21](https://git.johnwilger.com/jwilger/auto_review/pulls/21)) - *(pre-merge)* scan every marker occurrence in contains_todo_marker ([#4](https://git.johnwilger.com/jwilger/auto_review/pulls/4)) - *(poller)* Delay missed-tick behaviour avoids catch-up bursts - *(poller)* prune cursor entries for purged PRs each cycle - *(webhook)* skip non-Created issue_comment actions - *(poller)* case-insensitive mention pre-filter (parity with parser) - *(gateway)* warn when env-var integer parses fail (don't silently default) - *(gateway)* warn when only one half of rate-limit env vars is set - *(orchestrator,metrics)* bucket review-task panics so counts add up - *(poller)* case-insensitive self-loop match (matches webhook handler) - *(gateway)* apply read_non_empty_env to remaining sandbox/db checks - *(gateway)* treat empty LLM_*_MODEL env vars as unset - *(gateway)* validate AR_BOT_LOGIN/NAME at startup, dedupe reads - *(gateway)* bail on startup when LLM_REASONING_MODEL is empty - *(poller)* first-sight seeding must not dispatch historical mentions - *(metrics)* unknown failure classes no longer misbucket as unhealable - *(metrics)* unknown skip reasons no longer misbucket as disabled - *(gateway)* honour AR_BOT_LOGIN/AR_BOT_NAME in webhook chat path ### Other - *(toolchain)* switch to rust nightly via flake-pinned snapshot - *(ci)* pin toolchain via flake.nix; CI runs nix flake check - *(metrics)* contract test pinning every counter exposed at /metrics - cargo fmt sweep for rustfmt 1.8.0 stable style drift - per-crate READMEs for all 11 workspace crates - drop-in Grafana dashboard - drop-in Prometheus rules pack </blockquote> ## `ar-cli` <blockquote> ## [0.1.0](https://git.johnwilger.com/jwilger/auto_review/releases/tag/ar-cli-v0.1.0) - 2026-05-05 ### Added - *(review)* retire bundled linter execution ([#54](https://git.johnwilger.com/jwilger/auto_review/pulls/54)) - persist runtime state across restarts (closes #19) ([#25](https://git.johnwilger.com/jwilger/auto_review/pulls/25)) - *(doctor)* probe for git in PATH - *(bench)* expand_fixture_paths now recurses into subdirectories - *(cli)* explain-routing for understanding linter dispatch - *(cli,orchestrator)* purge-history for long-running deploys - *(cli)* list-learnings + forget-learning admin commands - *(cli)* reset-pr subcommand for ad-hoc history clears - *(orchestrator)* SqliteReviewHistory for restart-survival - *(cli,review)* validate-config --strict catches typo'd keys - *(cli)* status subcommand for live gateway snapshot - *(bench)* --baseline FILE comparison + --fail-on-regression - *(cli,forgejo)* list-webhooks and unregister-webhook - *(cli)* doctor verifies configured LLM model names are loaded - *(cli)* doctor subcommand for deployment health checks - *(cli)* test-webhook subcommand for deploy smoke-tests - *(cli,tools)* list-linters subcommand + canonical catalogue - *(metrics)* review-pipeline outcome counters via ReviewObserver - *(cli)* validate-config subcommand for .auto_review.yaml files - *(cli)* bench harness scores precision/recall against labelled fixtures - *(cli)* bench subcommand for fixture-replay regression tracking - *(orchestrator,gateway)* production sandbox via AR_SANDBOX_IMAGE - *(orchestrator,chat,gateway)* @auto_review re-review actually re-reviews - *(orchestrator,gateway)* share LearningsStore between chat and RAG - *(orchestrator)* SpawningDispatcher tracks per-PR review history - *(prompts,review,cli)* repo_context field for RAG-retrieved context - *(cli)* review-once --dry-run prints the rendered LLM prompt - *(cli)* auto_review review-once for one-shot demos / debugging - *(cli)* auto_review init + register-webhook subcommands - bootstrap workspace for Forgejo AI PR reviewer ### Fixed - *(gateway)* gate semantic reviews behind CI ([#72](https://git.johnwilger.com/jwilger/auto_review/pulls/72)) - *(review)* rescope normal sandbox runtime ([#67](https://git.johnwilger.com/jwilger/auto_review/pulls/67)) - *(bench)* bail on empty LLM_BASE_URL or LLM_REASONING_MODEL - *(cli)* reject empty/weak webhook secrets at registration time - *(bench)* success-rate drop now triggers --fail-on-regression ### Other - *(toolchain)* switch to rust nightly via flake-pinned snapshot - *(ci)* pin toolchain via flake.nix; CI runs nix flake check - *(cli)* init's next-step hint suggests `openssl rand -hex 32` - cargo fmt sweep for rustfmt 1.8.0 stable style drift - *(cli)* README contract test catches subcommand drift - per-crate READMEs for all 11 workspace crates - expand labelled corpus from 1 to 5 fixtures - *(bench)* assert shipped bench/fixtures parse against the Fixture struct - *(changelog,cli)* freshen CHANGELOG; correct ar-cli crate description </blockquote> </p></details> --- This PR was generated with [release-plz](https://github.com/release-plz/release-plz/).
chore: release v0.1.0
Some checks failed
CI / Nix flake check (pull_request) Successful in 2m33s
CI / auto_review semantic review (pull_request) Successful in 1s
auto_review auto_review: no findings
Publish release / release-publish (pull_request) Failing after 4s
d83743e530
Signed-off-by: release-plz-bot <release-plz-bot@noreply.git.johnwilger.com>
auto-review left a comment

This pull request introduces changelogs for multiple crates in the repository, marking the release of version 0.1.0 for each. The changes are well-documented and adhere to semantic versioning, making it safe to merge.

This pull request introduces changelogs for multiple crates in the repository, marking the release of version 0.1.0 for each. The changes are well-documented and adhere to semantic versioning, making it safe to merge.
jwilger referenced this pull request from a commit 2026-05-05 12:18:07 -07:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Slipstream/auto_review!94
No description provided.