633 Commits

Author SHA1 Message Date
lili
03fe73c7e7 docs(architecture): 设计文档域化重构 评审版 v2(双评审过 + 大厂风格规范)
将 docs/architecture + docs/agent-specs 的设计文档全量重写为 4 级域树(总索引→域主档→模块子档→详档)、6 域(产品/架构/后端/前端/运营/运维)、落 docs/architecture 单根的设计评审版。过 Codex+Opus 双评审,18 发现已处置(§8):范围 blast radius 补全、C2 头号约束更正(生成域在飞红线已解除)、回灌门可执行 schema、06-17 取代连锁接管;补大厂风格规范(人读散文/多图/少黑话/单档≤2000行)。批准前零改动,仅本评审档已落。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 13:24:48 -07:00
lili
9d463f0873 feat(saa): Phase 4 E_live 校准——像素活性 OR 状态活性(治无运动点击类假阴)
play.cdp.cjs E_live(守卫E):加 stateProgressed(score/remaining 玩前→玩后真变=游戏在响应输入) + 玩前/玩后态捕获(s0/s1);E_live pass = 像素 distinct≥2 OR 状态活性。
- 治无运动点击类(打地鼠等):画面只在命中瞬间变、像素采样易错过→E_live 假阴;但 score/remaining 会真变。
- 只加 OR、只放宽不收紧:真冻屏(score/remaining 不变、含仅计时 elapsed 变的)→stateProgressed=false→E_live 仍判否,绝不放过真冻屏。
- 验证:node --check 过;stateProgressed 5 例核验(命中→true / 冻屏→false / null→false / 仅时间变→false);对 gd-breakout 跑确定性 harness(无 M3)——liveByState 字段出、E_live pass、harness 不崩。
- 范围(创始人定):VLM 门(gateMode=vlm)降 backlog(VLM 单帧比 E_live 弱、有'好玩'判定天花板);#7 打地鼠经查实为 H_progress(已 Phase 1 移出硬门)非 E_live。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 13:00:30 -07:00
lili
ad22be9b3a feat(saa): Phase 2 Template-First gamedef 骨架机制(flag 旁挂默认关;A/B 负面=不迁移到便宜 thinking-off)
机制(OpenGame +10.1 杠杆试落):
- SaaSkeletons 加载器:archetype→3 金标准过门纯净骨架(gd-breakout/tictactoe/simon,verdict.pass=true+rt纯净+过 Phase3 坑门),按 (tick/input) profile 映射;经济类(merge/idle/tycoon)无近似骨架不登记=走无骨架,绝不喂低质骨架。
- 注入:SaaPrompts buildGameDefMessages(openai 首生成)/historyFirstUser(anthropic 首轮) 追加骨架段(结构参照、非照抄,题面不符以题面为准);救场轮不注。
- pom 拷 contracts/agent-loop/skeletons/*.json 进 classpath。flag -Dsaa.gen.skeletonFirst=1 开,默认关=生成字节零变、零回归。

A/B 实测(thinking-off + skeleton conc=12 vs A 基线):
- 7/12(58.3%) ≤ A 8/12(67%),失败仍 E_live 哑火(#4,5,9,11,12) → 骨架没把基线拉向 91.7%。
- 结论:+10.1 骨架杠杆【不迁移到便宜模型+thinking-off】——哑火是推理缺口(thinking 补)、非结构样例缺口(骨架补不了)。thinking-ON(anthropic 91.7%)仍是唯一真杠杆。
- 处置(创始人定 A):保留机制 flag 关、可逆——换更强模型/配合 thinking 时或有用;默认不启用。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:53:02 -07:00
lili
5bc0afb4bb fix(saa): 复审整改 C2 客观门必达集 + M3 碰撞尺寸不拷顶层 + Phase 3 玩法坑离线门
CodeRabbit/Codex 双复审整改(针对 4e5a7bbf):

- C2(critical, SaaGenNodes.objectiveGatesPass):改「A-E 五门全在场且 pass,缺任一即失败」。旧「出现才查」会被 harness 中途崩(runDriver 在 D/E 前抛、未 try/catch)钻空子——verdict 只剩 A_boot/C_frame 即 sawObjective=true 放行=崩掉的游戏判过。缺门=未跑完=失败才安全。
- M3(major, gd-runtime RESERVED += w/h/r):碰撞尺寸 w/h/r 不拷实体顶层——它们是 rt.overlap 读顶层的命中框(缺省16),拷上去静默改存量游戏命中框且违反 prompt 契约「顶层 e.w 永 undefined」。
- Phase 3(OpenGame +6.9 离线 linter):build-from-source 加两族【零误伤】玩法哑火坑门——①.tags 是 Set 误用数组法/下标/length ②漏 rt. 前缀裸引擎调(补 LOGIC_BANS 不拦 getEngine/getInput/restart 的洞,含此坑源装配过却运行期夭折)。命中→repair,真玩前修省一轮 CDP。self 跨 behavior 泄漏因误伤过门款(gd-tictactoe/simon 带 bug 却过门,self 确 per-behavior)降级待非阻塞 warning 通道。新增 gameplay-pitfalls.test.mjs:正例拦坑 + gd-breakout/tictactoe/simon 零误伤,32/32 全绿(含既有回归)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 12:28:41 -07:00
lili
fba7f3e030 Merge branch 'dev/2.0.0' of ssh://101.200.34.71:2222/zizi-al/games-development-ai into feat/mac-gamedef-qc-concurrent 2026-06-20 11:50:59 -07:00
lili
f4c6789312 docs(saa): 蒸馏 M3 thinking 治理/协议/流式 + rc 门修(91.7% 跃迁) → .agents 技能 + 决策档
§7 知识沉淀(仓库权威版,配套代码提交 4e5a7bbf):

- .agents/skills/saa-graph-orchestration.md:新增 §3.5「M3 thinking 治理 + 协议/流式」——M3 thinking 二元(无深度/budget、提示词压不住);openai adaptive 内联污染→只能关;anthropic 原生分离要质量走这条但必配【流式 StreamingCallChatModel + NO_PROXY webClientBuilder】否则阻塞整取大面积 SocketTimeout;#4407 对 1.1.2 过时;rc 门耦合 bug(playNode pass 别前置 rc==0)。e2e 段补 2026-06-20 跃迁(67%→91.7%、证伪模型天花板)。
- docs/plans/2026-06-20-…md:状态 banner→主线达成 + 追加 §7 结果与修正(rc 真根因 / thinking+协议杠杆 / 实测对照 / n=12 达标口径放宽 / 未尽项)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 11:38:59 -07:00
lili
4e5a7bbfb9 feat(saa): M3 生成质量收敛——客观门解耦 + 流式 anthropic 思考 → e2e 11/12(91.7%)
rc 门解耦修复(SaaGenNodes.playNode):play.cdp.cjs 退出码=九门聚合(verdict.pass?0:1),driver 门(G/H/I)挂→rc=1 反向否决客观 pass,致 Phase 1 客观门解耦形同虚设、空跑救场烧 token;改 rc∈{0,1}+objectiveGatesPass,all9 旧口径保留可回退。

思考治理(SaaStudioGraph):关 openai 路 M3 adaptive thinking(内联污染 JSON+撞 max_tokens 截断);改走 Anthropic Messages 协议(原生 thinking 块分离)+ StreamingCallChatModel 流式收取(治阻塞整取 SocketTimeout;#4407 对 spring-ai 1.1.2+生成无工具调用不触发,n=1 实测确认)+ webClient NO_PROXY + max_tokens 256k。

配套:gd-runtime 去脚枪(Plan A·S2 自定义标量拷实体,治冻屏) + play.cdp seek-food 驱动 + Phase 1b prompt 解耦 + e2e 旋钮(protocol/maxTokens)。

实测 conc=12 gamedef:thinking-off 8/12(67%,E_live 哑火×4) → thinking-on 11/12(91.7%,哑火修 3/4,残留 #7 打地鼠);代价 ~10x 慢 + 1.6x token。按创始人拍板以 n=12/91.7% 宣告达标(放宽原 plan003 n>=30 门)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 11:26:26 -07:00
zizi
991264b99b docs(复盘): 架构错误根因复盘 post-mortem(批二第二件)
「为什么结构化源项目做成了 JSON 生成游戏」的过程复盘。两条根因轴:
- 决策层(元根因): 评审只在范式内审细节、从不质疑「该不该是 JSON」这个前提;
  错前提被一路精致化+自产证据(双证/九门全绿)加固。codex+opus 双验证器独立同指此处。
- 知识层: 设计写对、实现没兑现——「沉默的重解释」(文档自称落地却中途换核心定义、无对账门)
  + AI无状态四放大器 + 整体一致性无主 + 规则没编译成机器门。
更深: AI 系统性偏向「可测量的」而非「好的」。
教训已蒸馏: AGENTS.md §6 条款10/11 + engineering-conventions §10.7 四道门 + 生成主线 ★终态定调。
本会话创始人四次「前提质疑」(agent管理/裸图官方性/SAA价值/九门=工具)实战印证该机制价值。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 17:31:07 +00:00
zizi
dbb0a76856 docs(治理+生成): 文档治理强制门体系 + 整体一致性负责人 + AGENTS.md 全中文化 + 品牌收敛 + 生成产物终态定调
- AGENTS.md: 品牌「造梦AI→绘境AI」+ 剔除 §9 gstack 安装命令(入口卫生) + 全文简体中文化
  + §6 条款10/11(强制门清单 / 整体一致性负责人=创始人+6c6g文档线 / AGENTS.md 自检)
  + §3.4 关键模块架构设计引用(指向 product-and-architecture.md, 不在入口重写)
- engineering-conventions §10.7: 4 道强制门可执行规格(品牌不变量 / canonical唯一 / doc↔code兑现 / 入口卫生)
  + 白名单(docs/ip 法务 + _archive 留痕豁免) + AGENTS.md 自检清单
- 生成主线架构演进路线.md: ★产物终态定调(创始人 2026-06-20 拍)——终态=src/ 多文件工程,
  gameDefinition 仅中间脚手架, new Function 跑 JSON 内嵌串=债; 配 doc↔code 兑现门;
  就地 reconcile v2/固定架构「都 ACTIVE 却冲突」
- 现行层品牌收敛: .agents/ + docs/architecture/ + docs/mvp/ 共 20 处「造梦AI→绘境AI」

由来: 2026-06-20 架构错误 + 文档治理复盘(codex/opus + 三 agent 对抗验证收敛);
根因 = 规则没编译成机器门 + 整体一致性无主。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 16:55:24 +00:00
zizi
f64a4ed1d7 docs(arch): 生成设计合理性·对抗审查裁决——部分合理,Tier0非通用范式
4视角对抗深析(逐条file:line核实):地基(确定性受控面+九门自动验收)是真护城河该坚持;但3个fundamental——名实不符(behavior.code承载全部逻辑却没进契约,additionalProperties偷渡)/表达力硬编码焊在4类色块玩具/好玩好看无下限托底(assets在build链零消费者)。是Tier0可靠产线非通用范式,最大风险=对标demo的Marvel/KOF。四改:正名混合范式+愿景分层(创始人级)/逻辑往声明式拽回/打通assets链/好玩从九门剥离。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 11:34:45 +00:00
zizi
317899ea69 docs(arch): 合成《生成主线架构演进路线》单一SoT——吸收06-19、并入06-20缺口、OpenGame档转外部标杆参考
把两条独立分析线(内部架构演进06-19 + OpenGame对照06-20)合并成一份散文体演进路线SoT:线A加固现有+线B补OpenGame能力层,两处交汇点(品类独立校验/player软门)去重,统一迁移序列对齐plan-001/002/003。06-19吸收后归档_archive;06-20标定位为外部标杆prior-art(缺口已并入路线)、供查OpenGame内部机理;_index改指向路线为生成演进SoT。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 09:42:18 +00:00
zizi
c450552051 docs(analysis): 改准 OpenGame 文档里 VLM Bench↔九门 的说法
创始人指出:九门不是 VLM Bench 的等价物。改准为——九门更强的只是机制层(Build Health,能不能跑);VLM 的 Visual Usability/Intent Alignment 那两轴九门判不了,对应我们偏弱的 player 软门(M3 视觉软门),是待补强缺口非已赢项;OpenGame 的 VLM Bench 代码其实未开源(只论文)。改表格行/已有等价物段/收口结论/_index 指针 4 处。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 09:23:19 +00:00
zizi
f1fae3f5e3 docs(analysis): OpenGame 对照分析与复刻缺口(散文·5 agent 读真源码综合)
clone github.com/leigest519/OpenGame(CUHK MMLab)真源码,5 agent 分片深读→综合人读散文。结论:OpenGame=Qwen-Code二次fork+4原子工具+六阶段SOP(system-reminder接力);我们SAA图比其命令式循环更确定、核心不落后;真缺3处=约束厚度(template_api+GDD契约)/经验复利层(Template+Debug Skill)/资产线(mmx);27B专训刻意不走、VLM Bench九门已更强。_index加★指针。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 09:12:09 +00:00
lili
0cd1496399 feat(saa): U5 openai 格式 M3 路 — thinking:disabled(extraBody)+ openai NO_PROXY
Plan A U5「切 OpenAI 格式」(创始人 2026-06-19):
- model(): MiniMax 系经 OpenAiChatOptions.extraBody 注入 thinking:{type:disabled} 关推理(治 chat.completions 内联 <think> 污染;探活实证 reasoning:effort:none 不被网关认、唯 thinking:disabled 有效);仅 model 名含 minimax 注入,deepseek 字节零变
- openAiApiNoProxy(): openai 路同 anthropic 旁路系统代理(macOS clash 把 Tailscale IP 走代理→502);dispatcher openai 分支改用之

实测(openai+M3+thinking off,K=10/diverse-10):0 超时/0 <think>残留/0 502 = 路干净;成功率 1/10(10%)。
三臂对照(同 diverse-10/K=10):deepseek(anthropic) 30% > M3(anthropic+thinking,超时假象) 10% = M3(openai+thinking off,干净) 10% → M3 在 gamedef 生成上真逊 deepseek,非协议/超时假象。失败主因 llm_error(无有效 bundle)+ 到门者 F_wiring/G_input/E_live/H_progress(driver/引擎接线)——两模型同款,杠杆在 pipeline/接线非换模型。
不碰 gd-runtime/build-from-source(Plan B 域)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 11:47:46 -07:00
zizi
93c63f16ec docs(arch): 生成平台架构演进-review(多架构师综合)——零rewrite/大面积keep,策略外置+九门去自评+单轨化
5 架构师据真实代码诊断+逐块keep/optimize/refactor/rewrite+迁移序列,对抗评审剔失实背书,总架构师综合。承重论据已复核属实(registry.yaml/V18·V20/land·markBuilt/llm_error)。挂入 plan-001/002 迁移,不另起编号。_index 加★指针。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 18:20:51 +00:00
lili
1cd199cb3c feat(saa): U5 M3-only override(bake-off)+ 10 品类多样验证集
Plan A U5「只用 M3」(创始人 2026-06-19;deepseek 留作最终模型对照):
- SaaStudioGraph.Models.allSame(model): 全 11 角色统一模型工厂(bake-off 用)
- SaaGraphDispatcher: saaForceModel 非空→Models.allSame(全角色统一、无跨家回退)+ 单模型路日志;空→stage1 默认(deepseek 主力,字节零变)
- AigcExecutorProperties.saaForceModel(默认空=字节零变)
- SaaFullGraphE2eTest: -Dsaa.e2e.model flag(全角色统一模型)+ [config] 打印
- saa-e2e-briefs-diverse10.txt: 10 个不同玩法品类(覆盖 U4 全 8 driver 家族 a-h),优于按行序前 10(仅 4 品类聚集)

验证:编译绿(test-compile exit 0)。默认 saaForceModel 空→stage1(deepseek)字节零变,仅 dispatcher=saa 生效。
实测对照(K=10/diverse-10/anthropic):deepseek 主力基线 3/10(30%,主因生成 llm_error,到门者败于 F_wiring/G_input/E_live/H_progress);M3-only 基线量测中。
不碰 gd-runtime/build-from-source(Plan B 域)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 10:22:45 -07:00
lili
5fde4e2609 Merge remote-tracking branch 'origin/dev/2.0.0' into feat/mac-gamedef-qc-concurrent 2026-06-19 09:35:43 -07:00
lili
b3f2fe8e85 feat(saa-e2e): U5 量测前置 — e2e 接线 anthropic 协议 + 可配端口基址(默认字节零变)
U5 收敛环前置(量测面 additive,默认全字节零变):
- -Dsaa.e2e.protocol(默认 openai)→ props.setSaaModelProtocol:补 U1 量测面孪生(P1-6)。旧版无此接线 → 会量 openai 默认路而非 anthropic = 违 R1「量==发、在用协议=anthropic」。
- -Dsaa.e2e.playPortBase/cdpPortBase(默认 4320/9222)→ props.setSaa{Play,Cdp}PortBase:与本机 superpowers-chrome(持 9222)等进程共存防撞(量测可 cdpPortBase=9322;serve-and-play 净场只杀本槽端口、不误杀他者)。
- [config] 打印增 protocol/playPortBase/cdpPortBase。

验证:pilot 实跑 [config] 行确认三 flag 生效(sourceMode=gamedef, protocol=anthropic, playPortBase=4320, cdpPortBase=9322);编译绿。默认 openai/4320/9222 = 现行字节零变。
注:同次 pilot 揭网关 deepseek 全系(flash/pro/chat/v3)在 svip 组无渠道(全 503 model_not_found)阻塞生成,唯 MiniMax M3/M2.7 可用——属网关侧、待创始人裁;本提交仅 harness 接线,与模型可用性正交。
不碰 gd-runtime/build-from-source(Plan B 域)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 09:33:57 -07:00
lili
12abfbac4a feat(saa): U3 gamedef 量测路 + 有界并发池 harness(默认 K=1 字节零变)
003-U1 U3「量对路 + 有界并发(量测用)」:
- AigcExecutorProperties: saaConcurrency(默认 1)/saaPlayPortBase(4320)/saaCdpPortBase(9222) — 默认全为生产字节零变值
- SaaGraphDispatcher: newSingleThreadExecutor→newFixedThreadPool(K) + Semaphore(1)→Semaphore(K) + K 个错开端口槽池(第 i 槽 playPort=base+2i/cdpPort=base+i);runGraphAndCallback 起手 take 槽 + acquire 许可、整 job 持槽、finally 必归还防泄漏;端口覆盖放 runGraphAndCallback(保 buildInputs 签名不变,反射测兼容);构造期 null-properties 兜底(K=1+默认端口,修 TraceTest NPE);allocPortSlots/normalizeConcurrency 抽为可单测纯函数 + 共享面审计结论入注释
- SaaFullGraphE2eTest: 加 -Dsaa.e2e.sourceMode(默认 factory,量 gamedef 须显式设=修发现②量错路) + -Dsaa.e2e.concurrency(默认 1)
- 新增 saa-e2e-briefs-gamedef.txt(34 条多品类≥30) + saa-e2e-briefs-holdout.txt(12 条留出集,与调优集及内置 ALL_BRIEFS 零重叠)

量对路(发现②修复):旧 e2e 只 setDispatcher("saa") 未 setSaaSourceMode → props 默认 factory(iife),量的是旧路;现 setSaaSourceMode(sourceMode),量 gamedef 真基线须 -Dsaa.e2e.sourceMode=gamedef。
K=1 字节零变:newFixedThreadPool(1)≡单线程串行 + Semaphore(1) + 仅槽 0=[4320,9222],与改造前逐字一致。共享面审计(只读 serve-and-play.sh,脚本未改):K>1 下端口为唯一真冲突点,净场 lsof|kill 只杀本槽端口、static-serve 只读共享根、evidence 按 gameId 隔离 → 跨 job 安全。
并发口径(plan 2026-06-19 创始人指令对齐):K 是量测用「真玩并发」上限,受 Mac 实时九门帧预算硬限(C_frame/E_live,~3-4),非 M3 API 限;生成端(网络限)的宽并发(gen≫play 时)留 U5 量 gen:play 占比后按需解耦,不在本单元。
验证:编译绿;GateLogic+TraceTest+NodesRegression+PickAnswer 指定集独立复跑 exit 0、零失败标记;agent -am 全 SAA 包 101/0/0/3skip。真跑 K 路校准(verdict 对等+结构隔离)延 U5 执行期。
默认 K=1/sourceMode=factory 现行字节零变;不碰 gd-runtime/build-from-source(Plan B 域)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 08:48:53 -07:00
lili
0daaac0306 fix(smoke): U6 smoke-test.sh 可移植性——裸 $var 紧贴全角字符加花括号(R3)
bare `$var` 紧贴全角()(等 → strict-locale bash(macOS 5.3)把多字节首字节并进变量名 → set -u unbound;
smoke 在 lili-mac 一贯断在 template/list 行。4 处加 ${}(tcount/VID/QSCORE/SID),语义不变、跨环境可跑。

U6 验证(staging 五业务链路,本机 curl 可达):11/12 真绿——创作 draft / 发布(feed/zones/project) /
试玩取包(vid=93112) / 广告钱包(ad/trade) / 数据回路(qualityScore=60)。唯一 FAIL=template/list count=0
= W-CLEAN 清旧四模板 + generic 桥接的设计态(总账 §1 记非回归);R3=链路就绪门(不代理 R1)成立。
follow-up: template/list assertion 按 generic 桥接更新(非本单元业务语义裁定)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 15:43:33 +00:00
lili
08aa0c13d0 feat(saa-prompt): U4 DESIGN_SYSTEM 8/8 driver 决策树 + gatespec 约定
003-U1 杠杆③(上下文)+②(门约定):
- DESIGN_SYSTEM 规则③补齐至 8/8 driver(对齐 play.cdp.cjs:206-214):补 tap-pairs/key-cycle/drag-aiming/aim-fire(各含何时选/worked-example/反例/命门),旧 none 重标 (i)
- 命门:障碍/目标跟踪类须显式产命名实体(nextGap/nextPlatform/ship.angle)+ 消除类 tap-pairs 得分落 score;drag-aiming 抛射 launch 常数 gd 路难导出→诚实标「优先 iife 源」
- GAMEDEF_SYSTEM 同步 driver 命名/进展约定;门约定:消除类 tap-pairs+score 过 H、I_control 按 control-scheme 分型(不改门本体)

验证:编译 BUILD SUCCESS;回归 49/0(SaaStudioNodesRegressionTest 14〔原8+新6 gatespec 保真:8 driver verbatim+逐 driver 字段+ballPath 归一隔离〕+ topology 30 + pickAnswer 5)。
只动 SaaPrompts 常量 + 测试;不碰 gd-runtime/build-from-source/.agents。

跨 Plan 遗留(转交 6c6g/Plan B):drag-aiming gamedef 路需 gd-runtime entityView 增 launch{gravity,powerScale} 投影通道才能解析瞄准;aim-fire 双路 targetsPath 命名分叉(iife asteroids / gamedef targets)已分别教对;真效(driver 选对率)留 U5 量。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 08:26:41 -07:00
lili
def1f4244a docs(plan): Plan A 记 T-FUTURE-1 thinking 历史出站丢失(创始人指示:记录+未来解决)
stock spring-ai-anthropic 1.1.2 出站 buildMessages 丢 thinking 块→interleaved 保留不可达;U2 已简化 text 历史。
未来真解候选:① 自拼 AnthropicMessage 绕过 buildMessages ② 升 spring-ai 库版本 ③ 评估 interleaved 对生成质量真实增益。
触发:U5 收敛若证 thinking interleaved 是达 ≥80% 的关键杠杆则立项。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 08:16:07 -07:00
lili
766749d3c1 feat(saa): U2 连续对话救场(text 历史)+ P1-1 交替修 — 简化自 thinking 保留
003-U1 U-B(创始人 2026-06-19 定:简化为 text 历史):
- 历史保留:anthropic 路把上一版【答案文本块】跨轮入历史(K_MSG_HISTORY_GAMEDEF/FACTORY 隔离;ReplaceStrategy+节点内 read-append-write),连续对话救场=模型看上一版答案+失败 verdict 增量修(SaaPrompts.historyRepairUser 去"重出完整模块")
- P1-2(对抗验证反编译证):stock spring-ai-anthropic 1.1.2 出站 buildMessages 丢 thinking 块→内存留 thinking 一下发即拍平成 text→"interleaved 保留"不可达;故 appendHistory 滤 thinking 块(isThinkingMsg=metadata 含 signature)只留答案,简化 boundHistory(最近 K=3 轮 text)。真 interleaved 留 plan T-FUTURE-1
- P1-1(对抗验证证会 HTTP 400 硬崩):失败轮 append 悬空 user→连续 user→Anthropic 拒。双保险修:失败轮整轮不入历史 + assembleConversation 末条 user 去尾
- openai 路 historyEnabled=false 字节零变(useHistory=historyEnabled&&!regeneratePath;builder/SYSTEM 一字未动)

验证:serde/fidelity/失败路 6/0(含 FlakyChatModel 失败路回归门 assertStrictAlternation)、回归 45/0、全 saa 包 92/0/6、烟测 1/0;真网关多轮交替 wire 验证证 P1-1 修有效(system+user+assistant+user 无 400)。
不碰 gd-runtime/build-from-source/.agents(Plan B/6c6g 域)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 08:16:07 -07:00
lili
0a82a49f47 docs(agents): distill U2-U6 staging 验证 + dev/2.0.0 boot-repair 三类教训
ce-work U2-U6(staging 真验证)期间 §3 隔离门连拦 3 类 dev/2.0.0 boot P0,distill 防复发:
- engineering-conventions §1.4:admin/app 双包同名 controller 必显式 bean 名(裸 @RestController 默认 bean 名相撞=ConflictingBeanDefinition 拒启;含自检 grep)
- engineering-conventions §8:Flyway 迁移单一事实源(只放 huijing-server 聚合,禁 module 自带副本=同版本重复拒启;含自检 find)+ §9 Checklist 指向聚合器
- ui-walkthrough-cdp §1:lili-mac 系统代理→Chrome 假 502(curl 直连绕过、判据=ssh localhost)+ superpowers-chrome 陈旧会话坑;正解永远 mini-desktop localhost CDP

(actuator/health 假探活已由重部署 agent 入 staging-ops §5。)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 06:43:31 -07:00
lili
1590f39666 docs(plan): Plan A 实测纠偏 + 机器分工放宽 + 网关治本 + Plan B U1 基底对齐
- U1 协议/Approach/Files 实测定死(host 根 baseUrl 非 /anthropic、x-api-key 非 Bearer、Proxy.NO_PROXY、多 Gen 取答案靠 signature 键);必修三险①/R-1 标已解
- 机器分工(创始人放宽 2026-06-19):Mac 主力批量验证/收敛量测(能重载不休眠),mini-desktop 只出 final evidence
- 网关对 M3 原生 thinking 曾 ~50% 非确定性 → 创始人网关侧治本 → 稳定原生
- P0-2(单一 budget 撞小角色)→ per-role 自适应;P0-2 资产盲注脚软化(Plan B U1 db14845d asset-orphan 闭合)
- KTD8 运行时钉 = Plan B U1(db14845d)/dev 81c1b2cf

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 06:18:55 -07:00
lili
19f666cd5d feat(saa): U1 用对 M3 — Anthropic 协议 client(flag 旁挂)+ 多 Gen 取答案 + per-role thinking budget
003-U1「用对 agentic M3」:
- AigcExecutorProperties: saaModelProtocol(默认 openai)/saaAnthropicBase(host 根)/saaThinkingBudget
- SaaStudioGraph: RoleModelFactory + anthropicModel(host 根 baseUrl·x-api-key·Proxy.NO_PROXY·per-role budget=min(全局,maxTokens-1024)≥1024 才开 thinking) + openAiFactory(逐字等价旧路) + factory-based build 重载
- SaaGraphDispatcher: ensureGraph 按 saaModelProtocol flag 选 openai/anthropic 工厂(openai 默认路调用不变)
- SaaStudioNodes: pickAnswerText 遍历 getResults 取「无 signature 末块」为答案(单 Gen=旧路字节等价),替 callAndRecord/judgeVision 的 getResult().getText()

实测定死(spike + 创始人 2026-06-19 网关治本):x-api-key→M3 原生 thinking 分离 block(getResults size=2,thinking 带 signature);Bearer / 带 /anthropic 前缀 = 坑。
验证全绿:编译;烟测 size2 取对答案;P0-2 专项(全 11 角色 assemble 不崩,SaaAnthropicAssembleTest 2/0/0);回归 43/0/0(openai 字节零变);依赖树 spring-ai-anthropic 1.1.2 无漂移/无 autoconfigure。
flag 默认 openai 现行字节零变;不碰 gd-runtime/build-from-source(Plan B 域)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 06:18:55 -07:00
lili
ff46b90ee7 fix(flyway): 删 5 个 module 迁移重复副本——消同版本重复致 dev/2.0.0 启动失败(P0 #3)
Flyway 在 classpath 撞同版本即拒启(Found more than one migration with version):V6/7/8/9/18 既在
huijing-server 聚合(V1-V25,已应用到 live = 单一事实源)又各在 module-server 重复(06-18 各 lane 加功能误放)。
删 module 副本、留 huijing-server 聚合:
- V6/V8/V9/V18 两边 md5 完全一致 = 纯去重
- V7(trade) 仅注释差异(列定义同;game_trade_grant 表在 V21 不在 V7)→ 留 huijing-server 已应用版
  (改已应用迁移会 checksum 漂移;module 副本的注释改动弃)
全仓扫描:删后无重复版本、无 module-only 迁移(30=25 聚合+5 副本)。库停 V17 未污染。
注:依赖自身 db/migration 的 module 测试若存在需后续改 test-scoped schema(本修以解 boot 为先,redeploy -DskipTests 不受影响)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 05:55:09 -07:00
lili
de3bf4cb62 fix(compliance): 消 CompliancePolicyController bean 名冲突(P0 孪生,补齐 84c6bd02 漏修)
84c6bd02 仅修 ComplianceAppealController 一对;隔离 :48090 门又拦下孪生:CompliancePolicyController
(admin/app 同名裸 @RestController) → 默认 bean 名再撞 → 仍 ConflictingBeanDefinitionException 启动失败。
全仓扫 108 个裸 controller,这是唯一剩余同类冲突。各加显式 bean 名:
admin→compliancePolicyAdminController / app→compliancePolicyAppController。
修后全仓再无重名裸 controller(扫描实证)+ 无 @Service/@Component 同类冲突 → dev/2.0.0 后端应可启动。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 04:59:19 -07:00
lili
84c6bd0233 fix(compliance): 消两个 ComplianceAppealController bean 名冲突——dev/2.0.0 后端无法启动(P0)
admin 与 app 两包下同名类 ComplianceAppealController 均用裸 @RestController → Spring 默认 bean 名
都是 complianceAppealController → ConflictingBeanDefinitionException → 整个 context 启动失败。
staging 重部署隔离 :48090 安全门拦下此回归(live 未切、零回归)。各加显式 bean 名消歧:
admin→complianceAppealAdminController / app→complianceAppealAppController。
路径 /compliance/appeal 相同非冲突(框架按包名 controller.admin.*→/admin-api、controller.app.*→/app-api 加前缀区分)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 04:50:24 -07:00
lili
b6cadd8394 docs(plan): plan003 Plan A gen-done 执行计划(用对 M3→≥80%→两步 flip)
Plan A = gen-done 生死门 = 003-U1(用对 agentic M3) + 003-U2(两步 flip)。
已过双评审(Opus 对抗式+可行性,代码核证)整改 5 P0 + 7 P1:
- Anthropic 多 Generation 响应形(block0=thinking,须遍历 getResults)
- checkpoint 序列化潜伏坑(e2e harness checkpoint-off 隐藏,staging 才炸)
- 独立性纠偏(量测执行 Plan B gd-runtime/build-from-source → KTD8 运行时钉)
- ≥80% 机制门口径(对资产质量盲)+ 并发共享面审计 + measure-first U-C 闸控
对齐 Plan B U1(db14845d,asset-orphan 已闭合)为收敛运行时基底。
Codex(codex-rescue) 未出可用评审 → §6.8 Opus 单评回退。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 03:04:23 -07:00
lili
079778fc03 feat(saa-prompt): DESIGN_SYSTEM 补 flap-to-gap/seek-x driver——闭合 driver 词汇缺口上半(cause#2)
规则③ 由 (a)paddle/(b)tap-targets/(c)none 扩为含 (c)flap-to-gap(Flappy:bird.y/bird.vy/nextGap.y)
+(d)seek-x(Doodle:bird.x/nextPlatform.x);键到 gd-runtime 现有按实体 id 投影(无需改引擎),要求代码
agent 把控制体+下一障碍建成命名实体(bird/nextGap/nextPlatform)每帧更新。

实证(deepseek flappy/doodle/runner):driver 选型已修——模型现正确产 flap-to-gap/seek-x(此前 wrong/none)。
cause#2 下半未闭:便宜模型不稳产 nextGap/nextPlatform 障碍跟踪实体(doodle 经 repair 产出、flappy/runner 仍缺)
→driver 半接→仍挂;属生成能力(障碍实体生成)+ repair 反馈须点名缺失实体,留 6c6g/003-U1(余 4 driver
tap-pairs/key-cycle/drag-aiming/aim-fire 同法,契约见 play.cdp.cjs)。SaaPrompts 经 mvn BUILD SUCCESS。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 03:04:23 -07:00
lili
d5d3d09b0f fix(gen-qc): cutover 早读三修——并发化 + assert 进展过滤 + M3 thinking 关闭/宽松解析
1) 并发化(gamedef_quickcheck): ThreadPoolExecutor 跨局并行,每局独立 port/cdpPort(4400+i/9300+i)
   + flush 日志;局内 repair 链恒串行→聚合过门率与串行等价。
2) assert 进展过滤(SaaPrompts.extractGatespec 产线 + quickcheck 镜像): 有进展断言时只留进展断言
   (increased/decreased/changed/比较),丢终局态断言(phase/result==gameover/win、误编码 score=="gameover")
   ——bot 限时常到不了终局但 score 已涨=真有进展(tictactoe 0→9/saolei 0→12 假阴修正);无进展断言则全留
   (规避类 result==win 为唯一信号)。终局完成度另由 expectLatch 把关。
3) M3 协议修(_client._extra_body + extract_json_obj): MiniMax-M3 OpenAI 端点默认 thinking=adaptive、
   <think> 内联进 content→复杂局飙 token→max_tokens 截断丢 JSON(假"parse 失败")。官方关法 thinking=
   {type:disabled}(按 model gate MiniMax);严格 json.loads 失败回退 json_repair(镜像后端 looseParse)+
   <think> 剥离兜底。

实证: M3 parse 6/13→2/13、过门 2→3/13,与 deepseek(4/13)同档=M3 不弱(旧 2/13 系截断伪象)。
SaaPrompts 经 mvn 反应堆 BUILD SUCCESS;Python 经 py_compile+单测+真跑。快走查口径;权威 cutover≥60% 在 mini-desktop。
产线 follow-up(6c6g): Java M3 fallback 路同款 thinking 截断潜伏 bug,须补 thinking:disabled。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 03:04:23 -07:00
zizi
81c1b2cfa9 merge(planB U1): 引擎资产渲染 + asset 孤儿闭合(死代码修) → dev/2.0.0
Plan B(core-done) U1:六类资产 ref→assets→drawImage 渲染链路 + GAMEDEF_KEYS 孤儿闭合(assets 在 sourceProject 顶层正确抽取并入运行时 GameDefinition,消死代码)+ drawEntity shape:sprite(受控面只取宿主预载 boot.assets/运行时不碰 DOM/缺图源降级类目色占位)。已过 ce-code-review(P0 assets 层级/P1 契约同步/校验洞)+ 6c6g SHIP review。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 09:59:40 +00:00
lili
db14845d12 fix(review): U1 资产渲染——ce-code-review 整改(P0 assets 层级 + P1 契约同步 + 校验洞 + P2 群)
6-reviewer ce-code-review 揪出并整改:
- P0(api-contract,读 schema 实证): assets 在 source-project.schema sourceProject 顶层(非 gameDefinition,
  后者 additionalProperties:false)→ 原加进 GAMEDEF_KEYS 丢合规顶层 assets。改:validateSourceProject 从顶层
  sp.assets 抽取(容差回退 gd.assets)并入 cleaned.assets;GAMEDEF_KEYS 移除 assets;测试改顶层。
- P1(api-contract+project-standards 双证): runtime-api-2d.d.ts 同步—GameDefinition.assets / RenderComponent
  shape:'sprite'+asset?/ref? / AssetSpec / createRuntime boot.assets(contract-first)。
- P1(adversarial conf100 复现): 非字符串 asset.ref(对象)绕过校验→零 repair 信号死循环 → ref 须非空字符串。
- P2(adversarial+maintainability): id/ref key 空间歧义 → drawSprite 经 asset.ref 查 boot.assets(宿主按 ref 键)。
- P2(maintainability): 数组化循环复用 GAMEDEF_KEYS 去重 / placeholderColor 补 music 色 / 弃 c.sprite 别名 / 32px 具名 DEFAULT_SPRITE_SIZE。
- P2(project-standards+api-contract): 宿主预载半-wired → game-host.d.ts + boot-game-host.js 加 HOST TODO 指针。
测试: 重写 assets(顶层/非串ref/非数组/端到端) + sprite 7 路(ref键/无图/image=null/抛错/悬空/music/asset:0)。node --test src/host 31/31 绿。

残留(已 TODO 指针 + plan U1 剩余 + task 记录): 宿主 loadAssets→boot.assets 真 wiring(浏览器耦合、node 难测)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 01:32:07 -07:00
lili
73d3391696 feat(engine): U1 引擎资产渲染地基 + asset 孤儿闭合(死代码修)
plan 2026-06-19-001 Plan B · U1。
- build-from-source: GAMEDEF_KEYS 纳入 assets(原缺→line 101 strip 掉=六类资产产物永不被消费的死代码,
  评审 P0);assets 六类(sprite/character/effect/scene/ui/music)/ref 校验转 repair 信号。
- gd-runtime: drawEntity 加 shape:'sprite' 分支 → 经 boot.assets(additive,宿主 init 预载图源)drawImage 居中;
  无图源降级类目色占位 rect(前向兼容,宿主预载落地后自动转真图,不崩不空屏)。
- game-host.d.ts: additive 扩 boot.assets(assetId→{image})落实 init「装资产」意图,零破坏既有 boot。
- 测试: build-from-source「assets 存活白名单+六类/ref 校验」、gd-runtime「sprite drawImage/无图占位双向」。
  node --test src/host 31/31 绿(无回归)。

剩余 U1 wiring(单列·触宿主实现侧): 宿主 init 预载管线 asset ref→image map→boot.assets;
六类资产 demo 截图 + 孤儿闭合截图需 mini-desktop CDP。R11 代理判据待真图源接通后验。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:57:26 -07:00
lili
0518d24592 docs(plan): plan003 Plan B — Phase-1 core-done 验收闭环执行(双线拆分)
ce-plan 据 2026-06-19 验收闭环需求档产出 Plan B(core-done):引擎资产渲染(原003-U5)+
验收 harness(核心纵切e2e/广度抽检/8页走查/smoke)+ 双里程碑收口。
依赖排序:Phase1 六单元全独立(执行期可并行 fan-out)、Phase2 gated on gen-done(Plan A ≥80%产出)、Phase3 最终收口。
gd-runtime 整面归本档(解 U5↔U1 共面冲突,Plan A 走 DESIGN_SYSTEM)。gen-done(U1/U2)=Plan A 另 session。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:45:00 -07:00
lili
e5c0497d26 docs(brainstorm): plan003/Phase-1 验收闭环需求档(过 Codex+Opus 双评审)
ce-brainstorm「completed plan 003」产出:定义 plan 003 = Phase-1「done」验收判据闭环——
gen-done(A) ∧ core-done(B∧C∧D) 双里程碑独立收口 / 证据深度=核心纵切真机+广度抽检 /
生成 done 绑死已 flip saa / 设计完整性 rubric 已定标(5项×0-2·资产对位一票否决·均分≥1.4·N=8) /
U5 升 R4/R9 前置 / 性能可用性轴延后 Phase-2(风险接受) / 日历闸门项排除。
过 AGENTS.md §6.8 Codex+Opus 双评审,整改 5 P0+6 P1+多 P2 文内,3 跨档 TODO 落 003-U2/U5。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 00:04:27 -07:00
zizi
f7f1262b05 docs(plan): 生成质量 v3 战略转向——用对 agentic 的 M3 提主路(Anthropic协议+thinking/历史保留+工具循环)
- 根因分析档 v3 重写:整合二轮双评审 P0(n=5 非 13 / M3 论点降工作假设 / 点击消除 H 归上下文非门测错 / a3 救场回传未做 / best-of-N 整图串行) + M3 双协议实测探针 + 官方 Interleaved Thinking 文档
- 最深根因=用法错:M3 是 agentic SOTA 却被当一次性 JSON 填空机用 + thinking 剥离 + 历史不留;QC thinking:disabled 是错补丁(该分离+保留)
- 003-U1 杠杆重排:① 用对 M3(U-A Anthropic /v1/messages + U-B 完整 response/thinking 入历史 + U-C agentic 工具循环=接法B 提主路)② 测量/门修(不改 H 门本体)③ 上下文 8/8 driver ④ best-of-N 次要;加第 0 步真基线门(n≥30 + 证伪实验)
- 退路分支/R2/已拍板 #2:ReAct 从 P2 contingency 提为 M3 主路;升强档/Claude premium=退路
- M3 身份确认:真 MiniMax agentic 双协议模型(非 Claude 改名),探针 /v1/messages 返原生 ['thinking','text'] 块

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 01:33:38 +00:00
lili
affb507bc3 docs(.agents): 沉淀 003-U1 e2e 验收门工具化 + 「SAA 路无¥(token≠¥,折¥=F3)」坑
扩 saa-graph-orchestration「真·全图 e2e 测成功率」章一条:SaaFullGraphE2eTest 003-U1 工具化
(n≥10/外部 brief 文件、minSuccessRate 可配硬门默认不设、token 成本会计软警告、模型无关单测),
并记关键坑「SAA 路无 ¥ 数据(SaaGraphDispatcher cost 整段省略,折¥=F3)→ 别接¥门、别造假¥」。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 16:30:43 -07:00
lili
730b399dd6 test(saa): 003-U1 验收门工具化——SaaFullGraphE2eTest n≥10 + minSuccessRate 硬门 + token 成本会计
把 SaaFullGraphE2eTest 从「内置 5 条 / 只断≥1 跑通」改造成可作 flip 前置硬门的客观量测工具
(plan 2026-06-18-003 / 003-U1;该路代码 001-U1~U4 已在 dev/2.0.0 落地,本单元只工具化验收门):

- brief:内置扩 5→12 条多品类(偏 realtime/physics/tap-targets/clickable)+ -Dsaa.e2e.briefFile
  外部文件(行式,去空白/跳空行/跳 # 注释,解析空则回退内置);-Dsaa.e2e.n 取前 K(未设=全量)。
- 成功率门:-Dsaa.e2e.minSuccessRate 可配硬断言;默认不设=仅存在性(保 003-U1「先实测真基线再收敛」、
  不破普通构建),显式 0.8 即 flip(003-U2)前置硬门。
- 成本会计:从回调 trace best-effort 抽 prompt+completion token + 升 stage2 计数作成本证据;
  -Dsaa.e2e.maxTokensPerGame 仅软警告不硬阻断(遵创始人「质量优先、允许临时破价、记账对账」)。
  ¥折算 blocked on F3(SaaGraphDispatcher cost 整段省略,§6.3)→ 不造假¥。
- 纯逻辑抽 8 静态方法 + 新增模型无关单测 SaaFullGraphE2eGateLogicTest(覆盖 happy+边界)。

验证:mvn test-compile 全 reactor BUILD SUCCESS;SaaFullGraphE2eGateLogicTest 12/12 过;
e2e 无 -Dsaa.e2e=1 仍 Skipped(门控完好)。质量收敛到≥80% 须 mini-desktop 权威量测(blocked,非本单元)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 16:30:43 -07:00
zizi
9b280d668e docs(ledger): 002 判收口标记 + U11→003-U5 回填(创始人 2026-06-18)
总账顶栏本轮日志补:plan002 status=completed、真验证并入 003-U4、引擎 U11→003-U5、carry-forward 入 backlog(3bf6deb7)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 23:15:02 +00:00
zizi
3bf6deb70a docs(plan): 002 判收口完成 + U11 引擎收尾移入 003-U5(创始人 2026-06-18)
- 002: status=completed;U1-U10+P-OPN-08 已交付(后端 447 测试绿+各单元 codex 评审;前端 build 绿+mock),真验证并入 003-U4;加收口横幅
- U11 引擎资产渲染(六类资产 ref→draw + asset 孤儿 GAMEDEF_KEYS + 4 短板)移出 002 → 003-U5:与 003-U1 共改 gd-runtime/build-from-source,归生成运行时串行序列(双评审 P0-2)
- 003-U5 含评审修订:验收门改可断言(九门测不到资产→build 单测+截图比对+端到端孤儿闭合)、闭合 U6 素材 ref 消费链(P2-2)
- 003: 刷新过期"零行已建"状态表→001 已合 dev/2.0.0(39c16630)+时点纠正横幅;003-U4 前置补 003-U5
- carry-forward: P-ACC-03 feed 卡 ageRating / P-CRT-12 进度展示 → backlog
- 评审 provenance: U11 内容本次 Opus 评审 P0-2 已专门分析并建议本 relocation

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 22:59:04 +00:00
lili
ceafedfed3 docs(.agents,mvp): plan002 收口续——进度总账回填(U8/U9/U10前端 + P-OPN-08公开API) + @PermitAll公开读纪律蒸馏(P-OPN-08实证)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 14:33:42 -07:00
lili
8238bf2d7a merge(P-OPN-08): 创作者公开聚合API(project+telemetry @PermitAll·仅status==4·无PII·评审SHIP 0P0/0P1+P2软降级整改) → dev/2.0.0
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 13:56:46 -07:00
lili
5f2d0021fd fix(telemetry): P-OPN-08 评审P2整改——公开统计下游异常软降级零汇总(契约永不报错·对齐list非脆失败)+测试
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 13:56:42 -07:00
lili
1ebedf2939 merge(002-U9): studio前端 素材中心/玩法模板中心/创作者公开主页(public) + P-ACC-03徽标(build绿;feed卡ageRating gap已记) → dev/2.0.0 2026-06-18 13:45:09 -07:00
lili
c7a58b8c45 feat(project,telemetry): P-OPN-08 创作者公开聚合API@PermitAll(仅status==4·聚合统计无PII)
新增创作者公开主页两只读端点(契约+实现+单测,全 additive):
1) GET /app-api/project/public/creator/{creatorId} @PermitAll
   → PageResult<PublicCreatorProjectRespVO>{id,title,summary,coverUrl,ageRating,
     playCount,likeCount,publishTime,creatorId,creatorName};仅 status==4 已发布作品。
2) GET /app-api/telemetry/public/creator/{creatorId}/summary @PermitAll
   → {creatorId,publishedCount,totalPlayCount,totalLikeCount};对该创作者 status==4 作品聚合。

跨创作者公开读(#1 正确性风险)处理:本仓 DataPermission 仅注册 system DeptDataPermissionRule
(仅作用 AdminUserDO/DeptDO 表),game_project 无任何 DataPermission 规则 → MP 拦截器不追加过滤;
project 的"创作者只见自己数据"一向由 Service/Mapper 手动 eq(creatorUserId) 强制而非拦截器。
故公开读只需按"目标 creatorId(路径参数,非登录人)"+status==4 等值即天然跨创作者,无需 @DataPermission(enable=false)。

口径:publishTime 取 update_time 近似(项目表无 publish_time 列,同 count-published 口径);
公开统计经 project-api getCreatorPublishedSummary 取(发布态权威+play/like 计数列均在 project);
creatorName 经既有 AdminUserApi.getUser().nickname 尽力解析(查不到为 null,无 PII)。

单测(Mockito,test goal GREEN):
- ProjectMapperTest(新):SQL 形态守卫——公开查询恒 status==PUBLISHED(4)+按 creator_user_id 过滤,不放行下架(5)/封禁(6);
- ProjectServiceImplTest(+5):跨创作者读(走 selectPublishedPageByCreator 非 selectMyPage)/creatorName 兜底/空/聚合/零;
- GameStatServiceImplTest(+2):跨创作者经 project-api 聚合(不走"我的作品"归属链)/null DTO 兜零。
mvn -pl game-module-project/...-server,game-module-telemetry/...-server -am test → project 32/32 + telemetry 46/46 绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 13:43:08 -07:00
lili
2eb507da4a feat(studio): U9 素材中心/玩法模板中心/创作者公开主页 + P-ACC-03适龄徽标
3 new pages(view→store→api→request CommonResult 范式,全 mock 兜底):
- 素材中心 /studio/material:六类浏览(GET /app-api/studio/asset/browse)+ 上传
  (POST /infra/file/upload→POST /app-api/studio/asset)+ 选用入草稿
  (POST /app-api/studio/asset/select)
- 玩法模板中心 /studio/template:GET /app-api/studio/template/list(5 品类
  business-sim/narrative/puzzle/trpg/heritage)+ 一键去创作
- 创作者公开主页 /creator/:creatorId(PUBLIC 非 requiresAuth,P-OPN-08):
  GET /app-api/project/public/creator/{id}(仅 status==4)+
  GET /app-api/telemetry/public/creator/{id}/summary

P-ACC-03 适龄徽标 AgeRatingBadge(4 级 all/8+/12+/16+)渲染于:项目详情/我的项目
列表/创作者主页(VO ageRating)+ 试玩页(compliance/rating/get 回读)。
gap:feed 卡 VO 无 ageRating 字段(不杜撰,待 feed.yaml additive);profile/account
页无单局分级数据源——均显式留空。

HJ-FE-DS-001 token/组件复用 + i18n zh/en + 移动优先;strict TS 无 any;
新增 mock studio.ts(注册 index.ts,/infra 前缀放行)。
gate:npm run build(vue-tsc -b && vite build)GREEN;preview+curl 6 端点
+ 3 路由 200 实证。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 13:40:14 -07:00
lili
da5ec28c49 merge(002-U10): admin运营台接线(限曝光/导出/经营看板/赋余额订阅·funds-safe bizNo幂等+二次确认;build绿) → dev/2.0.0 2026-06-18 13:15:12 -07:00
lili
6771229921 merge(002-U8): 创作可用性前端(P-CRT-10引导/11示例库/13就地失败可重试+mock失败注入;build绿) → dev/2.0.0 2026-06-18 13:15:12 -07:00