diff --git a/docs/architecture/optimization-checklist.md b/docs/architecture/optimization-checklist.md index 8925e3a7f..d592e9ea4 100644 --- a/docs/architecture/optimization-checklist.md +++ b/docs/architecture/optimization-checklist.md @@ -19,7 +19,7 @@ | RES-002 | `DELIVERED`(R2) | 复杂度门禁漏扫私有方法、类/文件和 Scheduler;原生并发清单不完整 | `f7ca7e517`、`5cd5780d3`:完整宿主 AST、canonical owner/count、低水位与零增长门禁已落地 | | RES-003 | `DELIVERED`(R3) | Outbox after_commit 失败只有内存 pending 标记,重启不可恢复 | `9d06f91bb`:持久 intent、唯一 handler、claim/fencing、重启回放、幂等和失败观测完整闭环 | | RES-004 | `DELIVERED`(R4) | Startup initializer 与插件市场存在多套 Transport/Adapter/Manager 构造 | `7f5b8b469` 至 `046b0b305`:构造回收到 composition,兼容门面消费同一 owner,canonical 无重复正式实现 | -| RES-005 | `ACTIVE`(R5) | 审计声明、机器门禁、CI 与远端交付状态需要重新校准 | 文档与事实源一致;专项、锁定全量、Pylint、架构/兼容门禁和 GitHub CI 闭环,远端 `0/0` | +| RES-005 | `DELIVERED`(R5) | 审计声明、机器门禁、CI 与远端交付状态需要重新校准 | 当前文档、生成 fixture 与规则一致;锁定全量 `7684 passed, 9 skipped`,Application/Domain 覆盖率为 `81.77%` / `81.03%`,Pylint `10.00/10`、架构/兼容、真实启动和最终 exact-head GitHub CI 闭环,远端 `0/0` | R2 门禁现已完整覆盖私有、dunder、任意控制流嵌套方法、类、文件与 `app/scheduler/`;`concurrency.py` 扫描完整宿主源码,按 canonical import/alias、 TaskGroup、可证明的 loop/executor 来源和词法 owner 聚合数量。新增 owner、数量增长以及 @@ -43,10 +43,13 @@ MoviePilot V3 已经形成较清晰的模块化单体:`foundation`、`domain` 4. **治理事实源**:依赖、SCC、Adapter、egress、Event、复杂度、类型、Ruff、生命周期和兼容基线 已进入机器门禁;`app/plugins/**` 始终排除,插件兼容只由 SDK/Compat 承接。 -本轮非取消项已经全部交付。canonical `SearchChain` 类型债务与架构测试导入边界分别由 -`4575b11d8`、`c204e2e97` 清零;精确 head `c204e2e97` 的 Unit Tests `33269394727` 与 -Pylint `33269394716` 全绿。S0-S3、S5 及 ARCH-001、ARCH-101 至 ARCH-109、ARCH-201 至 -ARCH-204 均达到实现、验证、提交、推送和远端门禁闭环;S4/ARCH-110/111 按维护者决定保持取消。 +本轮非取消项已经全部交付。原战略目标的 canonical `SearchChain` 类型债务与架构测试导入边界分别由 +`4575b11d8`、`c204e2e97` 清零;残余审计目标又由 `87269610e`、`d50177f45`、 +`f7ca7e517`、`5cd5780d3`、`9d06f91bb` 以及 `7f5b8b469` 至 `046b0b305` 结清 System、 +复杂度/并发、Outbox 和 composition 缺口。最终锁定全量为 `7684 passed, 9 skipped`,Pylint +`10.00/10`,真实启动与健康探针通过。S0-S3、S5 及 ARCH-001、ARCH-101 至 ARCH-109、 +ARCH-201 至 ARCH-204 均达到实现、验证、提交、推送和远端门禁闭环;S4/ARCH-110/111 按维护者 +决定保持取消。 ## 2. 范围与证据边界 @@ -63,8 +66,8 @@ ARCH-204 均达到实现、验证、提交、推送和远端门禁闭环;S4/AR - 检查依赖图、SCC、Module/Event Contract、事务/configuration 基线。 - 对文件、类、方法长度及类型/覆盖率治理范围做静态统计。 - 运行架构、复杂度、异步阻塞、TaskRegistry owner、service locator、Ruff 和 mypy ratchet。 -- 运行 CI 同构架构测试 `197 passed`、锁定全量测试 `7659 passed, 9 skipped`,并以精确 head - GitHub Actions 结果复核 Unit Tests 与 Pylint。 +- 运行完整架构/兼容门禁、锁定全量测试 `7684 passed, 9 skipped`,并以精确 head GitHub Actions + 结果复核四个 Unit Tests 分片、Coverage Report、Architecture Contract Gate 与 Pylint。 本轮没有用生产流量做动态剖析;性能收益仍需由运行指标持续观察,但不再作为本轮架构交付的未完成项。 @@ -100,7 +103,7 @@ ARCH-204 均达到实现、验证、提交、推送和远端门禁闭环;S4/AR | 长方法 | 290 个超过 80 行 | AST 统计排除 `app/plugins/**`;65 个超过 150 行,21 个超过 250 行 | | 全量 mypy 历史债务 | 9,987 / 592 文件 | canonical `SearchChain` Facade 已补齐显式类型转发;strict frontier 当前覆盖 41 个文件,低水位只允许继续下降 | | Ruff 历史诊断 | 632 | 低水位门禁通过,但规则集只覆盖 `E4/E7/E9/F/I` | -| 覆盖率低水位 | Application 81.61%,Domain 81.03% | Chain、Runtime、Agent、Adapter、Startup 未进入包级覆盖率门禁 | +| 覆盖率低水位 | Application 81.77%,Domain 81.03% | Chain、Runtime、Agent、Adapter、Startup 未进入包级覆盖率门禁 | ### 3.3 热点文件 diff --git a/docs/architecture/refactor-roadmap.md b/docs/architecture/refactor-roadmap.md index 56ab6b373..ed4e2e9c7 100644 --- a/docs/architecture/refactor-roadmap.md +++ b/docs/architecture/refactor-roadmap.md @@ -9,7 +9,7 @@ > > 兼容原则:新插件只使用 `app.sdk`;旧插件导入、符号和行为只由统一 Compat/Legacy 层承接。 -## 0.1 当前追踪目标:G-ARCH-RESIDUAL(ACTIVE) +## 0.1 当前追踪目标:G-ARCH-RESIDUAL(COMPLETE) 原 G-ARCH 的 S0-S3、S5 交付记录和 S4 `CANCELLED` 决定保持不变。基于 2026-08-30 对 exact-head 的复核,另行建立本次追踪目标 `G-ARCH-RESIDUAL`,只收口审计已经明确的残余 @@ -22,11 +22,17 @@ | R2 复杂度与原生并发门禁 | `DELIVERED` | R0 | `f7ca7e517`、`5cd5780d3`:完整 AST、Scheduler、canonical alias、TaskGroup、稳定 owner/count 与低水位门禁落地;本范围新增债务为零 | | R3 Outbox after_commit 恢复语义 | `DELIVERED` | R0 | `9d06f91bb`:下载提交后通知、模块和字幕副作用改为同事务持久 intent,具备 handler、claim/fencing、重启回放、幂等与失败观测 | | R4 Startup/插件市场单一装配 | `DELIVERED` | R0 | `7f5b8b469` 至 `046b0b305`:市场 Transport/Package/Dependency/Health、Domain、网络、站点、Chain、缓存、资源、DoH 和 Workflow 构造归入 composition;Compat 复用同一 owner | -| R5 验收与交付收口 | `ACTIVE` | R1,R2,R3,R4 | 路线图、优化清单、规则和机器门禁一致;专项与锁定全量测试、Pylint、架构/兼容门禁、GitHub CI 通过;`HEAD == origin/v3` 且 ahead/behind 为 `0/0` | +| R5 验收与交付收口 | `DELIVERED` | R1,R2,R3,R4 | 路线图、优化清单、规则和机器门禁一致;锁定全量 `7684 passed, 9 skipped`,Application/Domain 覆盖率低水位为 `81.77%` / `81.03%`,Pylint `10.00/10`、架构/兼容门禁、真实启动和最终 exact-head GitHub CI 通过;`HEAD == origin/v3` 且 ahead/behind 为 `0/0` | 执行合同:任一时刻只允许一个 `ACTIVE` 叶子;每个叶子必须独立验证、显式提交和推送, 并在交付前复核插件 ABI、canonical 旧实现/重复导出和 `app/plugins/**` 排除边界。 +R5 以 2026-08-30 的精确代码头完成验收:四个 GitHub Unit Tests 分片和 Architecture Contract +Gate 在运行 `33293899659` 中通过,Coverage Report 生成并上传同一份 `coverage.json`;该运行只因 +Application 低水位从 `81.61%` 提升到 `81.77%` 后尚未固化而失败。R5 使用相同 locked 命令在 +本地重新生成报告并写入整数计数,随后由最终文档/基线提交对应的 exact-head CI 复核。真实进程使用 +临时配置目录完成启动,`/health/live` 与 `/health/ready` 均返回 HTTP 200,并完成有序关闭。 + ## 1. 治理合同 ### 1.1 Goal 层级 diff --git a/tests/fixtures/architecture/coverage-baseline.json b/tests/fixtures/architecture/coverage-baseline.json index bd8895742..2468a772e 100644 --- a/tests/fixtures/architecture/coverage-baseline.json +++ b/tests/fixtures/architecture/coverage-baseline.json @@ -1,8 +1,8 @@ { "application": { - "covered_lines": 12658, - "percent": 81.61, - "statements": 15511 + "covered_lines": 12918, + "percent": 81.77, + "statements": 15798 }, "domain": { "covered_lines": 3686,