756 Commits

Author SHA1 Message Date
lili
38dd2dc4e5 feat(infra): Nacos 2.4.3 自托管 mini-infra(standalone+MySQL 后端+lean 512m JVM)(切片一 阶段〇 B1)
纯增量部署、host 网络、复用既有 MySQL nacos 库;鉴权开 token。探针 200 绿,内存 <700M 不挤 RAGflow。
端点/密钥写回 docs/内网凭据与端点.md。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 08:32:13 -07:00
lili
061cf22c87 feat(cheap-worker): 续修 middleware 机制 spike 坐实(拦 finish+注入+续跑)(切片一 阶段一前置)
on_reasoning 洋葱拦 finish Msg + 独立跑 fake check + 没过压制+注入 UserMsg 续跑,
4/4 确定性单测绿(stub 模型、零 LLM/chrome)。机制成立,阶段一接真 run_gates。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 05:22:49 -07:00
zizi
6d2f8789d7 remove archive doc 2026-07-01 11:18:20 +08:00
lili
ba69b386ee docs(plans): 便宜档 M3 生产 cutover plan(已批准·选B·§6.8 双评审收口)+ plan① 横切回写
M3 plan:承接 6-28 已完成的路由 cutover、推进对外开闸放量(S0 核实→S1 worker 更新到 M1 富化→S2 control-plane 重启+验Bean→S3 阈值起步→S4 小流量→S5 生产≥80%复验→S6 6门放行);Codex 有条件放行 + Opus(BLOCKER 经核实=误判)双评审 12 项发现全修;创始人裁定决策点二选 B(直接 live 开 flag+回滚兜、不走 staging 避 split-brain)。plan① 横切回写:状态表/§M3 记路由 cutover 已 6-28 go-live、§104 五款3/5 校正为 M1-rich 达标、§119 灰度→D3 整体翻转校正(横切一致性漂移修齐)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 03:37:17 -07:00
lili
9ae3334240 docs(.agents): 蒸馏便宜档切片一收口(richness 红线兑现 + 两个测试坑)
tech-decisions §5.1 回写:richness 架构落地(纯 LLM 非阻塞、代码零丰富度断言)+ 富游戏 M1 全 3 品类 100% 达标 + 退役授权 authorized;蒸馏 stale-play-spec 复用坑(复验须 --offset)与 amgen-base* 是 load_brief 依赖(清理须排除)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:06 -07:00
lili
1e004a361b feat(game-admin): 生成控制面只读监控页(切片一 C3b)
genMonitor 三 card(角色模型表/trace 时间线/成本对账)照搬既有 wanxiang 页模式;独立 axios 实例取 gen-worker 裸 JSON(不走 CommonResult 拦截器);eslint 0。页面真跑随 M3 部署窗口。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:06 -07:00
lili
5265f538b8 feat(contracts,aigc): prompt registry 一致性 CI 门 + Java TTL 运行时热取(切片一 C2)
check_registry.py 校验 registry.yaml 每条 id.version 与 .md frontmatter 对齐(漂移 exit 1,17 条全绿);PromptResourceLoader 加 @Scheduled 60s TTL 热取 + classpath 永久兜底 + volatile 原子换 Map(mvn compile 过 + 9/9 测试)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:06 -07:00
lili
f4cea4677a feat(tier2): 统一 trace 落库 sink + SAA schema + 生成控制面只读后端(切片一 C1/C3a)
JsonlFileSink 把五字段 trace 落 workdir/trace.jsonl(非阻塞·写失败不阻断生成);studio.py sink 接线;SAA 扩展段 schema(接口对称五核心+内容不对称 ext);管理面 3 只读端点 roles/traces/cost(惰性 import 保住「仅 import service.app 不牵 fastapi」红线)。测试 test_jsonl_sink 3 / test_admin_routes 6 全绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:06 -07:00
lili
e6525aaa3d feat(cheap-worker): 便宜档生成丰富度 + M1 达标门富化重验(切片一 A/B)
接 sim-business 设计指导到生成 agent(cheap_roles+prompt.mjs 双源,先设计后写码+MVP-first);新建纯 LLM 丰富度验证 agent cheap_verify(非阻塞·不进 verdict·零 code-presence 断言,红线落地);bake_off 加 richness 列;cheap_roles 三级回落配置热取(C2a 加载器);cheap_studio trace 接线(C1b)。富游戏 M1 三品类各 5/5=100% 过九门达标。测试 test_roles 12 / test_cheap_verify 11 / test_bake_off 17 / test_cheap_trace 4 全绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:06 -07:00
lili
ba0197a1a3 docs(cheap-worker): 纠 reskin 错框 + plan 切片完成度回写
创始人纠正:reskin「锁循环只换皮作成本主线」/「重做丰富脚手架」= 越线,成本数据留痕、
策略框作废。架构红线:项目代码只做机械确定的事;玩法/美术/音乐的「丰富生成」归生成 agent
设计创作(据 sim-business 指导 + 组合插件)、「丰富校验」归纯 LLM 验证 agent(非阻塞)——
代码/九门/脚手架都不碰。便宜=LLM 低参与度≠游戏低质量,底线=2D 丰富游戏。

- tech-decisions §5.1 / 设计文档执行进度 / plan① 切片一里程碑:reskin 错框纠正 + 修正方向
  (接 sim-business 设计指导 + 建 LLM 丰富度验证 agent → 喂 M1「过九门+丰富」)。
- plan① §2 执行现状:加切片完成度快照(切片一地基/达标门✗ · 切片二 go-no-go悬 · 切片三~90%
  · 基建线~15%)+ 便宜档待办更新(减摩擦已落 + 丰富度新缺口 + 预算闸已接线)+ A11 现状更新。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
92f6a84205 docs(cheap-worker): 经营 reskin n=5 收敛环确认——降本杠杆坐实
5 个不同店主题(奶茶/书店/花店/拉面/冰淇淋)强制换皮跑:
5/5 全过九门 · 成本均 ¥0.252(区间 0.21-0.38,-64% vs 基线 ~¥0.7)·
game-logic.js 全 0-diff(循环锁定证明生效)· 全 1 轮 · 5 店菜单全互异。

连同咖啡馆 = n=6 全过、全腰斩、循环全锁定——reskin 三件(成本腰斩稳 /
过门 100% 可靠 / 多款不雷同)全确认收敛,无失败无需追加。扩模板降本杠杆
= 脚手架 + 写边界强制锁循环,经营档坐实;阶段二以 reskin 为成本主线、
剩四品类各建骨架 + n=5 确认。蒸馏入设计/tech-decisions §5.1/plan① 切片一。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
c17b15cbdf docs(cheap-worker): 扩模板数据点结论蒸馏——降工作面只在强制换皮 reskin 模式
经营品类三路对照(同咖啡馆 brief,n=1):
- 无脚手架基线(7 局 bake-shop-serve):~890 行 / ¥0.7 / 6·7 过门。
- 软脚手架(骨架 + 软提示):892 行 / ¥0.85 / 过门 / distinct——AI 把省下预算投增富化
  (自加 combo + VIP)、对基线三指标(行数/成本/轮数)全平没降。
- 强制换皮(write_whitelist 锁 game-logic.js、只改 core 主题 + render 观感):
  696 行(-22%)/ ¥0.34(-51%)/ tokens -64% / game-logic 0-diff / 过门 / 仍 distinct。

结论:设计 §1「扩模板缩小 AI 工作面」假设成立、但只在强制换皮 reskin 模式(脚手架 +
写边界强制锁循环);软脚手架买质量/过门鲁棒(增富化)、不买成本。降本杠杆 = 脚手架 + 锁循环、
非脚手架本身。取舍:reskin 省成本但封顶增富化,软脚手架反之。阶段二应以 reskin 为成本主线
(待创始人定范围、n=3-5 每类确认)。蒸馏入设计执行进度 / tech-decisions §5.1 / plan① 切片一。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
47d6394347 feat(cheap-worker): per-genre 脚手架路由接入 scaffold_template/scaffold_desc(扩模板数据点)
扩模板需让难品类 AI 从预置品类骨架起步、少写。接入(全缺省回落 _template、create 路零改):
- tools.mjs scaffoldSaa(gameId, templateName='_template'):clone 指定模板;CLI 加第 3 参;模板缺失 warn 回落。
- cheap_run.scaffold(game_id, template=None):shell-out 透传模板名。
- cheap_studio.run_studio(scaffold_template, scaffold_desc):线程到 prep + build_system_prompt。
- cheap_roles:system prompt 脚手架描述参数化(⟦SCAFFOLD_DESC⟧),让 AI 知道起点已是该品类完整游戏、换皮而非重写。

管线 routing 单测 27/27、prompt 参数化 8/8。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
9ddd173c06 feat(cheap-worker): 经营品类黄金脚手架 _template-shop(扩模板数据点)
蒸馏 6/7 过九门的 bake-shop-serve 实证 pattern 成 per-genre 黄金骨架:
顾客→桌位→上菜收钱→耐心→限时循环 + _forensicsView 的 targets/score 取证契约
(自动驱动器据此点 occupied 桌驱动上菜、score 涨过 H_progress)。母语化 API
(sessionScore.add / juice.burst / drawButton 返命中矩形)+ core.js 顶部多样性参数
空间(DISH_MENU/数值)+ fill-in 标记界定结构层 vs 身份层;修 patienceRatio 的
_elapsedMs 潜伏 bug。独立过九门(H_progress score 0→154),core 单测 8/8。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
c7811c7dfa docs(knowledge): tech-decisions §5.1 蒸馏阶段一B落地 —— 方向①向母语对齐全完成
把"降AI参与方向①(插件API向母语直觉对齐)"的落地写回 tech-decisions §5.1(该节正是
drawButton 等改签名的方向源):附A 15处签名 #1-#15 全完成 + 正交泛型门修(save.get 误杀)
+ 减摩擦端到端见效(打地鼠+save 从失败→一次过九门/¥0.64/不thrash),2a20e5e7→2be7b718 13提交。
剩:补密度(阶段一C)+ 扩模板(数据点门控)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
7c9c8a8b47 docs(cheap-gen): 阶段一B 改签名收口 —— plan①里程碑 + 设计执行进度 + 存量重生成复验
阶段一B(附A 15 处可改签名 #1-#15)全完成收口:
- plan① 切片一「降AI参与」里程碑:执行序列标记阶段一A/B (2a20e5e7→2be7b718 共13提交、前置核查证 L2/tier2 隔离)
- 设计文档执行进度:逐条母语化要点 + 正交泛型门修复 + 存量重生成九门复验结果
- 存量重生成代表性一局 PASS:打地鼠+菜单+高分(drawButton/sessionScore/save.get/ctx.random)
  attempts=1/¥0.64/209s,对比改签名前同款栽在 save.get 泛型门 bug(2attempts/¥6.69/失败)
  —— 现一次过、更便宜更快不 thrash,减摩擦端到端见效。
下一步:难品类数据点(B,前置阶段二)→ 阶段一C 补密度 → 阶段二扩模板。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
f9393ccbb8 feat(cheap-gen): 阶段一B #12 collision Aabb 统一接受 {x,y,w,h} 与 {x,y,hw,hh}
附A #12(最后一处·几何约定统一):collision Aabb 用中心+半宽高 {x,y,hw,hh},与 hud-ui Rect/
drawButton 的 {x,y,w,h}(左上角+尺寸)不一致——AI 易混,skill 原要专门警告"非 {x,y,w,h}"。
加 _normAabb 归一化:circleVsAabb/aabbVsAabb/raycastAabb 现同时接受 {x,y,w,h}(自动按左上角换算中心)
和 {x,y,hw,hh}(原样),AI 可用与 Rect 一致的 {x,y,w,h}、不必记区别。低风险(存量 {x,y,hw,hh} 透传不变)。

全链路同改:collision/impl.js(_normAabb + 3 直接函数归一化)+ api.d.ts Aabb 文档 + skill:113。
验证:collision 16/16(存量 center-form 不破)+ 确定性({x,y,w,h} 与等价 {x,y,hw,hh} 三函数结果全一致)。
注:SpatialHash broadphase(进阶、便宜档罕用)仍取 center-form {x,y,hw,hh};AI 常用的直接查询函数已统一。

至此附A 15 处可改签名全部完成(#1-#15)+ 正交泛型门修复。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
619351052d feat(cheap-gen): 阶段一B #1 ctx.random/ctx.time 改可调用(双 API·向母语直觉,最高频)
附A #1(最高频·每游戏用):ctx.random/ctx.time 原是对象、须 .next()/.nowMs(),AI 直觉 ctx.random()/
ctx.time() 当函数调会抛错——prompt/形状门都教"是对象不是函数"当幻觉拦。改成双 API:既可直接调用
(ctx.time()=毫秒、ctx.random()=[0,1))又保留全部方法(.nowMs()/.elapsedMs()、.next()/.range()/.reseed()),
向后兼容(框架/插件内部仍用方法形态)。

单点实现:boot-game-host 复用 createHostDevContext(单一 context 源),故 buildContext 一处包装即覆盖
host-dev + 真游戏。加 _callableTime/_callableRandom 双 API 包装器,ctx 装配处 time/random 包装。

全链路同改:plugin.js(包装器+装配)+ tools.mjs(CTX_METHODS 加 time/random、API 门错误文案翻转)
+ prompt.mjs/cheap_roles.py 双源(调用形态翻转:两形态都对、但 ctx.nowMs() 漏 .time 仍错)+ skill:144。
验证:core plugin 31/31(核心不破)+ 确定性(ctx.random()/time() 可调用 + .next()/.range()/.reseed()/
.nowMs()/.elapsedMs() 双 API)+ 形状门 11/11 + [check] PASS(双形态同段)+ cheap-worker 16/16 + 双源一致。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
fb01654311 feat(cheap-gen): 阶段一B #14 palettePost 加 applyPreset 常用后处理观感预设
附A #14:palettePost 原不内置成品观感,AI 要逐项配 vignette/dither/scanline 的 enabled/strength
才出效果。加 applyPreset(name) 一键套预设:'none'(全关)/'soft'(柔暗角)/'retro'(扫描线+暗角)/
'crt'(扫描线+暗角+抖动)/'dither'(抖动),委托 setPost。换色色板(from/to RGB)仍由游戏注入
(那需源色、非预设态)。全链路同改:impl(applyPreset 委托 plugin.setPost)+ api.d.ts 声明 + skill:117。
验证:palette-post 12/12 + 确定性(retro 开扫描线+暗角、none 全关)。prompt 不细列 palettePost 故仅 skill。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
ea229edf78 docs(cheap-gen): 阶段一B #7+#11 timer 单位钉死 + juice.render 每帧手调钉死
附A #7(文档钉死类·timer 是 ms 时钟、改秒是破坏性重构,取显式标注):timerScheduler.after/every
收毫秒、与 update(dt) 的 dt=秒相反——AI 易混(3 秒误写 after(3))。skill:129 + prompt.mjs/cheap_roles.py
双源钉死"3 秒=after(3000)、别 after(3)、与 dt 秒相反"。
附A #11(文档钉死/自动化·自动化不可行=render 需游戏侧 g):juice.render(g) 须每帧在游戏 render 里手调,
忘了粒子/打击感不显示。skill:116 强化(原已钉死、补 #11 标记 + 后果)。

均 doc-only(timer 本就标 ms、juice.render 本就钉死),本次显式化 + 双源对齐。验证:prompt node --check
+ cheap_roles py_compile 绿、双源一致。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
8196e07c2c feat(cheap-gen): 阶段一B #8+#9 audioMusic 音效放开语义名 + play 强度容错
附A #8:playSfx 原限 blip/thud/chime 三预设,AI 直觉用 'click'/'hit'/'win'/'coin' 等语义名会静默失败。
加 SFX_ALIASES 语义名→预设映射(click/jump/coin→blip、hit/fail/land→thud、win/success/levelup→chime),
未识别名兜底 blip(不静默)——AI 用任意音名都出声。
附A #9:play(intensity) 入参是情绪强度 0..1、非曲目名,AI 误传字符串 → NaN 强度。play/loop 对非数容错
为默认强度;api.d.ts/skill 文档钉死"入参是强度非曲目名,曲子先 loadSong"。

全链路同改:impl(SFX_ALIASES + playSfx 兜底 + play/loop 容错)+ api.d.ts(playSfx 放宽 string + 文档)
+ skill line118。验证:audio-music 16/16 + 确定性(playSfx 任意名不抛、play 非数不抛)。prompt 不提 audioMusic 故仅 skill。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
5cb73a6d82 feat(cheap-gen): 阶段一B #4 gamefeel 加 CoyoteTimer/ComboWindow 工厂方法(免 new+传 time)
附A #4:gamefeel 的 CoyoteTimer/ComboWindow 是 class、须 new 且要传受控 TimeSource——AI 拿不到
受控 time、做不出来。加工厂方法 gamefeel.createCoyoteTimer(opts)/createComboWindow(opts):
用 init 时捕获的受控时间源自动注入,AI 直接调、免 new + 免找 time。全链路同改:
- gamefeel/impl.js:init 捕获 ctx.time,加两个工厂方法(new CoyoteTimer/ComboWindow(time,opts))
- gamefeel/api.d.ts:GamefeelPlugin 接口加两个工厂声明
- skill line115:列工厂方法(免 new + 自动注入受控 time);内置 inputBuffer 改 gamefeel.inputBuffer
验证:gamefeel 18/18 + 确定性(init 后工厂可调、返带 isAvailable/hit 的实例)。prompt 不提 gamefeel 故不同改。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
b29a379f9c feat(cheap-gen): 阶段一B #3 collision 几何查询函数挂实例(向母语直觉)
附A #3:collision 实例原只有 spatial,7 个几何查询函数(circleVsCircle/circleVsAabb/
aabbVsAabb/satVsPolygon/raycastCircle/raycastAabb/raycastSegment)仅模块级导出——但 skill:113
本就把它们列在 collision 能力下,AI 直觉 collision.circleVsCircle(...) 取不到=真 gap。
把 7 个纯函数挂上实例(引模块级、不依赖 this),api.d.ts CollisionPlugin 接口同补。skill:113
原措辞现在成真、无需改。验证:collision 16/16 + 确定性(实例 circleVsCircle/aabbVsAabb/raycastAabb
可调且算对)。注:Aabb{x,y,hw,hh} 与 Rect{x,y,w,h} 的几何约定统一(#12)风险高、留后续careful。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
d79e1b9f89 feat(cheap-gen): 阶段一B #2+#13 physics 几何挂实例 + ProjectileState px/py→x/y
附A #2:physics 实例原为空 {}、几何运动函数仅模块级导出,AI 直觉 physics.integrateProjectile(...)
取不到。把 6 个运动原语(integrateProjectile/springStep/criticalDamping/moveWithConstraint/
clampSpeed/applyFriction)+ Projectile 类挂上实例(引模块级纯函数,不依赖 this),api.d.ts 接口同补。
附A #13:ProjectileState 位置 px/py → x/y(向母语直觉,与 Vec2/命中矩形的 x/y 统一)。impl/test/
PLUGIN.md 同步(px/py 仅 ProjectileState 字段,replace_all 安全)。

注:physics 当前无 prompt/skill 指引(便宜档 niche、projectile 罕用),本次是完整性 + 正确性
(实例可用 + 字段直觉),不改生成侧行为。验证:physics-lite 16/16 + 确定性(实例 integrateProjectile/
clampSpeed 可调、ProjectileState 返 x/y)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
c6d31c0d81 docs(cheap-gen): 阶段一B #15 scene 回调签名钉死(防臆造首参)
附A #15(文档钉死类、非 API 改):scene-fsm 回调表里 update 只收 (dt)、render 只收 (g)
(api.d.ts:38 本就如此),但 prompt/skill 未明示防臆造首参。加钉死:别写 update(scene, dt)
这类场景名/state 首参、与五法同形。prompt.mjs + cheap_roles.py 双源 + skill define footgun 同改。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
bdcd7d472c feat(cheap-gen): 阶段一B #10 juice 加 burst(x,y) 便利方法(向母语直觉)
附A #10:AI 母语直觉是 juice.burst(x,y),旧 API 只有 spawnEmitter('burst',x,y)、burst 仅预设名
——prompt 原本教"particles-juice 没有 burst"当幻觉拦。加 burst(x,y,overrides?) 便利方法委托
spawnEmitter('burst',...) 后,直觉名直接可用。全链路同改:
- particles-juice/impl.js:加 burst(x,y,overrides) 委托 plugin.spawnEmitter('burst',...)(引 plugin 自身不依赖 this)
- particles-juice/api.d.ts:实例接口加 burst 声明
- prompt.mjs + cheap_roles.py 双源:删"particles-juice 没有 burst"(它现在有了)
- skill line116:spawnEmitter 旁注 burst(x,y) 母语别名
验证:particles-juice 18/18(含 burst 别名 spec 等价测试)+ 确定性 burst≡spawnEmitter('burst')
+ [check] PASS(juice.burst 被 API 门认可)+ 双源一致。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
8c361f4a5b feat(cheap-gen): 阶段一B #6 sessionScore 加 add 别名(向母语直觉)
附A #6:AI 母语直觉是 score.add(10),旧 API 只有 addScore——skill 原本把 add 当
幻觉拦( add →  addScore)。改签名加 add 别名后,直觉名直接可用,翻转 skill。
全链路同改:
- session-score/impl.js:加 add(delta) 别名(引 plugin 自身委托 addScore、不依赖 this)
- session-score/api.d.ts:实例接口加 add(delta): number 声明
- skill:line 145 由" add→ addScore"翻为"add=addScore 别名直接可用";line 126 方法表注别名
- prompt.mjs/cheap_roles.py 无需同改(它们不提 addScore,仅 skill 提)
验证:session-score 插件测试 7/7(含 add 别名断言)+ 确定性验 add≡addScore + cheap-worker 16/16。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
13126a08ca fix(amodel-gen): API 静态门方法名提取支持泛型声明(治 save.get<T> 被误判不存在)
#5 九门 gen 暴露的正交真 bug:check 的 API-存在静态门用正则
/(?:^|\n)\s*(\w+)\??\s*\(/ 抽 api.d.ts 方法名,遇泛型声明 `get<T = unknown>(`
时 \w+ 后是 `<` 非 `(`、抽不到 `get`,把真实存在(impl + api.d.ts:79 都有)的
save.get 误判"方法名幻觉不存在"→ 误杀一整类带存档持久化的游戏(高分榜等)。
修:两处方法名正则加可选泛型段 (?:<[^>]*>)?(apiMethodSet + apiVoidMethodSet)。

验证:形状门单测 11/11;针对性 check 一段同用 save.get('best',0)+sessionScore.add+
drawButton 的 game-logic → [check] PASS(三者均不再误判)。over-permissive 取向不变。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
dc49f5f866 feat(cheap-gen): 阶段一B #5 drawButton 改返命中矩形(黄金首件·治 #1 翻车点根因)
降AI参与·阶段一B 改签名第一处(附A #5)。逐插件改逐插件回归的黄金样板。
drawButton 由返 void 改为回吐它绘制的归一化命中矩形 {x,y,w,h}——AI 的直觉写法
const btn = hudUi.drawButton(g,{x,y,w,h},{label}); if (hudUi.pointInRect(px,py,btn)) 现在就对,
治了 #1 翻车点(drawButton 返 void 误用→变量恒 undefined→命中短路→卡菜单)的根因,而非教绕路。

全链路同改(漏一个造新脏数据):
- hud-ui/impl.js:drawButton 模块函数 + 实例方法回吐归一化矩形 r(g=null 也回吐、绝不 undefined)
- hud-ui/api.d.ts:模块函数 + 实例方法 两处 :void → :Rect + JSDoc
- tools.mjs 形状门:删 drawButton 特例分支(api.d.ts 改后自然掉出 void 名集),
  泛化判据留给仍真返 void 的方法(drawText/drawPanel/drawBar/play/flashScreen)
- prompt.mjs/cheap_roles.py(双源)/skill:指引由"返void绝不接"翻为"回吐命中矩形可直接 pointInRect"
- check.test.mjs:drawButton 测试反转(赋值不再拦)+ 链式测改 drawText
- test_roles.py/test_toolkit.py:footgun 断言 + 形状门 drawButton 测试随签名更新

验证(逐插件回归矩阵):
- 形状门单测 11/11(amodel-gen)+ cheap-worker test_roles/test_toolkit 16/16 + hud-ui 19/19
- 确定性 impl 铁证:drawButton 回吐 {x,y,w,h}、g=null 不 undefined、回吐矩形直接 pointInRect 闭环
- 真生成代码(菜单+按钮游戏)用了 drawButton、check 未拦 drawButton,证明 #5 不破坏生成
- 双源 drawButton 文案一致;prompt.mjs node --check + cheap_roles.py py_compile 绿

正交发现(非 #5):该局九门 gen 栽在 save.get() 方法名幻觉(save 插件无 get)——
是另一处方法名摩擦,记为阶段一B 后续/补密度候选,不在 #5 范围。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
62f819ad43 docs(cheap-gen): 降AI参与设计收口更新 —— 认领+前置核查已解、执行进度
收口 TODO:① 已认领 plan①(56e9f28e);② 前置核查已做——L2 插件与 tier2 物理隔离
(tier2 用自己 Phaser engine-caps、零 import 便宜档 L2 插件)→ 阶段一B 改 L2 API 无 tier2 回归。
执行进度: 阶段一A 清脏数据(a6a37b1c);下一步据创始人裁定 A 阶段一B改签名/B 数据点/C review。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
f477666f1d docs(plan①): 切片一认领「降AI参与」里程碑(L2 API 母语化 + per-genre 脚手架)
把「便宜档降AI参与」探索结论正式认领进 plan① 切片一(canonical · 创始人 2026-06-29 directed):
- 加里程碑「降AI参与·减摩擦+扩模板覆盖」= 把 3/5 推向 ≥80% 的生成质量地基,喂 M1 达标门
  · 减摩擦(小头,26× 含学 API 税):改 L2 签名向母语直觉 + 清脏数据 + 重写形状门判据
  · 扩模板覆盖(大头未验):per-genre 脚手架,缩 AI 自由写面 —— 难品类数据点前不敲定范围
- WU 归属:WU-B 实例达标 / WU-C 5.4 能力面契约变更(改 22 处 L2 API)/ WU-F 达标门
- 跨设计面加 L2 API 母语化契约变更 + 设计指针
红线:九门内核不降 / L2 插件库保留(降参与核心载体非税)/ 不动 tier2。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
74a7135746 feat(cheap-gen): 便宜档降AI参与 设计落仓 + 阶段一A 清脏数据(治传导断裂)
探索会话诊断+设计(Codex+Opus 双评审、证据驱动重定位),认领进 plan① 切片一里程碑。

落仓产物:
- 动因 evidence(母语vs方言:M3 不弱、便宜档现状方言产同款要 ~26× token)
- 方向设计(降AI参与=减摩擦[小头]+扩模板覆盖[大头未验];附A 22处摩擦/15可改签名清单)
- tech-decisions §5.1 + agent-specs/_index 蒸馏

阶段一A 清脏数据 + 文档治理锚(prompt.mjs + cheap_roles.py 双源 + skill 三文件):
- 治"传导断裂"根因:植入定位锚——便宜档=AI参与深度低的高质游戏(轻量≠简单),
  复杂度靠工程脚手架+L2 插件库、少写多调;"极小/最小游戏「点圆得分」"重框成
  "脚手架起点、借插件能力改造成高质游戏"
- collision.pointInRect(不存在)收敛 hudUi、删干净
- 漂移范例 catch-fruit/wanglanmei(旧 opts 签名)→ _template(唯一匹配现契约)
- 插件数口径统一"注入 11 + runtime-probe 取证不注入"

验证:prompt.mjs node --check + cheap_roles.py py_compile 绿;九门复验跑一局打地鼠
(历史翻车品类)attempts=1、verdict.pass、failedGates=[]、¥0.95——清脏数据未破坏生成。

核心结论(创始人确认):便宜档≠简单游戏;L2 插件库是降AI参与核心载体非税;
"换母语扔插件"=升参与、与策略相反,已推翻。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
1152f0d0d4 docs(studio): A11 切片三全闭环 —— 受计费真后端 e2e 跑通
受计费 e2e 在 mini-desktop 隔离实例(:48090 + worker :9502,不碰 live)跑通:
- 三件硬证据全坐实:① 三断言/modifyManifest 落库(ROUND_MS 30000→18000 found / behavior changed+untouchedStable)
  ② D12 计费(regenerate cost.totalRmb=0.307 / deterministic 零LLM cost=0,均经配额门)
  ③ 血缘(game_source_project v93145→v93146/47/48 base_version_id=93145)
- 判意图分类正确(config/deterministic vs behavior/regenerate-module)、两档执行九门全过
- 抓修 1 阻断性真 seam bug(gameId int→str,a40823b1)
切片三 A11:设计 → 双评审 → M1-M5 执行 → 受计费真后端 e2e,端到端闭环。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
lili
0465471ef4 fix(cheap-worker): 真后端 gameId int→str 归一化(治便宜档经真后端全失败的阻断 bug)
A11 受计费真后端 e2e(mini-desktop 隔离实例)抓到的阻断性 seam bug:
后端 gameId 是 Java Long → JSON number → Python int;worker 直传 cheap_run 的
subprocess shell-out(scaffold/build/stage/smoke/play 要求 str)→ TypeError(expected str, not int)
→ scaffold 失败 → 静默归 llm_error → 便宜档经真后端 generate/modify 全部失败。

本机单测用 str gameId 没暴露;真后端 Java int gameId 才触发(e2e 的价值)。
修:_default_run_fn / _process_modify_job / _process_regenerate_job 三处 job 消费边界
归一 game_id=str(...)(str("x")=no-op,既有零影响)。e2e 重跑后全链路成功。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 01:39:05 -07:00
zizi
6998de77f3 docs(agents): 蒸馏 tier2 服务态生成配方 + 收敛根因(§7)
本 session 服务化实测的可复用产出写回权威源:新增 skill tier2-service-generation——
★收敛头号杠杆=真玩 driver(没 driver→F_wiring 挂+富游戏门 None+agent thrash 的假性不收敛;
默认 business-sim play_spec 通用修复·007 现成游戏带 driver 重跑 accept 全绿坐实;诊断口诀=九门前几道绿
+F_wiring 挂+富游戏门 None→查 driver 别怪生成,None≠False)+ 驱动 create_app 六集成口径(凭据 data 嵌套/
chat content 块列表/Toolkit.tool_groups 抠九工具/BYPASS+query agent_id/设计阶段接入/SSE read 超时防挂死)
+ 控制面有界 resume + C1 trace 字段口径。README skills 索引同步登记。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 11:40:57 +00:00
lili
9ac0e860d1 docs(gen-engine): A11 切片三收口蒸馏 —— 回写 plan① + 设计面入运行时 SoT §六
收口 TODO①②(创始人 2026-06-29):
- 回写 plan① 切片三:确定性覆写定性精化(执行仍零 LLM、但 A11 经判意图两段式到达、
  非直接覆写;落点对齐工程规范性)+ 后续细化标记已执行(M1-M5 代码完成、6 提交)
- A11 设计面蒸馏入运行时 SoT:新增 §六 调整回路(试玩后纠错)——两段式判意图/工程规范性改一处/
  两档执行/三断言,散文设计面(兑现 plan① TODO⑥ "A11 无 §5.x facet 专节");§三 A11 行状态更新为
  便宜档代码完成
- .agents/knowledge/tech-decisions §1.2 A11 调整回路简洁蒸馏(指向 §六 + 细化 plan)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 03:08:06 -07:00
lili
5a9b608c56 docs(studio): A11 切片三收口 —— M1-M5 代码完成、受计费 e2e 排部署窗口
更新 plan 状态:M1-M5 代码全完成 + 本机逐段一手验证 + 5 里程碑提交;
唯一剩项 = 受计费真后端 e2e(创始人 2026-06-29 定 B:排部署窗口、不现在动 live 栈,
需 push + 部署 A11 到 mini-desktop 经真后端验三断言+D12计费+血缘)。
收口 TODO:回写 plan① 行 148 定性 / 设计面蒸馏 docs-architecture+.agents / extend+A2A暂停留后期。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 02:51:26 -07:00
lili
9a6feddfee feat(studio): A11 切片三 M5 三结构断言机器门(改对了没/有没有误伤/血缘可查)
九门只验"仍能玩",验不出"改对了没、有没有误伤";三断言补这层(plan① 线 154)。

cheap_assert.py:
- ① change_applied:改动真生效非 no-op(deterministic=manifest found 且 old≠new / regenerate=changed)
- ② nontarget_stable:base→new 真比对算内容差,非目标文件变=误伤——不信执行器自报标记,
  防执行器 bug 自证(兑现 Opus 评审 P1-2)
- ③ lineage_queryable:baseVersionId 在(worker 侧验必要条件,DB 真可查由 M1 回填 + 后端 e2e)
- three_assertions 合并 verdict

集成进 execute_*:两档加 base_version_id 参 + 附 assertions verdict + 收紧 status
(succeeded ⟺ 九门 ∧ ① ∧ ②;regenerate 原漏判 ①changed 已补);worker 透传 modify.baseVersionId。

测试:test_a11_m5_assertions 12/12 + 全 85 测试独立复跑全绿(含 M3/M4 桩接 kwarg)。
集成端到端 smoke(真九门):ROUND_MS 30000→19000 + baseVersionId=4096
→ status=succeeded、a1/a2/a3 全 true、allPass=true、落盘 19000。

受计费真后端 e2e(经 studio→aigc→worker→回调→新版本+D12计费+血缘)待 mini-desktop 全栈。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 02:34:06 -07:00
lili
14c79dbfdd feat(studio): A11 切片三 M4 模块重生成执行(有界单文件 LLM 重写 game-logic.js)
两段式第二段的 regenerate-module 类:改玩法 = 据 intent 有界重写 game-logic.js,不动其余。

复用机制(参数化、不复制 resume/熔断/收口):
- cheap_studio.run_studio 加 4 个默认 None 可选参(system_prompt/initial_kick/write_whitelist/prepare)
  切到 modify 态,create 路零行为变化(params=None 等价原逻辑)
- cheap_toolkit.build_toolkit 加 write_whitelist(非白名单 basename 写直接拒)
- cheap_roles.build_modify_system_prompt(复用 create 红线契约块)

cheap_modify.execute_regenerate_modify:
- 取 intent(空→failed)→ materialize base 源 → 重写前后对非目标文件算 hash
- 有界重写(写边界收窄到只 game-logic.js)→ 九门
- status=succeeded ⟺ 九门过 ∧ 非目标稳;manifest{file,kind:behavior,intent,changed,untouchedStable}(断言②地基)

worker_service._process_regenerate_job(regen_fn):把 M3 的 regenerate-module 显式 failed 占位换成真执行;
deterministic/create/生成路一字未动。

测试:test_a11_m4_regenerate 10/10(全注入桩零 LLM)+ 全回归独立复跑 73 测试全绿。
一次真 LLM smoke(单跑):intent=连击递增 → status=succeeded、untouchedStable=True、九门 pass、
attempts=1、¥0.31、137s;独立 diff 佐证 5 非目标文件字节相同、仅 game-logic.js 变。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 02:16:22 -07:00
lili
51230f1347 feat(studio): A11 切片三 M3 确定性类执行(零 LLM 改规范工程一处→重建→九门)
两段式第二段的 deterministic 类:用户确认后的改动落到规范工程那一处,零 LLM。

cheap_modify.py:
- apply_deterministic_modify:config/level→core.js 等 L3 的 export const 值替换;
  asset→assets.js IMAGE_FILES 键值或 baseUrl;no-op 检测(无 found&&old≠new→ok=false,M5 断言①地基)
- materialize_source_project:系统级落盘全 files(含 L1,绕 write_file 的 L1 守卫)
- execute_deterministic_modify:apply→(缺 plumbing 才 scaffold)→materialize→cheap_run build/stage/smoke/play 九门

worker_service.py:
- process_job 最前 modify 分流(_process_modify_job);deterministic 走执行 + manifest 进 trace.modifyManifest
  + best-effort 带新版 sourceProject(链式改);regenerate-module 显式 failed 留 M4;create/生成路一字未动

测试:test_a11_m3_deterministic 18/18 + 回归全绿。
九门 smoke(独立复跑,本机 Chrome 免 LLM):amgen-bake-click-score-0 base 源 → ROUND_MS 30000→19000
→ status=succeeded、verdictPass=true、manifest found=true、落盘 core.js=19000、运行时 remainMs=19000
(改的那一处真在游戏里生效并过九门)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 01:49:10 -07:00
lili
938219d7a5 feat(studio): A11 切片三 M2 判意图入口 Java 侧(studio→aigc→worker)
两段式第一段的后端承接:用户原话进系统、判意图、返建议供前端确认(确认后才调 /modify 执行)。

契约先行:
- studio.yaml 新增 POST /app-api/studio/modify/plan + StudioModifyPlanReqVO/RespVO

studio(应用面):
- AppStudioController.planModify;StudioServiceImpl.planModify =
  validateCreator 白名单门(与既有 createDraft/generate/modify 一致)+ 归属校验防越权
  + 委托 aigc classifyModify + 异常/空兜底 unclear

aigc(worker 对接):
- AigcApi.classifyModify + AigcModifyProposalDTO
- WorkerClassifyClient:据 baseVersionId 反查 base 源(同 injectBaseSourceProject seam)
  → NO_PROXY JDK HttpClient POST worker /classify → best-effort 兜底 unclear+needsConfirm
- AigcApiImpl 软注入 ObjectProvider<WorkerClassifyClient>(executor 关闭时缺席→兜底,
  绝不因 Bean 缺席启动失败,镜像 WorkerDispatchClient);worker URL 尾段 /generate→/classify

测试:StudioServiceImpl 31/31 + WorkerClassifyClient 10/10 + AigcApiImpl 2/2,
本地 maven 独立复跑 43/43 绿、BUILD SUCCESS,既有 modify/generate/SAA 回归零破坏。
真连 worker 的判意图 e2e 待 M5(mini-desktop)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 01:22:24 -07:00
lili
fc782db08b feat(studio): A11 切片三 M1 前置基座 + M2 worker 判意图
M1 前置基座(便宜档源回传落库链 + base 源注入 + 血缘):
- derive_profile 兑现(便宜档基线 profile{realtime,discrete-choice,metric})解锁 sourceProject 回传
- worker parse_modify 提取 modify 区(mode/baseVersionId/modifyPatch/sourceProject)
- executor 据 baseVersionId 反查注入 base 源到 HTTP job(镜像 SaaGraphDispatcher.resolveBaseSourceProject)
- 回调落源回填 base_version_id 血缘(landSourceQuietly)

M2 worker 判意图(两段式第一段,NL→建议改动+风险):
- cheap_classify 把用户原话 + base 源可改面(assets.js 资产清单/core.js 集中数值/game-logic 玩法)
  判成 {category,mode,target,payload,riskLevel,needsConfirm,clarify}
- mode×category 锁定(LLM 给的 mode 不采信)+ 危险回问硬编进 needsConfirm(只低风险确定性改免确认)
- worker /classify 同步端点(不入生成队列、不起 Chrome)

测试:Python test_a11_m1 5/5 + test_a11_m2_classify 9/9 + 回归全绿;
Java 执行器/回调/源服务 + SAA 回归(本地 maven 独立复跑 46 + 子代理 98)全绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 01:04:55 -07:00
lili
bc1efb26d8 docs(tier2): 纠正 U5 退路层 —— win-balance 在 agent 层非工具层(创始人纠正)
经济/数值平衡是 agent 玩法职责,基础工具层做静态模板/补骨架治不了(静态验证调不动动态平衡 +
每游戏数值会改、预制浪费)。真杠杆 = verdict 反馈质量(让 M3 像 spike 自调平衡)+ 模型能力(换档)。
撤回工具层加固 + 精确率测量(率随 agent 演进会变)。go/no-go=conditional,卡 agent 层、随其演进改善。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 21:05:22 -07:00
lili
55a213e722 docs(tier2): 切片二 U5 收敛环 go/no-go 结论 = conditional go(留观+针对性加固)
真跑(M3-only,chrome 泄漏修后 iso 逐款):M3 写得出结构完整多系统富游戏(过大多数九门+三联动/latch),
但收敛 run-dependent(随机)、confounded pass 率 ~1-2/5;失败集中「进度/经济平衡门」
(H_progress + 经济门 profitPathWin)。退路 = win-balance 模板化/补骨架(非换档,M3 有能力)。
第二 confound(live worker:9501/@8200 争 4 核)未除,真率需暂停 live 干净跑测。
非 no-go(能过全门)、非干净 go(收敛太不稳)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 20:10:53 -07:00
lili
8d4654ab63 fix(tier2): serve-and-play chrome cleanup 杀整树(治泄漏)+ 切片二 U5 执行发现
chrome 泄漏根因:cleanup() 只 kill $CHROME_PID(父)→ renderer/gpu 子进程 reparent 给 init 成孤儿、
跨款累积(实测 U5 Round1 撞 wall_timeout、杀批组仍残留)。修=cleanup 加 pkill -f "$USER_DATA_DIR"
杀本实例整棵 chrome 树(user-data-dir mktemp 唯一、不误伤别的 chrome/live worker)。

plan 执行发现:① env 闸缺口(fresh worktree 无 node_modules/esbuild → build 失败 → M3 假性不收敛,
已补 U1 S0 + Risks);② M3 已证能收敛(smoke 面包+水果 clean accept、九门全过);
③ U5 Round1 被 confound(chrome 泄漏 + live worker:9501/@8200 争 4 核)、需隔离干净重跑。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 16:54:17 -07:00
lili
eed34d0a32 feat(tier2): 切片二 U2/U3/U4 本机 TDD 全绿(护栏/退路树 n=5/play-scene 门结构化)
U2 batch_run:BatchConfig 批级 ¥/墙钟/token 上限 + assert_under_round_cap 跨轮闸 +
  main() catch 非0退出(fail-closed,已跑款不丢)。
U3 fallback_tree:decide_n5(覆写 decide() 非包装——decide() 无 deepseek 强便宜档即 Q1 早退吞 M3;
  收敛需末轮≤1 且≥2轮压首轮裸运气;R1/R2 复用 _system_concentrated/_bucket_share;R3_conditional 无强档;
  len>4 拒裁)+ --n5 CLI 入口。
U4 run.py:validate_play_scene 公开签名不变,抽 validate_play_scene_src(src) 在剥注释+字符串的 skel 上判
  bindInput/tick/handleNormalizedInput,挡注释/字符串规避假过。
测试:fallback_tree 自测 +9 / test_batch_guardrails 3 / test_validate_play_scene 4,全绿。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 08:59:29 -07:00
lili
4f444e0ca0 docs(tier2): 切片二 n=5 收敛环 go/no-go 细化执行 plan(Codex+Opus 双评审收口)
plan① 切片二的可跑 runbook 细化:U1 前置阻断(复现 smoke+反向 smoke+DockerWorkspace 小验)/
U2 批级+跨轮护栏 fail-closed / U3 退路树 n=5 适配 / U4 play-scene 门结构化 / U5 跑环+go/no-go。
执行决策(创始人):串行+M3-only;n=5 绝不 n≥30。§6.8 双评审 19 项发现全核验、全文档内修。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 08:59:29 -07:00
lili
fb1149f189 docs(mvp): 进度总账同步切片一 M3 Node 退役 go-live 完成线(消歧:≠账本 M3 分发)
M2 创作链路行 + §0 现状 + 头部:便宜档切片一 M1-M3 + 生产 cutover(2026-06-28 创始人「同意切」)——live :48080 退 Node/gamedef、上 Python(AgentScope)路 dispatcher=http→worker+trace,9d trace parity 救活 D11(真后端三值 28/45/100),D9 parity;commit d00938cc/16112827/7f8a418c。

诚实 gate:M3「≥80% 生产真实分布达标」未到=便宜档生成质量(WU-B/C/F,U4 真 gen 没过九门);对外开闸放量待放行决策。消歧铁律:此 M3=切片一(生成线)M3,≠ 账本 M0-M5 的「M3 分发链路」(发布/feed)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 04:52:12 -07:00
lili
7f8a418cb5 docs(cheap-worker): M3 生产 cutover 完成 — Node/gamedef 退役 go-live、live 跑 Python M3 路(切片一 M3)
live :48080 端口精确从 6-21 旧 gamedef jar 换成 6-28 M3 jar(dev/2.0.0)+ dispatcher=http→worker:9501 + trace.enabled;boot 日志「生成派发通道选定 dispatcher=http=WorkerDispatchClient」坐实 Node/gamedef 旧路在 live 退役。拆 iso :48090 避 live+iso 双 executor 同 DB split-brain。最终拓扑=live :48080(M3 路)+ worker :9501,同 DB。control-plane 6门放量创始人定后单独开。

M3 剩(非 cutover 工程缺口):≥80% 生产真实分布达标复验(质量轨 WU-B/C/F)+ 对外开闸放量(放行决策)+ publish→feed→玩家真玩(产品轨移交边界)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 04:46:09 -07:00
lili
16112827da docs(cheap-worker): M3b U6 收口 — 执行发现 + trace parity 蒸馏(切片一 M3b)
plan close-out:U4/U5 mini-desktop 真后端 e2e —— D11 三值判别坐实(失败 gen 28 / 退化态 45 / 注入真 bundle 成功 100),9d trace 七项 + D9 similarity 真落库、engineBundle 落可发布预览包,live :48080 全程未动。边界:publish→feed→玩家真玩 属产品/审核台轨(auth + REVIEWING),非生成线 M3b。

.agents 蒸馏:gen-path-parity-harness skill 加「换 worker 别静默退化 D11/D9」段(必填七项 + gatespec.driver 键名坑 + H_progress 嵌套 + repairs=max(0,attempts-1);D11 退化判别双峰 45/55 + 逐维断言反假绿非看区间;import 边界 tier2≠wg1 故 trace 手写镜像 + dedup vendor;两路都落 trace;玩家试玩需 published)。README 索引同步。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-28 04:12:02 -07:00