lili
c9dbd51ed1
docs(agents): 蒸馏 S9 部署收口 4 坑入 knowledge gotchas §八
...
sql/muse compose 挂载 / 覆盖台账 JSON 是 SoT 别重生成 / 加 service @Resource 依赖须真跑跨模块 IT / 全新作品 AI 需 muse_tool_grant authz 种子
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 10:26:05 -07:00
lili
7a6e46b2fe
fix(test): S9 整分支收口修 S6d 台账漂移+V35 跳号登记+S8 导入向导 IT 上下文
...
- 覆盖台账 p1r-api-coverage.json 与生成器去 S6d 已删 RAGFlow 文件引用,知识域 serviceFiles/testFiles 换 Dify 继任,保 32 market dormant 口径不被重生成摧毁
- ContractFirstGateTest 登记 V35 有意跳号(并行线版本预留,V36/V37 已应用 live 库不可回填)+ stale 守卫
- P1rContentImportWizardCompletedApprovalIT 补 MuseAiProperties @Bean(S8 加 @Resource 依赖后极简上下文缺 bean 致 ApplicationContext 加载失败)
- 独立复跑:local 门 65/0F/0E BUILD SUCCESS;import wizard 真PG IT 2/0F/0E(1 live skip)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 10:19:11 -07:00
lili
9af471289a
fix(solo): 修复 2.0.0 单人版 live 后端启动(DB 口径对齐 + moderation 关停)
...
标准启动默认落陈旧的 muse_local(仅 V0 baseline、缺 yudao 基座、update_updated_at_column()
函数属第三个角色 muse)→ Flyway V1 CREATE OR REPLACE FUNCTION 报 "must be owner"。唯一健康
的 live 库是 root@muse_slice_live(已迁 V34、含基座+登录种子)。将 application-infra.yaml 与
start-muse-server-infra.sh 的默认库/用户改为 muse_slice_live/root(真实值仍由 infra.env 覆盖)。
S4 关停 spring.ai.model.* 时漏了 moderation;OpenAiModerationAutoConfiguration 默认
matchIfMissing=true → 全量 boot 实例化 openAiModerationModel、无 OpenAI key 直接抛
"OpenAI API key must be set" 使单体启动失败。在 monolith 真正加载的 muse-server/application.yaml
与 ai-server/application.yaml 两处补 moderation: none(单人形态输出合规走自研 MuseAiCandidateReviewService)。
workspace.spec 冒烟原缺 token 注入,被 S5 新增的 AuthGuard 拦重定向 /login → 补 test1 token 注入。
external-deps 记录 Dify 实例被游戏/Muse 共用、workspace 须隔离的约束。
验证:muse-server 干净启动(Started in 22.4s、Flyway up-to-date 零 owner error);MSW-off 创作主线
e2e 33 passed/0 failed/31 隔离(候选采纳/导入/导出/知识草稿/图谱/绑定/agent 生命周期/AI 真生成全绿);
run-p1r-verification.sh local 65 tests/0 fail BUILD SUCCESS。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 22:41:12 -07:00
zizi
c8a88e71b3
feat(muse): detach market assembly for solo mode
2026-07-08 10:16:41 +08:00
zizi
6f2629302f
feat(p1r): add Dify S1 live acceptance
2026-07-07 17:10:40 +08:00
lili
0f1ff6e4f2
fix(infra): 修复外部服务代理与RAGFlow检索字段
...
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 10:28:36 -07:00
lili
3585219637
feat(mvp): 收束1.0.0线A交付闭环
...
Backend Maven CI / backend-local (push) Has been cancelled
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-27 10:52:10 -07:00
lili
2de3e742b3
docs(agents): 蒸馏 market install KB 物化 D0-fork 知识与红线
...
新增 knowledge/market-install-downstream-materialization.md(market↔knowledge 接缝单一归属):安装"空账"物化断层(两断点)、真越权澄清(安装者读发布者私有≠安装者间)、D0-fork 四单元闭环、三关键衔接(进程内 Spring 事件 AFTER_COMMIT/MarketAssetSourceApi 跨 BC 读 tags/kb_id 去污染)、开放项独立成节。external-deps 补 RAGFlow 两坑(无 copy API、metadata_filter vs metadata_condition 字段错配静默忽略)。security-and-reliability §三.A 补 market 物化 3 红线(本地键不存外域 id/私有不泄露须物理隔离非运行时过滤/forkStatus fail-closed)+§六门禁表诚实标 kb_id 去污染暂无独立 ArchUnit。module-reality-baseline 加薄指针;README 索引更新。AgentsInfraIntegrityTest 3/3 绿。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 12:10:34 -07:00
lili
94545ff87b
test(it): 全量 50 P1r 真 PG IT 收尾全绿——修 Planning schema 版本 + live-acceptance 第二代理坑
...
继抽样 6/6 后跑全量 50 P1r 真 PG IT(用户选继续、IT 层 CI 健康收尾):50/50 全绿(199 用例 0F/0E/1S、1 skip=RagFlow GraphRAG assumeTrue)、含 4 个 LiveAcceptance 真打 New-API/RAGFlow。修 2 预存历史红(均非本 session):
Planning IT 4F:TARGET_VERSION 停 V21 但 savePlanningItem→captureFieldSnapshot 依赖 V25 新增 muse_content_planning_field_snapshot 表(94a2379)→relation does not exist 500;修=21→31(同 Core V30/AiRuntime V31 同向、核心 planning fact/command/outbox 断言不放宽)。4 live-acceptance 502/UNAVAILABLE:第二代理坑——SOCKS 清理只清 socksProxyHost、macOS 系统代理 127.0.0.1:7897 仍被 JVM 注 http.proxyHost、java.net.http.HttpClient 走死代理;反误判=curl --noproxy 直打全 200 证外部健康;修=argLine 加 -Dhttp.proxyHost= -Dhttps.proxyHost= -Djava.net.useSystemProxies=false。external-deps 蒸馏。
anti-false-green:核实 Planning diff 仅 schema 版本非放宽、muse_slice_live 167 表+数据完整未被 IT flyway.clean 误删(_test 库隔离遵守 muse_p1r_*_test)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 02:09:45 -07:00
lili
329db944ff
docs: 进度口径收敛到机械唯一源——修正三套矛盾数字(147/100→233/233) + 现状基线降级
...
排查发现进度数字三套互相矛盾:总览/现状基线/主台账历史段=147/86、agent-specs=100/127、module-reality=233/0。核机械真值:覆盖 JSON summary=233/233 completed/0 needs(每 op 带 testFiles 证据 + P1rApiCoverageReportTest 校验 summary 自算防手工拨)。⚠️ JSON generatedAt=2026-05-25 未随内容刷新(手工维护痕迹),已在文档标注以 summary+testFiles 为准。
修正:① 总览(我上轮新建,误抄过时台账)147/233→233/233、各域 full、接口门≠端到端两口径分清、定位为人读封面(权威以台账/JSON为准);② 主台账 头部加机械源口径声明(233/0)+门禁中→满+验收债标已清零;③ 现状基线降级为 2026-06-13 历史快照(顶部时效横幅+性质去SSOT);④ AGENTS序2/module-reality 改引用;⑤ agent-specs/.agent 注记历史数字;⑥ meta-schema review 回指 execution v0.2 已证伪地基(待决策提案);⑦ design-docs/00 加'设计≠进度';⑧ dev-baseline 申明旧 SSOT 自称失效。
确立单一真实源:设计=design-docs;进度=进度总账(叙述)+覆盖JSON(机械);人读=项目功能与进度总览(封面)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 05:32:32 -07:00
lili
d5f62a16e4
test(ai): guard runtime from tool grant writes
2026-06-19 07:56:49 -07:00
lili
134d7646c3
docs: consolidate dev baseline rules
2026-06-19 04:26:32 -07:00
lili
eeb548db2c
docs: update openapi diff wiring status
2026-06-19 04:20:58 -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
883e6785d2
docs(knowledge): 记 Maven 增量编译陈旧坑(验证门禁反向红时致假绿)
...
本会话验证 .application 边界门时实证:仅改 ArchUnit 谓词逻辑后重跑,.class
时间戳更新但方法体未真正重编译→反向"应红"测试假绿(跑的旧字节码)。
沉淀可靠复跑配方(rm maven-status / -Dmaven.compiler.useIncrementalCompilation=false)
入 knowledge §三,供后续门禁自检避免"反假绿本身假绿"。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 14:26:39 -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
888217deee
docs(p1r): 真实 PG IT 基线 23/23 全绿 + 完整跑法配方(reuseForks=false 等)落档
...
§四:23/23 P1r*IT 在 mini-infra PG 全量重跑全绿(99 用例 0F/0E,2 例 external-acceptance 跳过);补批量跑要点⑥(-DreuseForks=false 避 Market IT 属性脱敏污染复用 fork)⑦(argLine 传 p1r.flyway.*);旧硬编码版本断言需动态化TODO 已闭(MigrateResult 动态)。§五B:基线落档,指向 §四 完整配方。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 20:57:14 -07:00
lili
913c8e042d
docs(mvp): 记录全栈 muse-server 史上首次单体启动 + MVP#1 活体端到端实证
...
墙3 诊断证伪(非 Feign RPC,真因=classifier/Spring条件注解/bean名冲突/codegen/SOCKS)。
全栈起法+活体 curl 命令(GET works、POST suggestion-merges accept_as_is、乐观锁负路径)
固化入 knowledge §六;进度总账追加里程碑条目。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 17:49:28 -07:00
lili
d61ff79ebc
docs(knowledge): 订正全栈启动第 3 墙诊断(Feign 初判被实测推翻=classifier)
...
实测推进:"cloud→monolith Feign RPC 桥接"初判证伪。真因是 system/infra/ai-server 同 member 的
无 classifier repackage fat jar 问题(嵌入 muse-server 后类不可加载)→ 配 classifier(eea10b7)后
本地 PermissionApiImpl(PermissionApi extends PermissionCommonApi)即注册,无需任何 Feign 桥接。
随后实测打通 datasource(清 SOCKS 代理 system property)/Flyway V1-V21/security/codegen。
剩余唯一类:facade 的 @Service @ConditionalOnMissingBean 兜底在单体下未可靠注册(~21 个,逐个暴露)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 16:56:43 -07:00
lili
038d2cf387
chore(p1-fullstack): 补 postgres 基座 schema(dev)+ 记录全栈启动 2 墙拆除与第 3 墙诊断
...
为活体 e2e 起全栈 muse-server,实测拆两墙、定位第三墙:
- 墙1(已修, commit 1f89007):member-server repackage classifier → mvn package 全项目 BUILD SUCCESS。
- 墙2(已解):本仓原无 postgres 基座 dump。新增 muse-cloud/sql/dev/yudao-base-schema-postgres.sql
(system/infra/member 测试 schema 忠实翻 PostgreSQL,49 表)+ yudao-base-seed-postgres.sql
(system_tenant id=1 等最小启动种子);实测灌库 0 失败,app Flyway(baseline-on-migrate)成功补
Muse V1-V21、Tomcat 起、Spring 初始化。
- 墙3(定位,开 chip):muse-server 卡 bean 装配——5 个 biz.system CommonApi 是 @FeignClient
(yudao-cloud RPC),单进程单体下未注册本地 bean。即项目从未以单体真正启动过(基线"未实跑"根因),
需阶段7「cloud→monolith RPC 桥接」(真实接 system 本地 impl,非 permissive stub=假绿)。
knowledge §六 记全栈启动配方 + 三墙状态;进度总账加时间线。MVP #1 纵切仍以 4 个真实 PG IT 为正确性证据。
未推送(等用户)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 11:18:35 -07:00
lili
e8f616d5a5
feat(p1-ai): AI 生成候选补齐「审」字段+active+授权快照,打通生成→采纳
...
消除「经真实 AI 生成流产出的候选永远无法被采纳入正文」缺口(chip task_092cfc32):
- 新增 MuseAiCandidateReviewService:对生成正文做真实(轻量)审——输出合规扫描(空/凭据痕迹)
+ 静态检查(空白/超长)+ 许可限制快照透传;三项全过才给可追溯审结果 ID(绑定 generation+内容指纹),
任一不过则不给 → 调用方不写审字段 → Content 合并门禁如实拒绝(反假绿)。
- MuseAiRuntimeProjectionService.createRuntimeSuggestion:
· 顶层 content 写入候选 contentSnapshot(脱敏 summary,供 mergeBlockSuggestion facade 可用性检查;
完整 provider 原文按数据主权不持久化,采纳走 merge_after_edit 由用户回传所审正文)
· diff_summary 写齐三「审」字段(审查通过时)
· source_status 'verified'→'active'(原值既非来源状态机取值,又会被合并门禁拒绝)
· 数值授权快照:envelope id 为数值时落 authorization_snapshot_id(沿用 MuseSuggestionServiceImpl 的
envelope=authz 既有约定);非数值受 BIGINT 列限制,待授权快照建模收口(遗留)
验证(真实 PG,16/16 绿):
- MuseAiCandidateReviewServiceTest 5/0(真实审逻辑:通过/空/凭据泄露/许可透传/空值)
- MuseAiRuntimeProjectionServiceTest 5/0(回归:补 @Mock+stub 防 NPE)
- P1rContentMergeGeneratedSuggestionIT 1/0(机械门禁:真实 createShadowSuggestionCandidate 产候选
→ active/审/authz/content 由真实代码产出 → mergeBlockSuggestion 写入 Canonical)
- P1rContentMergeSuggestionIT 5/0(回归,未受影响)
至此 MVP #1「生成→采纳」活体闭环仅剩 1 个范围外阻塞:远端 dev 库缺 yudao 基座 schema(全栈 app 启动)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 09:58:49 -07:00
lili
fe75b666b9
feat(p1-mvp): AI候选采纳入正文纵切——前端接 suggestion-merges + 后端 real-PG 机械门禁
...
据现状基线 §6.3 #1(前端 AI 候选闭环断链)整改:
前端(muse-studio):
- WorkspacePage 真实编辑器接入唯一合法入口 POST .../suggestion-merges(新增 useAcceptSuggestion),
去除 EditorPage 仅本地 setContent 的绕过(违背 Shadow→Canonical 主权)
- client.ts 注入 Authorization Bearer(后端 Sa-Token 鉴权);新增 auth.ts 统一令牌读取,sse.ts 复用去重
- AIPanel 透传 suggestionId;connectAIStream 复用 createEventStreamParser 对齐真后端 SSE event: 线(修旧 data.type 漂移);
sse.ts onDone 类型对齐 {taskId,suggestionId};CandidatePanel 异步采纳+防双写
- tsc / 47 单测 / build 全绿
后端(muse-cloud):
- 新增机械门禁 P1rContentMergeSuggestionIT:真实 PG + 真实 AiSuggestionMergeProjectionFacade 读真种 muse_ai_suggestion
- 5/5 绿:正向写 Canonical(rev1→2)/revision 冲突不脏写/幂等回放/非 pending/「审」字段缺失
未达(诚实):活体全栈 UI e2e 未跑——阻塞于①远端 dev 库缺 yudao 基座 schema(全栈 app 起不来)
②AI 运行时未写「审」字段(生成流候选不可合并,chip task_092cfc32);均范围外。
connectAIStream 的 SSE parser 漂移已在本提交修复。e2e/accept-suggestion.spec.ts 只写不跑。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 09:29:56 -07:00
lili
1a76a14995
docs(p1-verify): 记录 P1 后端 real-PG IT 验收(19/20 类零失败)+ 接入配方与 SOCKS 代理坑
...
接通共享远端 PostgreSQL(100.64.0.8:5433,PG17.10)真跑全部 20 个 P1r*IT:
19/20 IT 类零功能失败(~95 用例绿),覆盖 completed-approval、Flyway 迁移、
events-publish outbox 后端路径 + New-API live 调用——此前"86 个 needs_verification
须真实 PG、本地不可验/环境阻塞"的判断被实测推翻,后端获机械绿证据(非假绿)。
唯一红:P1rKnowledgeFlywayMigrationIT 硬编码断言 V14 而 schema 已到 V21(陈旧用例,
源自 commit 7155285、非本轮改动),应改为动态读取最新版本;已登记总账 TODO。
沉淀(避免重蹈):
- .agents/knowledge/external-deps-and-gotchas.md §四:跑 real-PG IT 的完整配方
(test 阶段 + -Dtest=<IT类>,避开 verify/integration-test 的 repackage 破坏跨模块编译;
库名须 _test 结尾且会被 flyway.clean;locations 恰为 filesystem:sql/muse;密码只走 env)
+ **本机 HTTP_PROXY 致 JVM socksProxyHost 破坏 PG 原始线协议**(EOF 误判为密码/pg_hba)的
判定与修复(-DargLine='-DsocksProxyHost= -DsocksProxyPort=');PG 实为 17.10。
- 进度总账:时间线 + "环境阻塞已解除"状态订正(诚实标注 FE / 唯一红 / live opt-in 仍未达)。
注:验收用共享 _test 库(各 IT 专属、isolated、flyway.clean 重建);本轮新建的 3 个
muse_it_*_test 已 DROP 清理;远端 PG 凭据由用户提供、未入库。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 08:19:01 -07:00
lili
d38260fc51
feat(p1-market): market 写路径整改——member 暴露写端口,消除 market→member.dal BC 违例(BC 门全绿)
...
market 5 类(MarketAccountProjectionProvider/AdminMarketReviewServiceImpl/MarketInstallServiceImpl/
MarketLicenseServiceImpl/MarketPublishServiceImpl)此前直接构建 member.dal 的 AccountRecordProjectionDO
并经 AccountRecordProjectionMapper upsert 进 member 表——跨 BC 写路径违例(原 BcBoundaryArchTest 单点豁免登记)。
本次整改(ultracode 工作流:设计→实现→对抗验证;JDK21 scoped 实跑验证):
- member-api 新增对外写端口 MuseAccountRecordProjectionApi + MuseAccountRecordProjectionSaveReqDTO;
member-server MuseAccountRecordProjectionApiImpl 实现,读写 member 自有 DAL,整体平移原 upsert 语义
(insert/update 分支、update rows!=1 抛 IllegalStateException 防伪成功)。
- 安全边界:DTO 刻意不含 tenantId,由实现侧从 TenantContextHolder 注入,杜绝调用方(他域)伪造租户。
- 事务红线:写端口为进程内 Bean、不加 @Transactional,沿用调用方(market 的 REQUIRES_NEW)事务上下文,
market 业务回滚则投影一并回滚,原子性与原实现等价。
- market 5 类改消费写端口 + DTO 替代 DO,移除 member.dal 代码依赖;
BcBoundaryArchTest.KNOWN_VIOLATION_EXEMPTIONS 清空 → 通用 BC 门全绿(0 Architecture Violation)。
- 测试:insert/update/租户隔离语义随实现迁移至 MuseAccountRecordProjectionApiImplTest(4/0F);
provider 测试改 mock 写端口、保留"失败→写 blocked outbox→上抛 UNAVAILABLE"语义(5/0F);
market 其余 4 类测试同步(AdminReview 16 / Publish 14 / License 9 / Install 5)。
附带修复 round-2 一处假绿:round-2 把 ContentKnowledgeWorkOwnerFacade 重构为消费 MuseContentWorkOwnerApi 后,
旧测试 KnowledgeWorkOwnerFacadeTest 仍断言旧 WorkMapper 行为(当时验证构建在平台 QiniuSmsClientTest
时区用例处中止、未真正跑到 knowledge 模块,故漏网=假绿)。删除该旧测试,其装配守卫
(@ConditionalOnBean 值应为 MuseContentWorkOwnerApi)与 Unavailable 兜底失败关闭两用例并入
ContentKnowledgeWorkOwnerFacadeTest(3→5/0F),覆盖不丢。
验证(JDK21;-Dtest scoped 避开预存红 + muse-server -am):BUILD SUCCESS,日志无任何 <<< FAILURE/ERROR;
BcBoundaryArchTest 1/0F 且 0 Architecture Violation、AgentsInfraIntegrity 3/0F、ContractFirst 2/0F、
P1rApiCoverage 7/0F、member 4/0F、knowledge 5/0F、content 端口 7/0F、market 5 类全绿,全 reactor 模块 SUCCESS。
注:本仓存在预存红测试(非本轮引入,启用真实测试 + CI 接电后将暴露,已登记 总账/AGENTS 后续):
MuseAiTaskServiceTest 桩 eventPublishOutboxService 缺失致 11 例 NPE、MuseAiEventPublishOutboxMapperTest
需真实 PostgreSQL、平台 QiniuSmsClientTest 硬编码北京时区在非 +8 机器失败。故全量 reactor / CI-on-main
当前仍会因这些预存红呈 RED——本轮只声明 market 整改切片与 BC/契约/loop/覆盖门全绿,不声称全仓全绿。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 06:22:09 -07:00
lili
2cff86b808
chore(agent-infra): round-2 加固——据 Opus 评审堵 harness 漏洞
...
独立 Opus 评审发现、并经我核验为真的关键漏洞,本轮整改(JDK21 实跑验证全绿):
- P0-1 CI 接上电:maven.yml 触发分支 master→main(此前误配 master、仓库无该分支 → CI 从不运行,
所有门禁形同离线)、checkout/setup-java 升 v4。
- P0-2 BC 门通用化:ArchUnit 改为通用条件,覆盖全部业务 BC 间 .dal 方向(原仅守 AI 单向);
整改 knowledge 同构违例(ContentKnowledgeWorkOwnerFacade 改消费 MuseContentWorkOwnerApi);
market→member.dal 写路径违例单点登记待整改(KNOWN_VIOLATION_EXEMPTIONS + bc-boundaries §三)。
- loop 机械牙:新增 AgentsInfraIntegrityTest(每业务 BC 有 .agent、README 索引每篇 .agents 文档、总账在),
把写回/索引同步从自觉变机械。
- P1-1 去魔法数:覆盖门分域计数 28/21/37 改为派生自 APPROVED_*_COMPLETED_OPERATIONS.size()。
- openapi-diff materialize 为独立 workflow(待首跑验证)。
- 文档诚实化:AGENTS/总账/bc-boundaries 订正"已验证绿"等过度声称为与实际相符(BC 门 market 待整改、契约门仅存在性/结构)。
验证:JDK21 mvn -pl muse-server -am 实跑 7 类门禁/单测全绿(BcBoundary 1/0F 且 0 Architecture Violation、
AgentsInfraIntegrity 3/0F、ContractFirst 2/0F、P1rApiCoverageReport 7/0F、knowledge/ai/content 适配器单测全绿),BUILD SUCCESS。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 05:39:16 -07:00
lili
e181669197
chore(agent-infra): 建立 agent 开发基建、清理历史 churn 并以 BC 违例整改验证
...
本会话三部分交付,均经 JDK21 真实构建验证(非退出码,读 BUILD SUCCESS + Tests run):
1) Agent 开发基建(机械门禁优先)
- 入口与中枢:AGENTS.md、.agents/{knowledge,rules,skills,workflows}、CLAUDE.md 订正
- 订正 .gitignore:移除对 .agent/.agents 的忽略——它们是版本化 agent 基建,须入库(此前被忽略致克隆即缺)
- 机械门禁:CI 真跑测试(maven.yml JDK21、去 -Dmaven.test.skip)、覆盖台账去硬编码、
BC 边界 ArchUnit 门(BcBoundaryArchTest)、契约先行门(ContractFirstGateTest:Flyway 卫生 + OpenAPI 结构)
- 单一进度源 docs/mvp/进度总账.md + 7 个 BC per-module .agent + mise.toml(锁 JDK21)
- P1 增量:AiSuggestionMergeProjectionFacade(Gap A)、ContentSourceServiceImpl 事务化 outbox 回流(Gap B)
2) 过期历史文档清理(97 份 churn,git 可恢复)
- 删 docs/memorys(34)、agent-specs 审阅/执行版+迁移review(34)、superpowers/plans+specs(25)、
design-docs/临时+memorys(4);保留 superpowers/reports/coverage(门禁依赖)
- 唯一干货蒸馏入 .agents/knowledge/external-deps-and-gotchas.md;订正大纲/映射表/基线悬空引用
3) P1 harness 验证:消除已登记 BC 违例 ContentMuseWorkOwnerFacade
- content-api 新增只读端口 MuseContentWorkOwnerApi + content-server 实现(读自有 DAL);
AI 适配器改消费该端口、移除全部 content.dal 依赖,AI 业务规则与 4 消费者不变
- 删除 ArchUnit 豁免 → 门禁收紧(反向红 31 例 / 正向绿;适配器单测 13/0F、端口实现 7/0F)
注:muse-studio/src(SSE 相关 4 文件)与 muse-module-ai/pom.xml(移除孤儿 contract-server)
为本会话之前已存在的未提交改动,非本次工作,未纳入本提交。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 04:38:07 -07:00