lili
|
11436f07cc
|
test(cheap): test_a11_m3/m4 模块级 game_dir/dedup 替换收进可恢复 autouse fixture——根除 game_dir 跨模块隔离污染(基线二分钉死:5 个失败,非 12) (尾波小单)
test_a11_m3_deterministic 与 test_a11_m4_regenerate 在 import 时无恢复地替换
cheap_run.game_dir(两文件同构),污染同会话后续测试模块:受害者按真 games/ 根校验
write 边界,game_dir 被改指临时目录后一写即判越界。改为 module 级 autouse fixture
(yield 后恢复原值),__main__ 独立运行路径同装(单进程无需恢复),dedup 登记表一并收拢。
证据:全套 12→7 failed、三种文件顺序结果恒定(7 failed / 322 passed);二分钉死纯
game_dir 污染 = 5 个,均已恢复 = test_run::test_scaffold + test_toolkit::{write_l1_rejected,
write_l3_ok,check_shape_drawbutton_ok,check_shape_define_fail}。
余 7 个非本污染、隔离下同红,系环境前置:worktree 无 esbuild →
test_run::{test_stage,test_play_real}、test_toolkit::test_check_and_build_clean_pass;
缺真实 e2e 产物 → test_studio_smoke×4(须先跑 cheap_studio 单局)。须集成段 mini-desktop
才具备,未纳入本单。同族但未致失败的 test_worker_service 模块级 dedup 泄漏按最小改动未动。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-07-03 21:11:31 -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 |
|