v0.3.2 release (latest)
v0.3.2 was published 2026-09-06T12:21:01Z as the GitHub Release v0.3.2 (release task: Issue #380).
Tag state (verified against origin)
Release notes
Changelog
Features
- feat: configure two-source bootstrap queue (PR #5)
- feat: add muyan-pilot add and status commands (PR #17)
- chore: pin 15-minute idle poll schedule (review of PR #19) (PR #26)
- feat: keep task worktrees in repo .worktrees directory (PR #28)
- Run the Pilot scheduler 24 hours a day (PR #35)
- Create tasks from latest remote base and make retries conflict-safe (PR #36)
- feat: stream live Pi activity during active runs (Issue #24) (PR #37)
- feat: auto review, fix, and merge delivered PRs (Issue #34) (PR #38)
- feat: propagate run_id as the end-to-end correlation id (Issue #41) (PR #43)
- ci: run the test contract with 100% coverage on GitHub (Issue #56) (PR #63)
- feat: require Fixes #N in the PR body so GitHub closes the Issue natively (Issue #53) (PR #69)
- 整理 AGENTS.md:Issue 粒度与实现/审查分工 (PR #84)
- fix: pass role-specific —skill lists to implement vs review Pi (PR #86)
- Review session fixes findings in-session; no cold-start fixer (PR #87)
- v0.1: land the release checklist items and close out the run (Issue #80) (PR #92)
- test: guard AGENTS.md against implementer review-fix-loop wording (Issue #78) (PR #109)
- feat: pi_idle 超时后自动清理挂死的 Pi 子进程,让工具失败信号回到模型 (Issue #94) (PR #123)
- ci: fetch full history + all tags in CI checkout for release verification (PR #127)
- Runner: claim scan skips ai-epic Issues with epic_not_claimed (Issue #93) (PR #145)
- feat: parse and validate the explicit multi-repo registry config (PR #150)
- List doc releases in descending version order, latest first (PR #165)
- Support configurable Pi provider/model/thinking in TOML config (Issue #119) (PR #166)
- Scope the fresh-claim scans to the configured active Milestone (Issue #139) (PR #167)
- Support configurable Pi provider file with baseUrl for OpenAI-compatible endpoints (Issue #157) (PR #170)
- Add a focused regression hammer for the shared-ref race (Issue #105) (PR #184)
- Fix per-run Pi provider settings (PR #185)
- Log the active Issue context when the Runner is stopped (PR #193)
- Add the ai-release Release task type with a Runner-side release state machine (PR #199)
- 修复并发 E2E 的 delivery base 时序竞态 (PR #203)
- 生成分类且可读的 Release notes (PR #206)
- 宣传:新增 v0.2.0 黑灯软件工厂发布 Thread (PR #207)
- 修复 ExecStartPre Git 自动维护残留进程 (PR #208)
- 自动创建可追踪的 Release 修复 Issue (PR #210)
- 修复 marketing ticket-only 的 Git 交付 (PR #211)
- Runner 接管确定性 Git/GitHub 收尾 (deliver_pr) (PR #213)
- gitignore .pi 以免 deliver_pr 被 pi-loop 状态文件卡住 (PR #220)
- core: model_wait 安全回收 —— 模型服务进程活着但请求挂死时永久卡死 (PR #221)
- Release 成功后关闭对应 GitHub Milestone (PR #222)
- 优化 harness 与 prompt:减少无效 compact 并保证测试反馈可信 (PR #224)
- P0: model_wait 回收阈值可配置并默认 30 分钟,避免慢本地模型误杀 (PR #229)
- 补齐 .gitignore:覆盖 coverage.log、*.log 及常用开发产物,避免正常测试阻塞交付 (PR #238)
- core: 中断后继续既有工作,而不是 fresh 重做 (PR #240)
- 覆盖率门禁分层:全局 line/branch ≥95%,变更代码与核心路径保持 100% (PR #242)
- 增强 Runner 启动阶段可观测性:定位 starting 卡点 (PR #245)
- 技术债根治:迁移到 src package,消除 editable finder 模块漏记 (PR #247)
- Bug:implement 运行完成前置检查后未提交 commit,Runner delivery_no_commit 异常阻塞任务 (PR #251)
- Bug:隔离 Runner 自有运行状态,避免 .muyan-pilot/ 被误判为 agent 未提交变更 (PR #260)
- 重构:抽离 delivery label 生命周期与调度策略 (PR #265)
- Bug:release 成功后把 Release URL 当 PR URL 解析,ValueError 导致 Runner 崩溃退出 (PR #271)
- Bug:pi_providers 的 apiKey $VAR 引用未展开,第三方 provider 静默挂起无法使用 (PR #304)
- Bug:.gitignore 漏了 coverage.json,覆盖率门禁产物卡住交付(第四次同类问题) (PR #310)
- 根治 dirty-worktree 门禁:orbi 自有契约产物源头迁出交付树(不再逐个补 .gitignore) (PR #327)
- CI:GitHub Actions 失败时自动创建去重的 bug Issue (PR #329)
- Runner 自我健康巡检:主动发现连续失败、反复崩溃与自愈死循环,不再依赖人工翻日志 (PR #333)
- Enhancement: Release task scope 从 milestone 自动推导(替代手动列出) (PR #337)
- Enhancement: Release task 应最后处理——兜底扫描,不与其他 delivery 抢槽位 (PR #346)
- Health watchdog files Runner crash-loop alerts as ai-ready tasks in the delivery repo instead of routing orbi bugs to the orbi repo (PR #357)
- Doubled issue announcements: scene comment and publisher milestone both post at ‘PR opened’ and ‘started’ (same payload, 1s apart) (PR #367)
- orbi.build quickstart omits prerequisites (uv, Pi + provider, gh auth login) and external single-repo mode (PR #374)
- milestone 做完后自动前进,失效时 fail fast —— 触发点统一为 no_ready_issue (PR #376)
- no_ready_issue 时自动给 release ticket 补 ai-ready —— 开发队列空即触发发布,消除人工打标断点 (PR #388)
- ci_failure_triage.py create_issue 不带 milestone:自动创建的 CI failure ticket 全部没有当前 milestone (PR #403)
- Runner 交付合并不检查 GitHub CI 状态:PR head CI FAILURE 仍被 merge,main 被打红(PR #400 实证) (PR #407)
- merge gate:等待 CI checks 完成后轮询 mergeable(UNKNOWN 竞态的完整修复,扩展 #398) (PR #410)
- Delivery CI 门禁无法区分 main 既有红与 PR 引入失败:无辜 PR 烧 5 轮 review-fix 后转 ai-fix-needed(#409/PR #410 实证) (PR #414)
- #399 实现偏差:PR #403 在 workflow 硬编码 ORBI_ACTIVE_MILESTONE,且缺 runner 每 tick 同步 variable —— 闭环不成立 (PR #416)
- 根目录 3 个 CI/gate 脚本(ci_failure_triage.py / coverage_gate.py / diff_coverage_gate.py)移入 tools/ 并同步更新所有引用 (Issue #420; PR #439)
- 根目录 prompt.md / prompt_review.md 移入 prompts/ 并同步更新所有引用 (Issue #421; PR #438)
- 技术债:release 状态机契约在 4 处描述互相矛盾 (PR #424)
- 技术债:run marker 格式有 4 份独立定义,两处严格程度不一致 (PR #427)
- 技术债:交付状态标签字面量在 4 处各写一遍,绕开声明的唯一事实源 (PR #428)
- 技术债:merge gate 按异常 message 字符串分类,改文案即改控制流 (PR #429)
- 技术债:process_issue 返回值语义重载,任务类型分派链重复两处且顺序相反 (PR #430)
- 技术债:gh pr comment / pr_state 不带 —repo,靠进程 CWD 隐式定位仓库 (PR #432)
- 技术债:多仓库执行层只有一个 checkout,配置第二个仓库会静默产出错误结果 (PR #433)
- 技术债:发布版本号与已发布 tag 不一致,release 状态机从不更新它 (PR #434)
- 根目录 prompt.md / prompt_review.md 移入 prompts/ 并同步更新所有引用 (PR #438)
- 根目录 3 个 CI/gate 脚本(ci_failure_triage.py / coverage_gate.py / diff_coverage_gate.py)移入 tools/ 并同步更新所有引用 (PR #439)
- CI failure: tests on branch main (push) (PR #441)
- 2 个测试硬编码版本 0.2.0:release commit 把版本 bump 到 0.3.2 后 CI tests 必红,阻塞 v0.3.2 发布(#380 实证) (PR #443)
Reliability and recovery
- fix: remove artificial task timeout (PR #8)
- fix: keep command timeout optional (PR #10)
- feat: enforce max_concurrency with cross-process slots (Issue #39) (PR #46)
- feat: resume the same PR after review findings or base conflicts (Issue #45) (PR #47)
- fix: keep a post-PR progress failure from blocking the delivery (Issue #60) (PR #62)
- Runner 尊重 GitHub 原生 blockedBy 依赖;正文 Depends on 约定迁移 (Issue #54) (PR #68)
- fix: resume stranded ai-pr-opened deliveries into the review (Issue #70) (PR #85)
- resume fails fast when the scene base differs from the configured base (PR #96)
- fix: fail fast when the resume worktree is missing, before any git/Pi mutation (Issue #90) (PR #99)
- fix: verify the resumed PR before any git/Pi mutation (Issue #89) (PR #102)
- test: pin the upstream-dead failure path and document the kill contract (Issue #75) (PR #110)
- feat: P0 urgent pickup priority — p0 label first, ai-blocked terminal, priority in logs/progress (Issue #101) (PR #113)
- feat: KISS/LEAN as the explicit development contract — minimal complete change only (Issue #118) (PR #144)
- Make stall detection evidence-based: live upstream connection and timeout deadlines (Issue #169) (PR #174)
- Run every shared-ref fetch under the base-sync lock (Issue #171) (PR #182)
- Keep AI-recoverable failures in the automatic fix loop (PR #187)
- Grace window for past-deadline timeout targets (Issue #181) (PR #190)
- Bug:本地 llama-server 单槽吞掉下一个请求且永不返回(模型进程活着/连接 ESTABLISHED/槽位空转),任务反复 ai-blocked (PR #236)
- 技术债:release 成功后 milestone 失败会把已发布版本改写为 ai-blocked (Issue #280; PR #431)
- Bug:release 门禁遇到 CI in_progress 直接失败,导致每次发布必然先 ai-blocked 一次 (PR #328)
- implement 失败现场被销毁:pi exit 1(空 stderr)→ ai-blocked 后 worktree/session 即删,无法取证(#352 案例:coverage 8m12s 后静默退出) (PR #362)
- resume 未覆盖 run 失败/回收后的重领:issue 反复以新 run_id 从头重跑(#302 已连续 5 个 run_id) (PR #375)
- Release 门禁 1 碰到未完成交付应可恢复等待,而非烧成终态 ai-blocked —— 让 release ticket 可提前就位(对称 release_waiting_ci) (PR #386)
- CI tests fail on release commit: 3 tests hardcode /usr/bin/python3 but CI resolves python via shutil.which (blocks v0.3.1 release) (PR #400)
- merge_gate 对 mergeable=UNKNOWN 直接 fail:in-session push 后必撞 GitHub 异步计算窗口,5 轮耗尽转 ai-blocked (PR #417)
- 技术债:release 成功后 milestone 失败会把已发布版本改写为 ai-blocked (PR #431)
Deployment and operations
- feat: schedule pilot ticks with systemd (PR #6)
- fix: let pilot service run without systemd startup limit (PR #9)
- feat: systemd deployment consistency — idempotent install, pre-start drift check, doctor (Issue #103) (PR #112)
- Setup: one-time config-driven initialization of GitHub, labels and local prerequisites (PR #120)
- Git transport:bootstrap 默认使用 SSH,支持 workflow 文件可靠推送 (PR #122)
- Change the idle polling timer from 15 to 5 minutes (PR #130)
- fix: pin the post-merge install-units contract for unit template changes (Issue #131) (PR #132)
- feat: executable muyan-pilot CLI entry (packaging, console script, systemd CLI ExecStart) (PR #141)
- fix: pre-start unit-drift preflight self-heals with the idempotent install and re-verifies (Issue #142) (PR #147)
- Templated systemd units with two timer instances (Issue #149) (PR #151)
- Make the editable uv tool install the official CLI deployment (Issue #152) (PR #153)
- Check uv explicitly in setup prerequisites with install guidance (Issue #156) (PR #164)
- Auto-refresh the editable CLI install when packaging inputs change (Issue #158) (PR #177)
- 将 exporter 部署为持久 user systemd 服务 (PR #200)
- 按并发配置同步 Runner timer (PR #212)
- 迁移 src package 后 editable CLI 未刷新:console script import 崩溃,Runner 每 tick ModuleNotFoundError (PR #250)
- Runner: model_wait 回收后未处理 RuntimeError 使 service 失败并阻塞任务 (PR #252)
- 技术债收尾:运行契约全量剔除 Muyan Pilot 命名,CLI/配置/systemd/标识统一为 orbi (PR #261)
- P0 部署阻塞:品牌改名(#246/#261)后本机 systemd 部署陷入死循环,orbi 生产队列已暂停 (PR #267)
- document: 在线模型下 Pi 启动偶发卡死 15 分钟(根因:pi-mcp-adapter 的 keyring D-Bus 初始化在 systemd 上下文挂起) (PR #332)
- 启动门禁把 repo_dir 当 orbi 可编辑安装源:让『单仓库 X(≠orbi)』作为交付仓库需解耦 CLI 自更新与 checkout (PR #334)
- orbi setup crashes with a raw traceback when reporting the disabled surplus timer instance (systemctl is-enabled exit 1) (PR #347)
- orbi setup validates the provider key against the process env only, ignoring .orbi/env — the documented step 4→5 flow fails verbatim (PR #351)
- pr_state polls the PR against the deploy home’s repo (no —repo, implicit cwd): external single-repo mode deterministically crashes wait_for_delivery after PR creation (PR #359)
- Dirty deploy home blocks the ExecStartPre fast-forward with a raw git error: no structured journal line, no troubleshooting entry, self-update hard-blocked by any local edit (PR #363)
- Missing/empty provider API key crashes runner, setup AND doctor with a raw traceback; doctor should report it as a finding instead (PR #364)
- Optional model-proxy health-check failure is logged as ERROR command_failed in setup output (PR #368)
- Non-JSON preamble on gh stdout produces an opaque ‘cannot parse gh repo view output’ setup failure (PR #369)
- CI: actions/checkout@v4 and actions/setup-python@v5 trigger Node.js 20 deprecation warnings (forced to Node 24) (PR #371)
- orbi setup does not scaffold or report model-provider config: fresh setup ends ‘ok’ with no pointer to orbi.toml / pi-providers.json / .orbi/env (PR #373)
- 把 uv tool install / cp example.toml 收进 orbi setup,精简网站安装命令 (PR #378)
- install-units 静默覆盖既有部署的 systemd unit(同机重装无任何警告) (PR #394)
- Release gate failure re-raises after blocking issue, crashing [email protected] (exit 1) — inconsistent with delivery error path (PR #418)
Observability
- feat: automatically publish live task progress and outcomes (Issue #18) (PR #42)
- feat: concise run-scoped journal lines for live Pi activity (Issue #40) (PR #44)
- fix: drop the duplicated run= field from high-frequency journal lines (Issue #57) (PR #59)
- fix: PATCH the progress comment via the GitHub update route (Issue #58) (PR #61)
- fix: make the whole ProgressPublisher path a pure bypass (Issue #79) (PR #107)
- Progress comment issue line shows number and title (Issue #100) (PR #115)
- fix: flatten multi-line command args to one journal line in the command= log (Issue #143) (PR #148)
- 可观测性:Muyan Pilot Prometheus exporter 与 Grafana Dashboard (Issue #162) (PR #188)
- Backfill ai-in-progress when resuming an opened-PR delivery (PR #195)
- progress PATCH/POST 把整份 body 打进 journal(~30s 一条巨行)→ 用 log_command 收敛为精简行 (PR #390)
- merged 事件 current_labels 硬编码 :fix round 路径下 ai-in-progress/ai-fix-needed 残留(#330 实证) (Issue #423; PR #425)
- merged 事件 current_labels 硬编码 :fix round 路径下 ai-in-progress/ai-fix-needed 残留(#330 实证) (PR #425)
Documentation
- docs: publish config example instead of local config (PR #7)
- docs: add AGENTS.md development contract (PR #29)
- docs: add Apache License 2.0 LICENSE file and README link (Issue #81) (PR #88)
- docs: add v0.1.0 open-source docs site under docs/ (Issue #104) (PR #111)
- docs: blocking-command contract — timeout wrap + loop-test termination guard (Issue #95) (PR #121)
- docs: Chinese docs (Mintlify i18n) + architecture & lifecycle Mermaid diagrams (Issue #116) (PR #124)
- docs: v0.1.0 release reconciliation record + corrected tag v0.1.1 (Issue #97) (PR #125)
- docs: complete the release navigation with the real v0.1.1/v0.1.2 pages and fix the zh home title (PR #129)
- Docs: getting-started covers the model provider and the full chain (PR #196)
- v0.3.0:Orbi 品牌 rebrand、GitHub org 与官网/文档入口统一 (PR #223)
- 文档整治:统一事实源、删除重复内容并压缩 README/AGENTS/站点文档 (PR #230)
- AGENTS.md 收敛到 ≤200 行:只留 agent 必须遵守的规则,机制说明下沉到 docs(最佳实践) (PR #237)
- README 首页化:保留定位/quickstart/能力概览/文档链接,移除重复机制说明 (PR #243)
- 文档去重:README/AGENTS 进一步压缩,docs 建立单一事实源(承接 #160) (PR #244)
- release 状态机补一步:发布后同步文档站 Release notes(现停留在 v0.1.2) (PR #323)
- 补齐『外部单仓库模式』文档:#330/#334 引入的 deploy_home 解耦需要覆盖安装/setup/配置/运维 (PR #336)
- Docs: 英文化 README 作为默认版本,中文版迁移至 README.zh-CN.md 并互链 (PR #370)
- 优化 v0.2.0 release notes:按主题整理为可读 changelog(docs + GitHub Release) (PR #392)
- Docs: remove the stale self-delivery PR counts (106/99) from README (PR #419)
Bug fixes
- 技术债:发布版本号与已发布 tag 不一致,release 状态机从不更新它 (Issue #277; PR #434)
- 技术债:多仓库执行层只有一个 checkout,配置第二个仓库会静默产出错误结果 (Issue #278; PR #433)
- 技术债:gh pr comment / pr_state 不带 —repo,靠进程 CWD 隐式定位仓库 (Issue #279; PR #432)
- 技术债:process_issue 返回值语义重载,任务类型分派链重复两处且顺序相反 (Issue #281; PR #430)
- 技术债:merge gate 按异常 message 字符串分类,改文案即改控制流 (Issue #282; PR #429)
- 技术债:交付状态标签字面量在 4 处各写一遍,绕开声明的唯一事实源 (Issue #283; PR #428)
- 技术债:run marker 格式有 4 份独立定义,两处严格程度不一致 (Issue #284; PR #427)
- 技术债:release 状态机契约在 4 处描述互相矛盾 (Issue #285; PR #424)
- CI failure: tests on branch main (push) (Issue #422)
- CI failure: tests on PR #434 (pull_request) (Issue #435)
- CI failure: tests on branch main (push) (Issue #440; PR #441)
- 2 个测试硬编码版本 0.2.0:release commit 把版本 bump 到 0.3.2 后 CI tests 必红,阻塞 v0.3.2 发布(#380 实证) (Issue #442; PR #443)
-
tag:
v0.3.2 -
release commit:
17575e4aff6fcbe7b3a0e9758ec9e997bb3a0c25 - release task: Issue #380
Scope (verified item by item)
- PR #5 merged (mergeCommit=af0c662b9c9accd38fbee66493fc35bbcf60d0c5)
- PR #6 merged (mergeCommit=43c56a927bf4030f60128a4df46792b89616a056)
- PR #7 merged (mergeCommit=15bde38857380000b0acffe048da42f0f02c6623)
- PR #8 merged (mergeCommit=9ea063a7003c14caece892b6810837b7ad0091d9)
- PR #9 merged (mergeCommit=c933551cd9083efd2f8a37b82529eb600e66b714)
- PR #10 merged (mergeCommit=fb8ead25cdd960b38c546d8f134672f0a14cb19f)
- PR #17 merged (mergeCommit=c887d1392f4fe47f9084c0fd75e1fb677cc8d14d)
- PR #26 merged (mergeCommit=8f304a52538e97e7a5595e7baf6c6bc82d181ac7)
- PR #28 merged (mergeCommit=a08b617fdbdc76f48cbbb476f3c87731be73d822)
- PR #29 merged (mergeCommit=f26f987deffbfa094eee84aa03de9715ea24526c)
- PR #35 merged (mergeCommit=9530c7c4815932089f6108010a455d657834e8ea)
- PR #36 merged (mergeCommit=a0eb92aff07dc83640f1808d3e483aac96ba756b)
- PR #37 merged (mergeCommit=aff4113068a5601cea87830f5422f55ad95e3e41)
- PR #38 merged (mergeCommit=44a71440cbda53bc8fd78c8e6f1f41711a628d4a)
- PR #42 merged (mergeCommit=f42c35ebe2f5206ff0c1398f60c86cc16061b2c3)
- PR #43 merged (mergeCommit=b7fab34679608ff3a871db0ab880b469a9c44aff)
- PR #44 merged (mergeCommit=106756bf80c8b3f900bce1211397518f1345c620)
- PR #46 merged (mergeCommit=63577240b80567f952ac028c0781fb3663a60c89)
- PR #47 merged (mergeCommit=a93bf6093c10ef0b4ea6cde622a8c19756fcc31c)
- PR #59 merged (mergeCommit=fe10b72aca1aa39f51f5c08ca22b65b7c4190602)
- PR #61 merged (mergeCommit=49cb2540e68f376a5405b89b46aff731049bb02e)
- PR #62 merged (mergeCommit=74ff0bc4529a5ac983ca4c55250ce8f98ff22bf6)
- PR #63 merged (mergeCommit=ca17b2d693f776eb4a5999bd9b79f3a58b11a374)
- PR #68 merged (mergeCommit=799b04b161464c0139ad03ebcc76330819b4865d)
- PR #69 merged (mergeCommit=133786e391a3eec9c23f73c5172f6dedd6faea4c)
- PR #84 merged (mergeCommit=fd5b6e82324a15f752c761e2e46c2caac55b5642)
- PR #85 merged (mergeCommit=d76045a734de717a1b8edfdd1e26a3f021919fd1)
- PR #86 merged (mergeCommit=468fdd4e1251f1b497136ac232d97551d04bdf30)
- PR #87 merged (mergeCommit=724892763f90eaa166ee20f26157335b51111222)
- PR #88 merged (mergeCommit=b9a7e1fe9021629bb14f2b36ea1302d818a5981c)
- PR #92 merged (mergeCommit=f6c065e8ec7ec53d7e9fb99e6475c1bc16c2dabf)
- PR #96 merged (mergeCommit=13e42929452b2043b15d470e03b03a49070119d7)
- PR #99 merged (mergeCommit=b2268239bd38b38cd12ee7e6428ee97a9168c5bb)
- PR #102 merged (mergeCommit=7f75c65e59058be41b272060ce8b16b37e56daed)
- PR #107 merged (mergeCommit=e2cc6dca5b66e5a6b16df38fc9819a2c13a78fa7)
- PR #109 merged (mergeCommit=678c72f91ffc18f8bf79c09a6ccbec28c1f57d0f)
- PR #110 merged (mergeCommit=6e793e54b5cf830f84ce3311e468a62f1210ebf5)
- PR #111 merged (mergeCommit=06780d492087ec0ddabfb47f20daa1a2ea53578a)
- PR #112 merged (mergeCommit=e3f9fb63f94104c3572a93b99769aa6f55905126)
- PR #113 merged (mergeCommit=a58e2d5c7de9d5dce220be211d527b79fe0b576b)
- PR #115 merged (mergeCommit=c1d9feb8dbd32bddbab778ecbf2b4026cf387443)
- PR #120 merged (mergeCommit=f7fb0bfca84e178b0a45b0469399d943827ea78f)
- PR #121 merged (mergeCommit=0f3038ef8c292c03d6d57e33fe172fe04516a7a0)
- PR #122 merged (mergeCommit=e321bbb7908edc61c5e39762d2748cd635676deb)
- PR #123 merged (mergeCommit=df5749e8f7aa945fa8b40171abcdbdbc3b090aba)
- PR #124 merged (mergeCommit=87ec2c4a904caa834fce697def06d7d2bcd9579b)
- PR #125 merged (mergeCommit=ec9231be109c00c9261369453f8cb75334b51c45)
- PR #127 merged (mergeCommit=abe48f1e64aa6fa2e76633023df5b52141b35082)
- PR #129 merged (mergeCommit=15dbb5d5f1f689a16c411eba975d3215b20e0f27)
- PR #130 merged (mergeCommit=bc5aed78821a8fbcafde296cd5189709cf5b1412)
- PR #132 merged (mergeCommit=5a204b48a8e7473cab19f805736920d930a4866f)
- PR #141 merged (mergeCommit=d09ae86d4e85b00ab6e151f94e64354414a61c04)
- PR #144 merged (mergeCommit=f07ca908e1be4721b701b1a909a509517436ba44)
- PR #145 merged (mergeCommit=b67ef07058eecd36d6be9b3c685f7575d0a772ad)
- PR #147 merged (mergeCommit=691ca632255eaf109971d2378bbf03d7c3335369)
- PR #148 merged (mergeCommit=e784bb805afbf05db2b13088cfb62b68f687f0a9)
- PR #150 merged (mergeCommit=e0cf48d6755a2c27b53780c58254c464391e6eba)
- PR #151 merged (mergeCommit=45a4c93e64f1fa88f2846b294749da30aefcb879)
- PR #153 merged (mergeCommit=ec47b4608d0b05f12eaea970ee2854cf02c9cb3f)
- PR #164 merged (mergeCommit=8cf5d43ed25d3c68aa6957b066268ade9b553279)
- PR #165 merged (mergeCommit=001f280d6838de318d8b1548a810af61f7848925)
- PR #166 merged (mergeCommit=d5244fce5f65a25adb67dddfbe202fbf272e611a)
- PR #167 merged (mergeCommit=6f3e1d507dffdad95f4638b46bfc89d8cf256e37)
- PR #170 merged (mergeCommit=75ce22fa0fbc7734c6ed74e032bdb415b7ed8093)
- PR #174 merged (mergeCommit=920a4b3c0927c2ae202a0f79b6941bc5b0bc5079)
- PR #177 merged (mergeCommit=5a5929f7a03923f1f60c18bbfa86eeeff154ce63)
- PR #182 merged (mergeCommit=6420338b6cda19e201d2d073326c40faf0717508)
- PR #184 merged (mergeCommit=aa0fff1e2ebd84d6f1594c5b19ccca6216053002)
- PR #185 merged (mergeCommit=7ea30492899c0057ebd8e18163b06ddaaaea8011)
- PR #187 merged (mergeCommit=70ee9dcfc0a1df5f1999957317e456bb3161f974)
- PR #188 merged (mergeCommit=239e7e161aa19da5cda2a0855f2013a17d019ddb)
- PR #190 merged (mergeCommit=5dd7b7c3197f00f1aa0384a95b56392fc6767f27)
- PR #193 merged (mergeCommit=4b3212b9643961ec7c3a9f168f3137582d634bb4)
- PR #195 merged (mergeCommit=6f25005c3dd6630793c7ead8a8c5375c11639ecd)
- PR #196 merged (mergeCommit=09e02b3e4441067084714e62699094c3d9791676)
- PR #199 merged (mergeCommit=f87716238786f5e50089d0054ad8a27c675a0530)
- PR #200 merged (mergeCommit=9fce945402f9aa66b9eb5ec14fa6c29e48d2baf9)
- PR #203 merged (mergeCommit=f5dd821dc2cf022923629481bc04a619dfd43126)
- PR #206 merged (mergeCommit=83acfe29084077308c84fb5aae6fcd19718ba0eb)
- PR #207 merged (mergeCommit=b720e9584ffe5c487939e541b2c99f3dc6ee5f4a)
- PR #208 merged (mergeCommit=4c4314b543bd54affbb8755bf9d6318e3012fe76)
- PR #210 merged (mergeCommit=42109f6ca116c204c39c1c3c0cfd13c809eacd76)
- PR #211 merged (mergeCommit=717b5552004a746f4761c55b6df6f3d01c5fa68b)
- PR #212 merged (mergeCommit=dcec690d9f809873dff6e6e7116341e1b9bb62fc)
- PR #213 merged (mergeCommit=2277aed8de6a9cf884dee4b878a4cdaf211e17f9)
- PR #220 merged (mergeCommit=9d241ef719ba83cd68ac5161d25e69c39d100406)
- PR #221 merged (mergeCommit=5f76582f7c261b92b3e53e2ca12f15de25717f1e)
- PR #222 merged (mergeCommit=a604e416ae4fad1e2dcdba035b2490c069d83cfa)
- PR #223 merged (mergeCommit=0c45f57d96c6f55add1346602df930743f67195f)
- PR #224 merged (mergeCommit=71c832489eae00157b16576068857507f135c329)
- PR #229 merged (mergeCommit=e4f2178d1d80f17c07685e9d7ac2cf4a20c93470)
- PR #230 merged (mergeCommit=156cb374f9a94315579fd112b3e06798dcfe0ba4)
- PR #236 merged (mergeCommit=7853b059761d36335889fd9199c99fad70a3dd60)
- PR #237 merged (mergeCommit=7694f4afe2af04d89b35e66b195e7d2f669ac498)
- PR #238 merged (mergeCommit=35cbef1b7308d6a746801c42eb9fce68f095984e)
- PR #240 merged (mergeCommit=397a8c2671f6c8446a8dc56f246e79ac5f3ceafe)
- PR #242 merged (mergeCommit=32b4a0f491c07bb91b124e0bb8184173d1ec4549)
- PR #243 merged (mergeCommit=04edf77e1d7d72a54f723a0f6a6c3b496655eec0)
- PR #244 merged (mergeCommit=5935c81988ecf088522d5d7d8fe21971629dcde1)
- PR #245 merged (mergeCommit=bd6013e62bd392227afeaec97666458de1ae5e49)
- PR #247 merged (mergeCommit=7315c99e4f69d961cecd1c853ab671db49c801f0)
- PR #250 merged (mergeCommit=2cd32005fcc433f782397333d1e6a03ae45c3bc1)
- PR #251 merged (mergeCommit=37e33dc0733b6e02eef7c48f79ddfe3a009c9484)
- PR #252 merged (mergeCommit=09dd7f69a6f26c61f9446d8b57405ebbb8cc191d)
- PR #260 merged (mergeCommit=37144efc26f21701cc324c56b3b230d6882ec472)
- PR #261 merged (mergeCommit=bbe95b966dd6b233f9073450d09e895603a0f0c6)
- PR #265 merged (mergeCommit=3c6368bf19ef7048a2ccb18fbc60b59e75c49a14)
- PR #267 merged (mergeCommit=2c11a3f61b918f1faa3b81760d871cb0741733d7)
- PR #271 merged (mergeCommit=2adac1425c7ecd0f1f2e3db7507b91867ddc505c)
- Issue #277 closed
- Issue #278 closed
- Issue #279 closed
- Issue #280 closed
- Issue #281 closed
- Issue #282 closed
- Issue #283 closed
- Issue #284 closed
- Issue #285 closed
- PR #304 merged (mergeCommit=dafdb038f839c01ac4bdc7d312223bc54f3159d7)
- PR #310 merged (mergeCommit=2faf7419c0ed40a6ec18c1d5213e14d4e5cdc8fa)
- PR #323 merged (mergeCommit=e70df74e65d3841074443ff137a3f0e1047c6947)
- PR #327 merged (mergeCommit=d184dd3bb0e8aa35acb65125a8da967730d6b7eb)
- PR #328 merged (mergeCommit=c96e88067ca7d834b0972920b45d65858cfc9ccf)
- PR #329 merged (mergeCommit=0bc1fb437d562fd564a495b959bc69a21a4a5702)
- PR #332 merged (mergeCommit=bfb10fb2acd00c77c8c360cdd6d3e6d9771025db)
- PR #333 merged (mergeCommit=5f54067f2c198979b08dd72f8869a1c821fa10e1)
- PR #334 merged (mergeCommit=7c12e30a60b66c1b74c1486a6f2701605c980e59)
- PR #336 merged (mergeCommit=1c94211f09158aa7a7a64fa2492fd607936976a9)
- PR #337 merged (mergeCommit=927ec83269550cf2f95e33591cea718bef74292c)
- PR #346 merged (mergeCommit=26978eee27a249d55c71888c2ff2274b894bf5c6)
- PR #347 merged (mergeCommit=a9f58c5a864d3500adfdda9528268e0c8ec669ec)
- PR #351 merged (mergeCommit=483752683c869da55cf4c45e003e098b1d4f90d0)
- PR #357 merged (mergeCommit=8d5c381234ffabbc557f3bbbea3f9d1520c419b3)
- PR #359 merged (mergeCommit=cec5cb7e7bac1bcabb37ecbc49e36862a12db166)
- PR #362 merged (mergeCommit=7eddb91466ae55da591f16d607b6adb18f28af61)
- PR #363 merged (mergeCommit=961642e8a0ca00ad69bec13a71060161e6833885)
- PR #364 merged (mergeCommit=b8ce2658298f5c5ed50c645e56ce87d242841ea0)
- PR #367 merged (mergeCommit=18a49c7a65af5f971597cc864b15b4c42a949d05)
- PR #368 merged (mergeCommit=b3579fe90a3c6af894e1badc21742f056d7fe1c8)
- PR #369 merged (mergeCommit=2f4b90498da8452da81bef036c48894d2baa384d)
- PR #370 merged (mergeCommit=2784cf3405141ed8188899af68367945cdc54999)
- PR #371 merged (mergeCommit=fa50af42c0bb90d214ce44e842e4d22d7ac36e2b)
- PR #373 merged (mergeCommit=e427f5d78fabe0307d962eb98dbde6066e9fd2b3)
- PR #374 merged (mergeCommit=e82a79b0e9401c21eb0f3e5ccc1ebda1a8797291)
- PR #375 merged (mergeCommit=c0dc3edd8e48a77b622cca77120bfa29b2566fd3)
- PR #376 merged (mergeCommit=c63afb4fdd3088dc5499ce67fc875c7f2fe7759c)
- PR #378 merged (mergeCommit=6010dd3570793d3b16e172cc6bdfa231658a7566)
- PR #386 merged (mergeCommit=d2e8b04d11cf034a05a31d350ef5d137a923a293)
- PR #388 merged (mergeCommit=1f6ec8bba64f922f8f8a9964f0d9aadeeb5beccc)
- PR #390 merged (mergeCommit=3dd0d598f0cfcc79d7fe7bd497c635bb17aa282e)
- PR #392 merged (mergeCommit=830f4b15476b88463b09d730f9f13d2ed6e71b72)
- PR #394 merged (mergeCommit=386ebba54ea48ac1b6f1d45d4b382a38d52a5f56)
- PR #400 merged (mergeCommit=7a016a6c5c67424517aab5c1137cd07b27728ff2)
- PR #403 merged (mergeCommit=806e66e6a524fc38125701c38e5e850f0be17364)
- PR #407 merged (mergeCommit=2e223debfbbac4da2d8591bdce1bf196d772a07f)
- PR #410 merged (mergeCommit=72b366a6f80cd6abcaf8a034f64ecea3e530eabc)
- PR #414 merged (mergeCommit=08e2aa1325d8681d882c6a60218db30e428e63a6)
- PR #416 merged (mergeCommit=c9dd916c5ee5a73d55ed8d2d3865e5d59b0947f7)
- PR #417 merged (mergeCommit=20566ea23ab75f3cde475ac3a0366120e39d7fcf)
- PR #418 merged (mergeCommit=bb40ddca2ffecae7433b24a2e89433585e412ae7)
- PR #419 merged (mergeCommit=98fb55c7843bdf7938d9a0fd9ee645431c05d154)
- Issue #420 closed
- Issue #421 closed
- Issue #422 closed
- Issue #423 closed
- PR #424 merged (mergeCommit=61e5c4d185c026cebe583bf00dc63769aeba3267)
- PR #425 merged (mergeCommit=b43e8399d2ca59b14d6db28337b32228f237c1ea)
- PR #427 merged (mergeCommit=119b72e4fd0cb5ac8ab583575da99f9a712bca8d)
- PR #428 merged (mergeCommit=fbbfe798de02c144b1e081de27670fa0e5092c8e)
- PR #429 merged (mergeCommit=86f02e2b979b05abf04adb2e0c22bc67817b30c0)
- PR #430 merged (mergeCommit=31f7091aba9b17b870fe9b4abf73cf7e9e18064f)
- PR #431 merged (mergeCommit=ae6cf8f096122cbb2f19c67a7004a7256b34f799)
- PR #432 merged (mergeCommit=c1ff5d9059a175de7717d9938fa31fa6a5a8b26c)
- PR #433 merged (mergeCommit=9ff067748ae0c39ade2c5966b759d63e213f9bed)
- PR #434 merged (mergeCommit=9ebb438b831841eeb6473a42f82601312c7686de)
- Issue #435 closed
- PR #438 merged (mergeCommit=0539e9c43f028dd71f53a87e62631fa6e42a80d0)
- PR #439 merged (mergeCommit=92ad13995316da3b8bc6f61b81444c904eacc749)
- Issue #440 closed
- PR #441 merged (mergeCommit=3c9f9e25bee1928fdae108b4c1dbac1342d22425)
- Issue #442 closed
- PR #443 merged (mergeCommit=17575e4aff6fcbe7b3a0e9758ec9e997bb3a0c25)
- NOT released (still open in milestone v0.3.2): open Issue #380 Release task:发布 v0.3.2 并完成远端交付对账
Pre-release gates
- no open Issue carries ai-in-progress / ai-pr-opened / ai-fix-needed
- CI on the release commit: 3 check(s) all success/neutral/skipped
- no open PR targets main
Tests
- declared test command and tiered coverage gate (line/branch >= 95%, Issue #234) passed in a clean worktree at 17575e4aff6fcbe7b3a0e9758ec9e997bb3a0c25 (timeout 1800s)