oh-my-muse/docs/memorys/2026-06-09-P1R7CompletedApproval状态推进.md
zizi 85c5422cb8 test(p1r): 收口 P1R-7 completed approval 门禁
仅将 events:streamEvents 按用户批准推进为 completed,并保留 Events 其它 operation 与 Account/Content/Market/Meta 的 needs_verification 边界。
2026-06-10 10:34:15 +08:00

5.8 KiB
Raw Blame History

P1R-7 Completed Approval 状态推进

结论

本次在用户明确批准后,只把 P1R-7 Events End-to-End Acceptance 的唯一 operation

events:streamEvents / GET /app-api/muse/events

dedicated / needs_verification 推进为 dedicated / completed

本次没有把整个 events domain 加入 completed 白名单,没有推进 Market / Account / Content / Meta completed也不代表总 P1R completed。

用户批准点

用户已明确批准三项:

  1. 只审批 events:streamEvents / GET /app-api/muse/events
  2. 采用 operation-level approval不采用 events domain-level 白名单。
  3. 允许在真实 worktree 修改 scanner、coverage gate test 与 coverage report把 completed summary 从 100/133 推进到 101/132

实现中发现既有 P1R mixed gate 还包含旧 coverage 口径断言。用户于 2026-06-10 回复“允许”,批准把以下 4 个旧 RealApi gate 纳入本轮测试口径修正:

  • P1rEventsRealApiGateTest.java
  • P1rAiRealApiGateTest.java
  • P1rKnowledgeRealApiGateTest.java
  • P1rMarketRealApiGateTest.java

该扩展只允许同步测试断言到 events:streamEvents operation-level completed不允许修改业务实现或 OpenAPI。

状态变化

推进前 coverage summary

233 100 133 0 0 0

推进后 coverage summary

233 101 132 0 0 0

推进后 domain 状态:

account   33 dedicated/needs_verification:33
ai        41 dedicated/completed:41
content   51 dedicated/needs_verification:51
events     1 dedicated/completed:1
knowledge 59 dedicated/completed:59
market    32 dedicated/needs_verification:32
meta      16 dedicated/needs_verification:16

唯一新增 completed

events streamEvents GET /app-api/muse/events dedicated completed P1R-7 End-to-End Acceptance

修改文件

scanner

  • muse-cloud/scripts/p1r-audit-api-coverage.py

测试:

  • muse-cloud/muse-server/src/test/java/cn/iocoder/muse/server/framework/api/P1rApiCoverageReportTest.java
  • muse-cloud/muse-server/src/test/java/cn/iocoder/muse/server/framework/api/P1rEventsRealApiGateTest.java
  • muse-cloud/muse-server/src/test/java/cn/iocoder/muse/server/framework/api/P1rAiRealApiGateTest.java
  • muse-cloud/muse-server/src/test/java/cn/iocoder/muse/server/framework/api/P1rKnowledgeRealApiGateTest.java
  • muse-cloud/muse-server/src/test/java/cn/iocoder/muse/server/framework/api/P1rMarketRealApiGateTest.java

report

  • docs/superpowers/reports/p1r-api-coverage.json
  • docs/superpowers/reports/p1r-api-coverage.md

文档:

  • docs/agent-specs/2026-06-09-P1R7CompletedApproval审阅版.md
  • docs/agent-specs/2026-06-09-P1R7CompletedApproval执行版.md
  • docs/agent-specs/.agent

关键实现口径

scanner 保留历史 domain-level approval

APPROVED_COMPLETED_DOMAINS = {"ai", "knowledge"}

并新增 operation-level approval

APPROVED_COMPLETED_OPERATIONS = {"events:streamEvents"}

approved_completed_operation 仍要求 completed operation 必须是 dedicated,并且只能来自已批准 domain 或已批准 operation key。

验证证据

TDD RED

P1rApiCoverageReportTest tests=6 failures=1
失败原因expected completed=101 but was=100

隔离 scanner 预验证:

/tmp/p1r7-completed-approval-impl-scan.QMrhrf
233 101 132 0 0 0
events streamEvents GET /app-api/muse/events dedicated completed P1R-7 End-to-End Acceptance

真实 scanner

python3 muse-cloud/scripts/p1r-audit-api-coverage.py --check
233 101 132 0 0 0

局部 gate

P1rApiCoverageReportTest tests=6 failures=0 errors=0 skipped=0

旧 RealApi gate 同步后局部 gate

P1rMarketRealApiGateTest tests=6 failures=0 errors=0 skipped=0
P1rKnowledgeRealApiGateTest tests=8 failures=0 errors=0 skipped=0
P1rAiRealApiGateTest tests=7 failures=0 errors=0 skipped=0
P1rApiCoverageReportTest tests=6 failures=0 errors=0 skipped=0
P1rEventsRealApiGateTest tests=5 failures=0 errors=0 skipped=0

P1R focused gates

JAVA_HOME=$(/usr/libexec/java_home -v 21) mvn -o test -pl muse-server -am -Dtest=... -Dsurefire.failIfNoSpecifiedTests=false
Tests run: 118, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS

XML 防空跑计数:

p1r_completed_approval_gate_tests=118

最终 diff gate

git diff --check
OpenAPI staged / unstaged diff 为空
allowed_diff_gate=PASS

Fresh implementation review

Linnaeus spec/correctness review PASS
Hypatia quality/data-integrity/testing review PASS

review 结论边界:

  • PASS 只代表 events:streamEvents operation-level completed approval implementation 可收口。
  • PASS 不代表总 P1R completed。
  • PASS 不代表 Market / Account / Content / Meta completed。

已验证事实

  • events:streamEvents 是本次唯一新增 completed operation。
  • Market 32 个 operation 仍为 dedicated / needs_verification
  • Account 33 个 operation 仍为 dedicated / needs_verification
  • Content 51 个 operation 仍为 dedicated / needs_verification
  • Meta 16 个 operation 仍为 dedicated / needs_verification
  • 7 个 OpenAPI 合同没有 diff。
  • 本次没有修改业务实现代码。

推断

基于 P1R-7a 到 P1R-7f 已收口的 source owner propagation evidence、operation-level approval scanner、coverage gate、P1R focused gates 与 protected diff可以把 P1R-7 Events completed approval 作为状态推进完成候选,进入 fresh implementation review。

假设

提交和 push 仍需用户明确指令。

后续约束

  • 不得把整个 events domain 加入 completed 白名单。
  • 不得把 Market / Account / Content / Meta 推进 completed。
  • 不得把总 P1R completed 写成已完成。
  • fresh implementation 双 review PASS 前不得提交或 push。