# P1R Remaining Domain Completed Approval 审阅版
日期:2026-06-10
## 结论
推荐把 P1R 下一阶段定义为:
```text
P1R Remaining Domain Completed Approval
```
该阶段不是继续 P1R-7,也不是直接进入一个已经存在的 P1R-8 实现阶段;它的目标是为仍处于 `dedicated / needs_verification` 的四个业务域建立 completed approval 总方案:
- Meta 16 operations
- Account 33 operations
- Market 32 operations
- Content 51 operations
本审阅版只冻结总路线、审批边界、证据标准和推荐推进顺序。不修改 OpenAPI,不修改 scanner,不修改 coverage report,不修改业务代码,也不把任何剩余业务域推进 `completed`。
推荐推进顺序:
```text
Meta -> Account -> Market -> Content
```
理由是 Meta 体量最小、外部依赖最少,适合作为 domain-level completed approval 模板;Account 和 Market 分别牵涉 New-API/FileService、授权/安装/治理投影;Content 最大且跨 AI/Knowledge/Meta/FileService/Export/Import/Parse/Planning 等 owner,适合最后按模板分片验收。
## 审批主线
```mermaid
flowchart TB
Start["当前 HEAD
P1R-7 Events completed approval 已推送"] --> Remaining["剩余 needs_verification domains
Meta / Account / Market / Content"]
Remaining --> Review["总审阅版
冻结证据标准与顺序"]
Review --> DomainSpec{"按域单独审阅?"}
DomainSpec -->|Meta| Meta["P1R-Meta Completed Approval
16 operations"]
DomainSpec -->|Account| Account["P1R-Account Completed Approval
33 operations"]
DomainSpec -->|Market| Market["P1R-Market Completed Approval
32 operations"]
DomainSpec -->|Content| Content["P1R-Content Completed Approval
51 operations"]
Meta --> DomainGate["每域执行版 + fresh 双 review
用户批准后才改 coverage"]
Account --> DomainGate
Market --> DomainGate
Content --> DomainGate
DomainGate --> Scanner["operation/domain allowlist
scanner + report + gates"]
Scanner --> Done{"四域均完成?"}
Done -->|否| NextDomain["继续下一个 domain"]
Done -->|是| P1RApproval["总 P1R completed approval 候选
仍需单独审批"]
```
## 已验证事实
### 工作区与远端
- 正确 worktree:`/Users/qingse/.config/superpowers/worktrees/oh-my-muse/dev-1.0.0`。
- 当前分支:`dev/1.0.0`。
- 写入本文档前已执行:
```bash
git status --short --branch
git log --oneline -5
git pull --ff-only origin dev/1.0.0
```
结果:
```text
## dev/1.0.0...origin/dev/1.0.0
85c5422 test(p1r): 收口 P1R-7 completed approval 门禁
Already up to date.
```
### 当前 coverage 状态
当前 `docs/superpowers/reports/p1r-api-coverage.json` summary:
```text
totalOperations 233
completedOperations 101
needsVerificationOperations 132
incompleteOperations 0
genericPersistenceOperations 0
ssePlaceholderOperations 0
missingOperations 0
blockedOperations 0
```
当前按 domain 聚合:
```text
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 的范围:
- AI 41 operations。
- Knowledge 59 operations。
- Events `streamEvents / GET /app-api/muse/events` 1 operation。
仍未 completed 的范围:
- P1R-1 Content Real API:51 operations。
- P1R-2 Meta Real API:16 operations。
- P1R-3 Account Real API:33 operations。
- P1R-6 Market Real API:32 operations。
### 既有阶段结论
P1R 总规格定义的 completed 标准不是“路由存在”或“dedicated Controller 存在”,而是“真实业务行为、状态机、持久化、外部闭环、审计、测试与真实环境验收证据”。
P1R-1 Content 留痕明确:
- Content 51 operations 已退出 catch-all / generic persistence。
- 当前状态只是 `dedicated / needs_verification`。
- 仍缺真实 PostgreSQL/Flyway 集成、外部 owner facade 与端到端验收。
P1R-2 Meta 留痕明确:
- Meta 16 operations 已进入 dedicated Controller / Service。
- 当前状态只是 `dedicated / needs_verification`。
- 当时未运行真实 PostgreSQL / Flyway 迁移验证,外部 runtime owner 仍 pending。
P1R-3 Account 留痕明确:
- Account 33 operations 已进入 dedicated route / service / DTO / DAL。
- PostgreSQL / Flyway V11 已在同实例 test 库验证。
- New-API runtime、FileService、导出下载真实交付与跨域 runtime 仍未验收,因此不能 completed。
P1R-6 Market 留痕明确:
- Market 32 operations 已从 generic persistence 推进到 `dedicated / needs_verification`。
- Market completed 不等于治理事件 propagation completed。
- 仍需证明购买、安装、handoff、授权消费、治理与账户聚合等真实用户流。
P1R-7 completed approval 留痕明确:
- 只把 `events:streamEvents` 从 `dedicated / needs_verification` 推进为 `dedicated / completed`。
- 没有把 Market / Account / Content / Meta 推进 completed。
- 没有把总 P1R 写成 completed。
## 推断
- 当前主线瓶颈已经从“事件流是否可见”转为“剩余业务域是否具备真实业务 completed 证据”。
- 下一阶段不应再扩展 P1R-7 source owner propagation;P1R-7 已完成的是 Events SSE operation-level approval。
- 剩余四域不能用一次总批准直接推进 completed,因为它们的外部依赖、状态机、数据面和用户旅程差异较大。
- 最稳妥路线是先冻结总标准,再按 domain 分批写审阅版 / 执行版 / fresh review / 用户批准 / scanner-report-gate 修改。
## 假设
- 用户希望继续 P1R 主线,而不是切换到前端 P2/P3 或新功能开发。
- 用户仍要求 coverage completed 必须基于真实证据和单独批准,不能由 dedicated gate、review PASS 或文档推断自动推进。
- 后续每个 domain 的 completed approval 都允许修改 scanner、coverage report 和 coverage gate,但必须先通过该 domain 的执行版 review,并在用户明确批准后执行。
## 推荐方案
### 方案 A:按 domain 分批 completed approval
每个剩余业务域单独走:
1. 审阅版:冻结该 domain 的 operation 列表、证据缺口、非目标、审批边界。
2. fresh spec/scope review + fresh quality/feasibility review。
3. 执行版:列出可验证证据、scanner/report/gate 修改方式、allowed-diff、rollback。
4. fresh execution spec review + fresh execution quality review。
5. 用户明确批准该 domain completed 状态推进。
6. 修改 scanner / coverage gate / report。
7. 运行 focused tests、P1R gates、真实环境或 `_test` gate、protected diff、allowed-diff。
8. fresh implementation 双 review。
9. 用户批准后提交和 push。
推荐选择该方案。
理由:
- 保持最小审批面。
- 每个 domain 的缺口可以独立验证。
- 不会因为某个 domain 证据充分而误推进其它 domain。
- 与 AI / Knowledge / Events 的既有 approval 模型一致。
### 方案 B:一次性总 P1R completed approval
一次性把 Content / Meta / Account / Market 全部纳入一个总执行版,并统一推进 completed。
不推荐。
理由:
- 132 个 remaining operation 风险面过大。
- Content / Account / Market 的外部链路差异明显,容易出现证据稀释。
- 一次性 scanner/report 修改难以证明每个 operation 的证据归属。
- 任何一个 domain 的 blocker 都会阻塞整批推进。
### 方案 C:按 operation 极细粒度推进
对剩余 132 个 operation 逐个 operation-level approval。
暂不推荐作为主线默认方案。
理由:
- 最精确,但成本过高。
- 对 Meta 这种小域会造成过度流程开销。
- 更适合在某个 domain 内存在少数高风险 operation 不能与其它 operation 一起批准时局部采用。
## 推荐推进顺序
### 第一阶段:Meta Completed Approval
候选范围:
```text
meta 16 dedicated/needs_verification
```
推荐先做 Meta,因为:
- operation 数量最少。
- 主要围绕 MetaSchema、保护节点、功能链治理。
- 外部依赖比 Account / Market / Content 少。
- 更适合建立 completed approval 的 domain 模板。
Meta 审阅版必须重点证明:
- V10 或后续 Meta migration 在真实 `_test` 库可执行。
- MetaSchema draft / validate / impact preview / publish / activate / rollback / deprecate / gray-rules 有真实状态机、版本约束和审计证据。
- 保护节点不能被降级为用户可替换槽位。
- 管理端权限、tenant 隔离和错误码路径可验。
- 没有把 Content / Account / Market 连带推进。
### 第二阶段:Account Completed Approval
候选范围:
```text
account 33 dedicated/needs_verification
```
Account 必须在 completed 前补足:
- New-API binding / recheck / quota request / integration call 的真实 runtime 或明确验收替代边界。
- call attribution 基于真实 integration call / correlation 的查询与归因证据。
- FileService 或对象存储导出下载真实交付证据。
- security event / acknowledge / profile / entitlement / usage / purchase / license / publish projection 的 owner 与 tenant 隔离。
- P1R-7e Account quota adjustment Events propagation 只能作为事件可见证据,不能替代 Account API completed 证据。
### 第三阶段:Market Completed Approval
候选范围:
```text
market 32 dedicated/needs_verification
```
Market 必须在 completed 前补足:
- 资产发布、审核、驳回、下架、召回、申诉的真实状态机和审计。
- 购买、安装、bind-precheck、handoff、目标 owner 授权消费链路。
- Account projection 与 Market installation / purchase / license 的一致性。
- P1R-7d Market governance Events propagation 只能作为治理事件可见证据,不能替代 Market API completed 证据。
- `needs_recheck` 仍不能作为 SourceStatus 值误用。
### 第四阶段:Content Completed Approval
候选范围:
```text
content 51 dedicated/needs_verification
```
Content 放最后,因为它覆盖面最大:
- 作品、章节、Block、结构编辑、来源归因。
- planning、style check、candidate confirm/discard。
- import / parse / batch confirm / parse retry。
- export / export task / download。
- meta projection。
- suggestion merge。
- admin risk action / import task / export task / work governance。
Content completed 前必须证明:
- 核心写命令、幂等、revision、owner guard、审计和 DTO 响应。
- import / parse / export / download 的真实文件或对象存储闭环。
- AI suggestion / Knowledge draft / Meta projection / FileService 等外部 owner 边界。
- P1R-7f `saveBlock` source owner propagation 只覆盖一个事件切片,不能替代全部 Content 51 operations completed。
## 非目标
- 不修改 `docs/api-contracts/**/openapi.yaml`。
- 不修改 `muse-cloud/scripts/p1r-audit-api-coverage.py`。
- 不修改 `docs/superpowers/reports/p1r-api-coverage.json`。
- 不修改 `docs/superpowers/reports/p1r-api-coverage.md`。
- 不修改业务实现代码。
- 不把 Meta / Account / Market / Content 任何 operation 推进 `completed`。
- 不把总 P1R 标记为 completed。
- 不把 P1R-7 source owner propagation evidence 当作业务域 completed 证据。
## 全域 anti-fake-green 基线
后续任一 domain completed approval 都必须继承以下硬基线。执行版不得把这些基线留给 implementer 临场决定。
### XML 防空跑
每个 domain 执行版必须列出所有 required test class,并为每个 class 指定最低 `tests` 数。
最终验证必须读取对应 Surefire XML,逐类断言:
```text
tests > 0
failures = 0
errors = 0
skipped = 0
```
如果新增测试类、拆分测试类或修改 `-Dtest` 列表,执行版必须同步更新 XML 计数下限。不得只依赖 Maven exit 0 或 `surefire.failIfNoSpecifiedTests=false`。
### Allowed diff gate
每个 domain 执行版必须列出允许修改的文件清单,并用同一个 gate 覆盖:
```bash
git -c core.quotePath=false diff --name-only
git -c core.quotePath=false diff --cached --name-only
git -c core.quotePath=false ls-files --others --exclude-standard
```
最终 `git status --short --untracked-files=all` 只能出现 allowed 路径。中文路径必须使用 `core.quotePath=false`,避免八进制转义导致误判。
### Protected diff gate
在用户明确批准真实 coverage 状态推进前,以下文件 staged 与 unstaged diff 必须为空:
```text
docs/api-contracts/account/openapi.yaml
docs/api-contracts/ai/openapi.yaml
docs/api-contracts/content/openapi.yaml
docs/api-contracts/events/openapi.yaml
docs/api-contracts/knowledge/openapi.yaml
docs/api-contracts/market/openapi.yaml
docs/api-contracts/meta/openapi.yaml
muse-cloud/scripts/p1r-audit-api-coverage.py
docs/superpowers/reports/p1r-api-coverage.json
docs/superpowers/reports/p1r-api-coverage.md
```
执行版必须内联 `git diff --quiet -- ...` 与 `git diff --cached --quiet -- ...` 命令。若某个 domain 的 completed approval 需要修改 scanner/report/gate,必须先在执行版写明允许路径、修改时机和回滚策略,并在用户批准后才允许真实 worktree 修改。
### Scanner 与 coverage report 时机
执行版 fresh 双 review 前,只允许在 `/tmp` 隔离副本运行 coverage scanner:
```text
/tmp/p1r--completed-approval-scan.*
```
隔离 scanner 只能用来预验证目标 summary、目标 operation/domain 状态和负向保护。真实 worktree 运行 `python3 muse-cloud/scripts/p1r-audit-api-coverage.py --check` 并改写 `docs/superpowers/reports/**`,必须同时满足:
1. domain 执行版 fresh spec/scope review PASS。
2. domain 执行版 fresh quality/feasibility review PASS。
3. 用户明确批准该 domain 的 completed 状态推进。
4. allowed-diff gate 已把 scanner/report/test 允许路径列明。
### 真实 `_test` / 外部验收最低标准
每个 domain 审阅版必须先说明 completed 证据所需的真实运行态最低标准:
- 如果涉及新增或既有 migration,必须指定真实 PostgreSQL `_test` Flyway 验证,包含目标 schema version、关键表、索引、约束、trigger 和非法 insert 拒绝。
- 如果涉及外部服务,例如 New-API、RAGFlow、FileService、对象存储或导出下载,必须指定成功路径、失败路径、超时、重试或 fail-closed 边界。
- 如果外部服务暂不可用,必须把该 operation 或该切片保持 `needs_verification`,不能以 mock、bare fake、空成功或固定样例数据替代 completed 证据。
- 如果某个 domain 只能部分 operation 满足 completed 证据,执行版必须采用 operation-level approval,而不是 domain-level approval。
### Implementation review 复核项
每个 domain 的 implementation review 必须复核:
- scanner approval 模型没有扩大到非目标 domain 或未来 operation。
- report 中新增 completed 的 operation 与用户批准范围完全一致。
- 非目标 domain 仍保持原状态。
- OpenAPI 与业务实现 diff 符合执行版 allowed list。
- focused tests、P1R gates、XML 防空跑、真实 `_test` 或外部验收、allowed-diff、protected diff 均有 fresh 输出。
## 后续审阅版必须包含
每个 domain 的 completed approval 审阅版都必须包含:
1. 当前 operation 清单和 coverage 状态。
2. 已有 dedicated 实现证据。
3. 已有外部或端到端证据。
4. 明确缺口:数据库、外部服务、状态机、权限、审计、失败路径、重试补偿。
5. 非目标 operation 或跨域链路。
6. 推荐 approval 粒度:domain-level 或 operation-level。
7. scanner/report/gate 的修改边界。
8. protected 文件清单,必须覆盖 7 个 OpenAPI:
- `docs/api-contracts/account/openapi.yaml`
- `docs/api-contracts/ai/openapi.yaml`
- `docs/api-contracts/content/openapi.yaml`
- `docs/api-contracts/events/openapi.yaml`
- `docs/api-contracts/knowledge/openapi.yaml`
- `docs/api-contracts/market/openapi.yaml`
- `docs/api-contracts/meta/openapi.yaml`
9. review gate:
- fresh spec/scope review
- fresh quality/feasibility review
10. 用户批准点:执行版双 PASS 后,仍必须由用户单独批准真实 coverage 状态推进。
11. 本文“全域 anti-fake-green 基线”的继承方式;如需例外,必须在审阅版列出理由和替代验证。
## 验收标准
本总审阅版可以视为完成的条件:
1. 文件写入 `docs/agent-specs/2026-06-10-P1RRemainingDomainCompletedApproval审阅版.md`。
2. `.agent` 记录下一阶段状态。
3. `git diff --check` 通过。
4. OpenAPI、scanner、coverage report 无 diff。
5. 文档只定义总路线,不进入执行版或实现。
## 待确认项
1. 是否确认下一阶段正式命名为 `P1R Remaining Domain Completed Approval`。
2. 是否确认推荐顺序为 `Meta -> Account -> Market -> Content`。
3. 是否确认下一步先写 Meta completed approval 审阅版,而不是直接进入执行版或实现。
4. 是否确认每个 domain 的 completed 状态推进仍需要单独用户批准。