174 Commits

Author SHA1 Message Date
lili
0c119d7c6f docs: 归档已完成阶段过程文档至 docs/archive(git mv 保历史)
9 篇工作已完成的过程文档(P1R解锁3篇+agent基建交付+superpowers报告2篇+P1R任务memory+已合并object-storage计划+已折入总览的completion brainstorm)移至 docs/archive/。保留:design-docs(SSOT)、主台账、现状基线、对抗复盘/P0冻结令(知识网根基,被AGENTS/.agents/台账引用)、meta-schema当前2篇、p1r-api-coverage.json(被引数据)、memorys/README。归档非删除,git 可恢复。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 02:50:00 -07:00
lili
73ec83ab20 docs: 新增项目功能与进度总览(人读全局入口) + AGENTS 任务前必读指针
合成自 design-docs 功能规范 + 主台账/现状基线/.agent/git:看板(整体~76%、后端~80%、前端studio~30%、覆盖门147/233) + 模块进度表 + 功能清单×状态(7域~64功能) + 待办表(按优先级+阻塞原因) + 文档地图。AGENTS 任务前必读加序0指针。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 02:50:00 -07:00
lili
3adf0172d2 docs(spec): meta-schema 执行版 v0.2(5-persona 评审修订:地基不存在,证伪 4 前提)
ce-doc-review 5 persona + 自验 grep 证伪 v0.1 依赖的 grounding:① compatibility() 只算 type_changed、移除字段被 draftField!=null 守卫掉、无可见性比对→破坏字段集无生产者(P0,4票);② workSchemaId 死代码+content 无 schemaKey+ContentMetaFacade 无解析器→schema_key 无来源(P0,3票);③ 可见性版本级仅存 JSON 快照;④ contentPayload key≠fieldKey。外加 preview 仅 draft 版(3端点不解阻)、@Primary @Service 去 ConditionalOnMissingBean、preview 陈旧、DTO→VO 映射缺、Export 须 meta-server、VERIFIED_ZERO 须机械化断言。新增 §四.0 地基层 + P0a 阶段,解阻锚定 publish,扩 open items。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 00:33:22 -07:00
lili
60586115e3 docs(spec): meta-schema 用量投影执行版(决策确认全5维度+字段级+全真实) + 评审版决策记录
据 grounding(2026-06-20)对 5 维度定性:Planning 真实字段级消费者(字段用量隐含 contentPayload,补 schema_key 即可,无需新快照表);Work/KnowledgeProjection 实证零 schema→已验证真实0贡献者;AIContext/Export 消费侧零持久化→P3 定性。架构:Meta 算破坏字段集 + 各 BC 贡献者只查本域计数(守 BC 边界),聚合器 all-real 门。含 Flyway 迁移/回填/分阶段/每维度真实 PG IT/回滚。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 00:18:30 -07:00
lili
f84eab84d3 docs(ledger): 同步 bindings live e2e spec 已写 ready,活体受阻于 PG 宿主离线
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 22:49:46 -07:00
lili
643826a3ea docs(ledger): 同步 bindings FE 读回面板已加,展示链全通(11186b6)
bindings 写→读→端点→FE 读回面板全通(vitest 50/50 + tsc 绿);仅 live playwright e2e 待运行中全栈 app。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 13:44:50 -07:00
lili
a1231afc23 docs(ledger): 同步 GET bindings 读端点已补,读回后端腿闭环(3a7a72f)
bindings 读回后端腿(写投影→读回→GET 端点)已闭环,剩余仅 FE hook;publish 仍 fail-closed 待外部校验器。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 13:31:05 -07:00
lili
cac227223f docs(ledger): 同步 knowledge 投影读回端到端坐实 + unbind 软删修复(1c8da86)
记录:嵌入式 DB 往返证 bind 写→读回/unbind 隐藏/同源他作品存活;并修 @TableLogic 致 unbind 软删空操作的真 bug。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 10:03:21 -07:00
lili
50badf835b docs(ledger): 同步 knowledge bindings 投影写腿已接(8aad7a4)
台账原记“bind 不同步写投影/待投影接线”已过时:bind 确认现同步回填 source binding projection、unbind 按 bindingId 作用域撤销、唯一键补 work_id(V24)。bindings 读回剩余缺口收窄为 GET 端点 + FE。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 09:34:06 -07:00
lili
bc63a35e88 fix(knowledge): audit impact preview owners 2026-06-19 08:18:46 -07:00
lili
8c1696c59a fix(knowledge): hide deleted installed bindings 2026-06-19 08:09:46 -07:00
lili
d5f62a16e4 test(ai): guard runtime from tool grant writes 2026-06-19 07:56:49 -07:00
lili
be8b4e835e docs: refresh gateway baseline facts 2026-06-19 07:47:20 -07:00
lili
6217029989 fix(gateway): route muse api through muse server 2026-06-19 07:46:15 -07:00
lili
9d5430b62c test(studio): add live agent create e2e 2026-06-19 07:35:53 -07:00
lili
765bf749f2 docs: close stale ai stream drift todo 2026-06-19 06:23:36 -07:00
lili
bb59f98c16 chore(ai): remove empty contract server module 2026-06-19 04:30:01 -07:00
lili
134d7646c3 docs: consolidate dev baseline rules 2026-06-19 04:26:32 -07:00
lili
c66d2b9b82 ci: wire openapi diff workflow at root 2026-06-19 04:19:35 -07:00
lili
984c6db583 test(p1r): require coverage evidence test files 2026-06-19 02:38:29 -07:00
lili
f014b97c36 docs(plans): R2 对象存储 / FileService plan 与完成度需求
ce-brainstorm→doc-review→plan 流程产物,经两轮多 persona 评审整合(P0 下载 path-keyed 重设计 + 安全控制)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:10:08 -07:00
lili
d303279199 Merge feature/agent-dev-infrastructure into dev/1.0.0
Agent 开发基建 + P1r 验收 + CI-green 加固合入 1.0.0(90 commits):全 reactor mvn test/package 全绿(清 6 处潜伏红)、前端 muse-studio tsc/vitest/eslint 全绿、BC 边界门(.dal+.application)+ 契约先行门 + openapi-diff 本地实证。与 dev/1.0.0 的 Account Stage A(2 commits,纯 docs)无冲突合并(merge-tree EXIT=0 预证)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 18:07:51 -07:00
lili
a4659bf3f3 docs(ledger): 补前端 muse-studio 复验绿,完成整分支 CI-green 实证
后端 mvn -B package 已绿(前序 commit)。本 commit 记前端这半:muse-studio tsc -b 0 错误 + vitest run 12 文件/47 用例全过(2026-06-17 复跑,node_modules 直跑 .bin)。本分支 35 个前端改动全在 studio、admin 未动。至此整分支(后端 mvn package + 前端 tsc/vitest)deterministic CI 检查全绿,均本会话实证。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 15:22:51 -07:00
lili
08e8b97c88 docs(ledger): 精确化 GHA 触发残留诊断 + MuseAi skip-gate 反假绿双向实证
GHA 触发管道: 订正"待真实 PR 首跑"→"未接线"。诊断 2026-06-17: workflow 在 muse-cloud/.github/、仓库根无 .github/workflows/、remote 是自建 Gitea(101.200.34.71:2222 非 github.com)→ GHA/Gitea-Actions 只读仓库根故 monorepo 层不触发(真 PR 也不跑);需移 workflow 到仓库根或 muse-cloud 单独成库 + 确认 Gitea Actions 已启。mvn -B package[CI 确切命令]已本地实证全绿,接线属基建决策留人类。

MuseAiEventPublishOutboxMapperTest: 化解"零代码改动"矛盾——本会话已把无 PG 硬 fail 改 assumeTrue skip-gate;双向实证:有 PG(source infra.env + -DargLine 清 SOCKS 代理配方)→5/0/0/0 真跑 PASS、无 PG→skip 非 fail 不拖红 CI。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 15:14:30 -07:00
lili
8963383233 test(ci-green): 清全 reactor 4 处潜伏陈旧测试,mvn test 史上首次全绿
CI 从未在本特性分支跑过(maven.yml 仅 push/PR-to-main 触发),积累潜伏红。以 mvn -pl muse-server -am test -fae 全 reactor 逐模块解锁排查(上游 fail-fast 会 SKIP 下游),本提交清 4 处(另 2 处 market PublishRecordItem/coverage 台账已随前序 commit):

- knowledge/ai Content*WorkOwnerFacadeTest: 陈旧断言 @ConditionalOnBean(2026-06-14 单体修复已去除、改 @Primary 总注册压兜底)
- ai MuseAiEventPublishOutboxMapperTest: 真 PG 用例无 PG 时硬 fail→改 assumeTrue skip(与 P1r external-acceptance env 缺失即 skip 约定一致、honest 非假绿;有 PG 仍真跑保真)
- muse-server P1rKnowledgeMigrationSqlTest: 元测试钉死 TARGET_VERSION="14"→版本无关化(被验收 IT 已按 4d46d7a 动态自适应,元测试不应自犯硬编码版本病)

验收:mvn -pl muse-server -am test -fae 全 reactor BUILD SUCCESS、0 失败/错误、所有模块 SUCCESS(真 PG 类无 PG 时 skip)。教训:跨模块重构后须跑 -fae 全量,勿只跑改动模块。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 15:01:41 -07:00
lili
ffdbf5faa0 fix(coverage): 修台账陈旧文件引用(facade 移 member-api 后 33 op serviceFiles 失效)
承 4e9923c(MarketAccountProjectionFacade 从 member-server 移到 member-api):
coverage 台账 33 个 account op 的 serviceFiles 仍指向旧 member-server 路径→
P1rApiCoverageReportTest.should_back_completed_operations_with_existing_source_files
会红(引用文件不存在)。该门此前未随 facade 移动一并跑到,本提交补正。

- 33 处 serviceFiles 路径 member-server/application/account/facade →
  member-api/api/account(文件实际所在,与移动后一致)
- 验收:P1rApiCoverageReportTest 7/0 绿;全台账扫描 0 缺失文件引用
- 反思:facade 跨模块移动应同步台账文件引用,且验证套件须含 P1rApiCoverageReportTest

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 14:38:57 -07:00
lili
d6fc1994e6 docs(meta): meta-schema 用量投影评审版设计(Pull + 按 BC 拆贡献者端口,待确认)
承进度总账 §五A(MetaImpactFacade 置后判定)。基于本会话只读 grounding 调查
(有出处)产出评审版设计,供人类做架构决策——本提交不实现任何代码。

核心结论:
- 根因证实:消费方未持久化 schema 用量(仅 Content planning 存 schema_version、
  无 schema_key;Knowledge/AI 不存)→ MetaImpactFacade 只能诚实 fail-closed
- 架构订正:现 MetaImpactFacade 单接口返 5 维度=单实现者须懂 5 BC 数据、违
  BcBoundaryArchTest 边界门;须拆为 meta-api 定义贡献者端口、各 owner BC 提供适配器
- 推荐 Pull(按需查询贡献者)而非 Push(事件投影):impact preview 低频 admin +
  gate destructive 治理动作、要准确,Pull 无投影漂移/回填/一致性窗口
- 分阶段:P0 端口就位→P1 Content 真实化→P2+ 其余维度;未做维度诚实 unknown 不伪造
- 5 个 open items 待人类定夺(尤:Knowledge/AI 是否真消费 schema、fail-closed 粒度)

台账 §五A 注册指针。待确认方向后再写主 spec + 执行版(数据契约/迁移/IT 验收)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 14:33:15 -07:00
lili
c219d7e205 test(bc): 跨域 .application 边界门(BcBoundaryArchTest 平行 .dal 规则)
承 bc-boundaries §四遗留 + MarketAccountProjectionFacade 收口(facade 端口统一上移 -api)。

- BcBoundaryArchTest 新增 no_business_bc_may_depend_on_another_bc_application
  (平行既有 .dal 规则、共用 BUSINESS_BCS / KNOWN_VIOLATION_EXEMPTIONS):
  禁任一业务 BC 依赖他域 .application(service / facade 实现);.application 端口
  已无合规跨域通道(均在 -api),故直接禁止、无需为 facade 留例外
- 验收:BcBoundaryArchTest 2/0F(.dal + .application 均绿,ArchUnit 字节码级);
  全仓扫描跨 BC .application import = 0
- 反假绿反向证:同款检测逻辑临时指向 .api(已知有跨 BC 引用)→ 找到 238 例违例,
  证明检测机制非空转、绿是因真无跨域耦合(期间踩 Maven 增量编译陈旧坑:仅改谓词
  不重编译致假绿,须 rm maven-status 或 -Dmaven.compiler.useIncrementalCompilation=false)
- 同步 bc-boundaries §二/§四 + 台账 §一 TODO

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 14:22:30 -07:00
lili
4e9923ce68 refactor(market): pom 坐标收口 market→member-api(facade 移入 member-api)+ tenant 依赖诚实化
承 bc-boundaries §三遗留(更深一层 BC 收口)。market-server pom 此前依赖
muse-module-member-server(可见 member 全部 internal),根因是 market 唯一引用的
member-server 类型 MarketAccountProjectionFacade(单方法读校验端口、无 DTO)。

- 接口 MarketAccountProjectionFacade 从 member-server application.account.facade
  移到 member-api api.account(对称写端口 MuseAccountRecordProjectionApi:member 定义端口、
  market 提供适配器 MarketAccountProjectionProvider、member-alone 回落 Unavailable*,
  符合 bc-boundaries §一"本域定义端口、他域提供适配器")
- market-server pom: muse-module-member-server → muse-module-member-api
- market-server 直接声明 muse-spring-boot-starter-biz-tenant(此前经 member-server 传递,
  收口暴露的隐性传递耦合 → 依赖诚实化)
- 顺带修预存潜伏 test 编译破损:AppMuseMarketPublishControllerTest 的 9 参
  PublishRecordItem 构造(record 自 commit a00c758 加 marketAssetId/appealStatus 变 10 参、
  test 未同步;因 CI 从未在本特性分支运行而潜伏)→补 marketAssetId=null

验收:member-api/member-server/market-server scoped reactor test-compile BUILD SUCCESS;
AccountMarketRecordServiceTest 8/0、MarketAccountProjectionFacadeConfigurationTest 3/0、
MarketAccountProjectionProviderTest 5/0、AppMuseMarketPublishControllerTest 10/0;
BcBoundaryArchTest 1/0(0 Architecture Violation)。同步 bc-boundaries §三 + 台账 §一 TODO。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 14:08:19 -07:00
lili
053caf192f test(contract): openapi-diff 破坏性变更门禁本地实证 + 镜像钉 v1.19.1 + 复现脚本
- go install 同款 oasdiff v1.19.1 验证 openapi-diff.yml 检测逻辑+逐域循环聚合:
  对全部 7 域真实契约 5/5——无变更/新增可选参数/新增端点→放行;
  参数变必填(request-parameter-became-required)/删端点(api-path-removed-without-deprecation)→拦截
- workflow 镜像 tufin/oasdiff 钉 v1.19.1(机械门禁去 :latest 漂移)
- 新增可复现脚本 muse-cloud/scripts/verify-openapi-diff.sh(自举 oasdiff+临时 venv,冷启动 5/5 绿)
- 同步台账 §一②/TODO、contract-first §四(去内联 YAML 双源、指向 workflow SSOT)、knowledge §七
- 残留:GHA 触发管道(PR paths 触发/base.sha worktree/docker 拉取)待真实 PR 首跑

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 13:50:15 -07:00
lili
0cf6a6659e test(p1r): approve remaining api coverage completions 2026-06-17 10:49:58 -07:00
lili
467d7184c7 test(p1r): clear remaining content verification debt 2026-06-17 07:58:07 -07:00
lili
94155e6b03 test(p1r): verify content admin task reads 2026-06-17 07:39:01 -07:00
lili
6802dcf115 test(p1r): verify content export task cluster 2026-06-17 05:03:42 -07:00
lili
4e5be1f029 test(p1r): 验收债批25 真实 PG IT(content import-task 簇 2 op:真实只读 + fail-closed) + 台账/.agent 同步
P1rContentImportTaskCompletedApprovalIT(真实 PG muse_p1r_content_import_task_test,
3/3 绿,独立复跑两次均绿)覆盖 getImportTask/createImportTask,经真实
/app-api/muse/import-tasks/{taskId} 与 /works/{id}/import-tasks 入口。

getImportTask 是 Content 自有事实 muse_content_import_task 的真实持久化只读:种真实任务行
后经 HTTP 读回库内字段(id/workId/status/fileName/fileSize/format/scanStatus/progress
全部断言、纯读 no-write),并验缺任务→CONTENT_NOT_FOUND、跨属主→CONTENT_FORBIDDEN
(owner 隔离不泄露)。createImportTask 依赖 FileService owner;单体内 ContentFileFacade
仅有 fail-closed 默认实现,故 FileService 不可用时 fail-closed→
CONTENT_EXTERNAL_OWNER_UNAVAILABLE 不伪造已可用导入任务、不新增任务行、预占命令随
@Transactional 回滚;非法格式→CONTENT_INVALID_STATUS_TRANSITION(先于命令预占)、
非法 API version→CONTENT_API_VERSION_UNSUPPORTED 守卫,失败路径 0 写。

content needs_verification 验收债 10→8(余导出 4 + 管理端列表 2 + createParseJob +
mergeBlockSuggestion;含真实只读 getExportTask/管理端列表)。台账 completed flip +
覆盖门禁 APPROVED_COMPLETED_OPERATIONS 仍须人工批准,agent 不自批。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 02:59:59 -07:00
lili
c8990fd2d2 test(p1r): 验收债批24 真实 PG IT(content parse-job 生命周期 4 op fail-closed) + 台账/.agent 同步
P1rContentParseJobLifecycleCompletedApprovalIT(真实 PG
muse_p1r_content_parse_job_test,3/3 绿,独立复跑两次均绿)覆盖
getParseJob/listParseJobChapters/retryParseJob/batchConfirmChapters,经真实
/app-api/muse/parse-jobs/{jobId}{,/chapters,/retry,/chapters/batch-confirm} 入口。

AI 解析任务与章节结果投影归 AI owner;单体内 ContentParseJobFacade/
ContentKnowledgeDraftFacade/ContentFileFacade 仅有 fail-closed 默认实现
(全 default = unavailable,@ConditionalOnMissingBean 兜底)。断言:AI owner 不可用时
四 op 全部 fail-closed→CONTENT_EXTERNAL_OWNER_UNAVAILABLE(解析任务投影在
requireParseJobProjection 处即不可用,故不伪造任务/章节/重试/批量确认结果);
两写 op(retry/batchConfirm)已预占命令随 @Transactional 回滚 0 残留,四 op 全程 0 写;
非法 API version→CONTENT_API_VERSION_UNSUPPORTED 守卫先于服务体且 0 写。

content needs_verification 验收债 14→10(余 10 全为 FileService/New-API/SSE
外部 owner fail-closed:导入/导出/管理端任务/createParseJob/合并建议)。
台账 completed flip + 覆盖门禁 APPROVED_COMPLETED_OPERATIONS 仍须人工批准,agent 不自批。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 02:53:20 -07:00
lili
517abbdb2a test(p1r): 验收债批23 真实 PG IT(content chapter-parse-result 决策 2 op fail-closed) + 台账/.agent 同步
P1rContentChapterParseResultDecisionCompletedApprovalIT(真实 PG
muse_p1r_content_import_parse_test,3/3 绿,独立复跑两次均绿)覆盖
confirmChapterParseResult/rejectChapterParseResult,经真实
/app-api/muse/chapter-parse-results/{resultId}/confirm|reject 入口。

AI 解析任务/章节结果投影/知识草稿生成均归 AI owner;单体内 ContentParseJobFacade、
ContentKnowledgeDraftFacade、ContentFileFacade 仅有 fail-closed 默认实现
(全 default = unavailable,@ConditionalOnMissingBean 兜底)。断言:AI owner 不可用时
两 op 全部 fail-closed→CONTENT_EXTERNAL_OWNER_UNAVAILABLE(章节结果投影在
requireChapterResultProjection 处即不可用,故不生成知识草稿、不记录确认/拒绝决策);
两 op 均写路,已预占命令随 @Transactional 回滚 0 残留,全程 0 写;非法 API version→
CONTENT_API_VERSION_UNSUPPORTED 守卫先于服务体且 0 写。

content needs_verification 验收债 16→14(余 14 全为 FileService/New-API/SSE
外部 owner fail-closed:导入/导出/管理端任务/解析任务/合并建议)。台账 completed flip +
覆盖门禁 APPROVED_COMPLETED_OPERATIONS 仍须人工批准,agent 不自批。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 02:46:56 -07:00
lili
22ba9e84c6 test(p1r): 验收债批22 真实 PG IT(content style-check 簇 2 op fail-closed) + 台账/.agent 同步
P1rContentStyleCheckClusterCompletedApprovalIT(真实 PG
muse_p1r_content_style_check_test,3/3 绿,独立复跑两次均绿)覆盖
createStyleCheck/getStyleCheckResult,经真实
/app-api/muse/works/{id}/planning/style-checks* 入口。

风格检查任务生成与结果归 AI owner;单体内 ContentStyleCheckFacade 仅有
fail-closed 默认实现(全 default = unavailable,@ConditionalOnMissingBean 兜底)。
断言:AI owner 不可用时两 op 全部 fail-closed→CONTENT_EXTERNAL_OWNER_UNAVAILABLE,
绝不伪造 queued 任务或结果;createStyleCheck 写 op 已预占命令随 @Transactional 回滚
0 残留,两 op 全程 0 写;owner/存在性守卫先于外部调用——跨属主→CONTENT_FORBIDDEN、
缺作品→CONTENT_NOT_FOUND 且 0 写。

content needs_verification 验收债 18→16(余 parse-result confirm/reject 2 +
14 FileService/New-API/SSE 外部 owner fail-closed)。台账 completed flip + 覆盖门禁
APPROVED_COMPLETED_OPERATIONS 仍须人工批准,agent 不自批。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 02:39:23 -07:00
lili
a7d6a95824 test(p1r): 验收债批21 真实 PG IT(content meta-projection 簇 3 op fail-closed) + 台账/.agent 同步
P1rContentMetaProjectionClusterCompletedApprovalIT(真实 PG
muse_p1r_content_meta_projection_test,3/3 绿,独立复跑两次均绿)覆盖
listMetaProjections/getMetaProjection/validateDynamicFields,经真实
/app-api/muse/works/{id}/meta-projections* 与 /dynamic-fields/validate 入口。

MetaSchema 解释/Meta 投影/动态字段校验规则均归 Meta owner;单体内 ContentMetaFacade
仅有 fail-closed 默认实现(全 default = unavailable,@ConditionalOnMissingBean 兜底)。
断言:Meta owner 不可用时三 op 全部 fail-closed→CONTENT_EXTERNAL_OWNER_UNAVAILABLE,
绝不在 Content 侧伪造投影或复制 MetaSchema 规则,三 op 纯读全程 0 写;守卫先于外部调用——
非法 API version→CONTENT_API_VERSION_UNSUPPORTED、跨属主→CONTENT_FORBIDDEN、
缺作品→CONTENT_NOT_FOUND 且 0 写。

content needs_verification 验收债 21→18(余 createStyleCheck + parse-result
confirm/reject 2 + 约 15 FileService/New-API/SSE 外部 owner fail-closed)。
台账 completed flip + 覆盖门禁 APPROVED_COMPLETED_OPERATIONS 仍须人工批准,agent 不自批。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 02:33:57 -07:00
lili
7d3a69ca4d test(p1r): 验收债批20 真实 PG IT(content planning candidate 簇 5 op fail-closed) + 台账/.agent 同步
P1rContentPlanningCandidateClusterCompletedApprovalIT(真实 PG
muse_p1r_content_planning_candidate_test,3/3 绿,独立复跑两次均绿)覆盖
createPlanningCandidate/listPlanningCandidates/getPlanningCandidate/
confirmPlanningCandidate/discardPlanningCandidate,经真实
/app-api/muse/works/{id}/planning/candidates* 入口。

规划候选生成/运行事实/状态投影归 AI owner;单体内 ContentPlanningCandidateFacade
仅有 fail-closed 默认实现(全 default = unavailable,等价生产
UnavailableContentPlanningCandidateFacade 的 @ConditionalOnMissingBean 兜底)。
断言:AI owner 不可用时五 op 全部 fail-closed→CONTENT_EXTERNAL_OWNER_UNAVAILABLE,
绝不伪造 queued/processing 任务、绝不在 Content 侧伪造 discarded;尤其
confirmPlanningCandidate(候选进正文唯一合法入口)拒绝写正式 planning section
(无候选投影即不落 canonical),create/confirm/discard 写 op 已预占命令随
@Transactional 回滚 0 残留,五 op 全程 0 写。owner/存在性守卫先于外部调用——
跨属主→CONTENT_FORBIDDEN、缺作品→CONTENT_NOT_FOUND 且 0 写。

content needs_verification 验收债 26→21(余约 15 FileService/New-API/SSE
外部 owner fail-closed + parse-result/dynamic-fields/meta-projection 真实持久化 op)。
台账 completed flip + 覆盖门禁 APPROVED_COMPLETED_OPERATIONS 仍须人工批准,agent 不自批。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 02:25:20 -07:00
lili
5d34b3d853 test(p1r): 验收债批19 真实 PG IT(market handoff 簇 4 op,market 验收债清零) + 台账/.agent 同步
P1rMarketHandoffClusterCompletedApprovalIT(真实 PG muse_p1r_market_handoff_test,
3/3 绿,独立复跑两次均绿)覆盖 createBindPrecheck/createMarketplaceHandoff/
getHandoffStatus/cancelHandoff,经真实 /app-api/muse/marketplace handoff 入口端到端:
已购 active 授权快照→来源授权摘要(handoffReady)→一次性 handoff token(明文不入库、
只存 sha256 hash,事件快照不含明文)→只读回显 pending→expectedStatus CAS 取消
(pending→cancelled + completed_at)。bind/handoff 回放幂等返回与首呼一致结果不双写;
cancel 终态后再取消被取消性守卫拒绝(MARKET_HANDOFF_NOT_CANCELLABLE,守卫先于 replay
短路)且 0 写。fail-closed:非法 API version、缺资产、无活跃授权(授权≠可达)、目标
owner 白名单外(LocalMarketTargetOwnerFacade 本地目标页 fail-closed)、跨属主 token
读取/取消(属主隔离 RESOURCE_FORBIDDEN)、取消 CAS 期望态不匹配(reserveCommand 为
Propagation.MANDATORY,预占命令随 @Transactional 回滚 0 残留),失败路径全程 0 写。

至此本战役 market 批15-19 补 14 op,叠加战役前 14 op = market needs_verification
28 op 全有 dedicated 真实 PG 证据,market 验收债清零。台账 completed flip + 覆盖门禁
APPROVED_COMPLETED_OPERATIONS 仍须人工批准,agent 不自批。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 02:08:23 -07:00
lili
cb6e5955ba test(p1r): 批18 market 采纳链真实 PG IT(purchaseAsset → installMarketplaceAsset)
P1rMarketLicenseInstallCompletedApprovalIT 经真实 /app-api/muse/marketplace/assets/{id}/
purchase|install 覆盖 purchaseAsset/installMarketplaceAsset(MarketLicenseServiceImpl +
MarketInstallServiceImpl + MarketCommandServiceImpl + MarketAccountProjectionProvider/Outbox,
base-package=cn.iocoder.muse.module)。断言:购买写授权快照 + 购买事实 + completed 命令并把
purchase + license 两条 Account 投影经写端口跨 BC 同步(RecordingAccountProjectionApi 真实捕获、
读端绝不反写反假绿);安装要求已购 active 授权(无授权→MARKET_LICENSE_NOT_EXISTS)、仅 agent/kb
可安装(作品已购仍→MARKET_INSTALL_NOT_BINDABLE 且安装路径 0 写)、写 installed 安装记录 + completed
命令 + license 投影;purchase/install 命令幂等回放命中 completed 不写第二份事实;未上架(属主可见非
listed)→MARKET_ASSET_NOT_LISTED、缺资产→MARKET_ASSET_NOT_EXISTS、授权类型不符→
MARKET_LICENSE_NOT_PURCHASABLE、API version→MARKET_API_VERSION_UNSUPPORTED,失败路径全程 0 写。
真实 PG muse_p1r_market_license_install_test 3/3 绿,独立复跑两次均绿。

market 验收债 6→4(下一簇=createBindPrecheck + handoff 三件套)。同步 docs/mvp/进度总账.md §五B
与 market/.agent。completed 仍由人工批台账。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 01:45:43 -07:00
lili
63ad0c85e6 test(p1r): 批17 marketplace 发现读真实 PG IT(listAssets/recommendations/governanceImpact)
P1rMarketplaceDiscoveryReadsCompletedApprovalIT 经真实 /app-api/muse/marketplace/assets|
recommendations|assets/{id}/governance-impact 覆盖 listMarketplaceAssets/
listMarketplaceRecommendations/getGovernanceImpact(MarketAssetQueryServiceImpl + 收藏/命令依赖,
base-package=cn.iocoder.muse.module)。断言:列表按 App 可见性(listed 公开;draft 等非公开仅 publisher
自见)+ assetType 过滤分页 + 卡片字段回填(publisherName/version=unknown/isFavorite/isAcquired/
isInstalled=false);fallback 推荐返回可见资产卡片 + 推荐理由;治理影响读按 publisher/受影响者门禁
(publisher 自见返回治理结果摘要 + 空受影响列表;非属主且无关联授权/安装/绑定→fail-closed
MARKET_RESOURCE_FORBIDDEN,杜绝借治理接口探测非公开资产);缺资产→MARKET_ASSET_NOT_EXISTS、非法
API version→MARKET_API_VERSION_UNSUPPORTED,三 op 全程纯读 no-write(资产/收藏/命令/治理表
row_to_json 快照零变更)。真实 PG muse_p1r_marketplace_discovery_test 4/4 绿,独立复跑两次均绿。

market 验收债 9→6(下一簇=采纳链 createBindPrecheck/purchaseAsset/installMarketplaceAsset)。
同步 docs/mvp/进度总账.md §五B 与 market/.agent。completed 仍由人工批台账。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 01:30:56 -07:00
lili
482fb31e14 test(p1r): 批16 market 管理端资产治理写真实 PG IT(preview→delist/recall)
P1rMarketGovernanceWriteCompletedApprovalIT 经真实 /admin-api/muse/market/assets/{id}/
governance-impact|delist|recall 覆盖 adminPreviewGovernanceImpact/adminDelistAsset/adminRecallAsset
(同 批15 配置 + 治理 @PreAuthorize method security)。断言治理写生命周期:影响预览写 ready 预览 +
预览影响 + completed 命令并返回影响计数/通知范围(关联表空→计数全 0)→ 凭预览下架(listed→delisted 的
expectedStatus CAS + applied 治理动作 + 治理影响 + 事件发布 outbox + completed 命令)→ 凭预览召回
(listed→recalled + 目标 owner 传播 fail-closed:如实记录 source_status_event
recalled/recorded/TARGET_OWNER_UNAVAILABLE 而非伪造成功)。命令幂等回放命中 completed 不写第二条 fact;
fail-closed 全覆盖:合同枚举 VO @Pattern→BAD_REQUEST(service requireAllowed 为防御纵深)、缺/非 ready
预览→MARKET_GOVERNANCE_PREVIEW_REQUIRED、CAS 阻断→MARKET_ASSET_GOVERNANCE_BLOCKED(命令预占随
@Transactional 回滚、0 残留)、缺资产→MARKET_ASSET_NOT_EXISTS、API version、RBAC deny→FORBIDDEN,
失败路径全程 0 写。真实 PG muse_p1r_market_governance_test 4/4 绿,独立复跑两次均绿。

market 验收债 12→9(下一簇=marketplace 发现读)。同步 docs/mvp/进度总账.md §五B 与 market/.agent。
completed 仍由人工批台账。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 01:19:30 -07:00
lili
ca50d5a162 test(p1r): 批15 market 管理端资产治理读真实 PG IT(adminList/GetMarketAssets)
P1rMarketAdminAssetReadsCompletedApprovalIT 经真实 /admin-api/muse/market/assets 覆盖
adminListMarketAssets/adminGetMarketAsset(market 模块整组治理 mapper + MarketCommandServiceImpl +
MarketEventPublishOutboxServiceImpl,base-package=cn.iocoder.muse.module,admin @PreAuthorize
method security)。断言:列表按 tenant 隔离 + assetType/listingStatus/publisherId 过滤
(listingStatus 的 not_listed↔draft 由服务端 toInternalListingStatus/normalizeListingStatus 双向归一)、
publisherName/version(无当前版本→unknown)回填、关联计数(安装/绑定/申诉=0,关联表空);详情按 tenant
隔离返回资产快照 + 授权/安装/绑定/受影响任务计数全 0 + 版本/治理历史/申诉空集合;缺资产/跨租户→
MARKET_ASSET_NOT_EXISTS、非法 API version→MARKET_API_VERSION_UNSUPPORTED、RBAC
(muse:market:asset:query)deny→FORBIDDEN,两 op 全程纯读 no-write(资产/命令/治理/来源状态/事件
outbox 表 row_to_json 快照零变更)。真实 PG muse_p1r_market_admin_asset_test 2/2 绿,独立复跑两次均绿。

market 验收债 14→12(下一簇=治理写 previewGovernanceImpact/delist/recall)。同步
docs/mvp/进度总账.md §五B 与 market/.agent。completed 仍由人工批台账。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 00:57:35 -07:00
lili
26e1dd145f test(p1r): 批14 account 管理端购买记录读真实 PG IT(adminListPurchaseRecords)+ account 验收债清零
P1rAccountAdminPurchaseRecordsCompletedApprovalIT 经真实 /admin-api/muse/account/purchase-records
覆盖 adminListPurchaseRecords:跨模块(base-package=cn.iocoder.muse.module)由单体内 market 的
MarketAccountProjectionProvider 真实判定 purchase 投影可用,读端只读 Account 自有投影表
muse_account_record_projection。断言无 userId→跨用户全量、userId 过滤→owner 限定 +
source_status→admin status 归一 + 资产信息从 title/snapshot 回填、userId+status=completed 命中、
status=refunded 该用户空、非法 status→BAD_REQUEST、API version 守卫、RBAC(muse:account:query)
deny→FORBIDDEN,全程纯读 no-write(member_user + 投影表 row_to_json 快照零变更);Account 投影
写端口用抛错 stub 越界反假绿。真实 PG muse_p1r_account_admin_purchase_test 2/2 绿,独立复跑两次均绿。

至此 account needs_verification 验收债清零(批3 + 批7-14 全部补真实 PG 证据、证据就绪待人工批,
completed 仍由人工批台账)。同步 docs/mvp/进度总账.md §五B(account 1→0)与 member/.agent。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 00:35:11 -07:00
lili
77ab684baa test(p1r): 验收债批13 account 安全事件确认真实 PG IT(1 op,2/2 绿)
新增 P1rAccountSecurityEventAckCompletedApprovalIT,经真实 HTTP 入口 + 真实
PostgreSQL(muse_p1r_account_security_ack_test,独立复跑两次 2/2 绿)覆盖
appAcknowledgeSecurityEvent:

- 属主确认:按 owner 校验事件归属,向追加表 muse_account_security_event_ack
  追加处理轨迹 + 把基础事件 acknowledged 置真 + 命令 + 成功审计;
- 相同 commandId 幂等回放(不追加第二条轨迹);
- 非法 action→BAD_REQUEST、跨 owner→NOT_FOUND(owner 隔离不泄露)、非数字
  eventId→NOT_FOUND、缺用户→ACCOUNT_USER_NOT_EXISTS、API version 守卫,
  全程 fail-closed 且 0 写;
- 命令/审计走真实实现,无外部依赖;仅对专属 _test 库缺库自动创建,保留
  _test/密码仅 env/凭据 query 守卫。

同步 §五B(剩余 account 2→1)+ muse-module-member/.agent。
证据就绪,completed 待人工批(不自批台账=反假绿)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 00:19:45 -07:00
lili
0521ac2602 test(p1r): 验收债批12 account 管理端写路收尾真实 PG IT(2 op,3/3 绿)
新增 P1rAccountAdminWritesCompletedApprovalIT,经真实 HTTP 入口 + 真实
PostgreSQL(muse_p1r_account_admin_writes_test,独立复跑两次 3/3 绿)覆盖
adminCreateNewApiBinding / adminCreateCallAttributionJob:

- adminCreateNewApiBinding:单体 New-API facade(UnavailableNewApiAccountFacade)
  不可用时正确 fail-closed —— 业务 @Transactional 回滚命令预占(0 残留)+ 不写
  binding,失败外部调用经 REQUIRES_NEW 独立落库一条 unavailable,客户端收
  ACCOUNT_NEW_API_UNAVAILABLE;目标用户不存在/RBAC(muse:account:new-api:manage)/
  API version 守卫全程 0 写;
- adminCreateCallAttributionJob:基于已存在 correlationId 外部调用建立 queued
  归因 job + 命令(items 暂空),命令幂等回放(idempotent_hit 不写第二条),
  callIds 白名单未命中 BAD_REQUEST、expectedCallRevision 版本冲突
  ACCOUNT_VERSION_CONFLICT、缺调用记录 ACCOUNT_INTEGRATION_CALL_NOT_EXISTS、
  RBAC(muse:account:attribution:manage)/API version fail-closed,失败路径 0 写;
- 命令走真实实现,归因来源/审计/配额/用量附带依赖用抛错 mock 反假绿越界;
- 仅对专属 _test 库缺库自动创建,保留 _test/密码仅 env/凭据 query 守卫。

同步 §五B(剩余 account 4→2)+ muse-module-member/.agent。
证据就绪,completed 待人工批(不自批台账=反假绿)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 00:11:51 -07:00
lili
500860208e test(p1r): 验收债批11 account 管理端只读补全真实 PG IT(2 op,3/3 绿)
新增 P1rAccountAdminReadsCompletedApprovalIT,经真实 HTTP 入口 + 真实
PostgreSQL(muse_p1r_account_admin_reads_test,独立复跑两次 3/3 绿)覆盖
adminListUsageRecords / adminGetCallAttributionJob:

- adminListUsageRecords:以账户用户为分页主表在库内聚合(token 输入 150/
  输出 230/合计 380 求和、pending 计数 1/failed 0、attributionStatus=pending),
  非法 period→BAD_REQUEST;
- adminGetCallAttributionJob:按 jobId 读 job+items 并归一状态(completed)+
  分桶计数(attributed 1/failed 1/pending 0),not-found→
  ACCOUNT_INTEGRATION_CALL_NOT_EXISTS;
- 两 op 均 RBAC(muse:account:query)fail-closed、API version 守卫、纯读
  no-write(命令/审计/外部调用表保持为空);归因写路外部来源 facade 用抛错
  mock 反假绿越界;
- 仅对专属 _test 库缺库自动创建,保留 _test/密码仅 env/凭据 query 守卫。

同步 §五B(剩余 account 6→4)+ muse-module-member/.agent。
证据就绪,completed 待人工批(不自批台账=反假绿)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 00:02:30 -07:00
lili
14d7884a1f test(p1r): 验收债批10 account 导出/下载簇真实 PG IT(3 op,4/4 绿)
新增 P1rAccountExportDownloadClusterCompletedApprovalIT,经真实 HTTP 入口 +
真实 PostgreSQL(muse_p1r_account_export_test,独立复跑两次 4/4 绿)覆盖
appCreateExportTask / appGetExportTask / appDownloadExport:

- appCreateExportTask:FileService(UnavailableAccountFileServiceFacade,单体
  默认)未接入时,按合同把非敏感导出(profile)落库为 queued 任务 + 命令 +
  成功审计,绝不伪造 completed/fileRef/下载凭证,不写安全事件;相同 commandId
  幂等回放(idempotent_hit 不写第二条);敏感类型(usage)缺 step-up→BAD_REQUEST
  回滚;非法 exportType/缺用户/API version 均 fail-closed;
- appGetExportTask:按 owner 读任务状态归一、跨 owner not found、纯读 no-write;
- appDownloadExport:校验下载凭证(无效→ACCOUNT_DOWNLOAD_CREDENTIAL_INVALID),
  凭证可用但 FileService 不可用时正确 fail-closed —— @Transactional 回滚
  一次性消费(凭证 consumed_at 仍空可重试)+ 不写下载审计,客户端收
  ACCOUNT_FILE_SERVICE_UNAVAILABLE;
- 命令/审计走真实实现,仅对专属 _test 库缺库自动创建,保留 _test/密码仅 env/
  凭据 query 守卫。

同步 §五B(剩余 account 9→6)+ muse-module-member/.agent。
证据就绪,completed 待人工批(不自批台账=反假绿)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-16 23:52:51 -07:00