zizi 7efe8a4d82 test(t1b-beta): A0 门0 8/8 全过(mini-desktop 实测)=引擎掌帧接管完成线达成
mini-desktop(minione-ubuntu-desktop)scratch 检出 11c8eaf,host-dev/entry.js 经
esbuild 锁参打 host-bundle.js(littlejsengine@1.18.19 真入包),systemd-run
static-serve(:4321,根=host-dev/)+chrome --headless=new(:9222,autoplay 放行),
driver=test/harness/gate0-engine-takeover.cjs+stub 通道独立核对。

门0 G0-1~G0-8 共 8 门全过(gate0_rc=0/g08_rc=0):
- G0-1 引擎真起(非桩):bootedReal/gameInit/hasEngine 皆 true
- G0-2 引擎内部 RAF 真掌帧:frame 42→72/500ms=Δ30∈[20,45](排单步假推进/失控空转)
- G0-3 time≈frame/60 一致性自检 Δ0.0167s(仅自检非掌帧证据)
- G0-4 timeReal 纯墙钟 Δ0.5001s≈500ms(P75 钟可用)
- G0-5 双时钟物理隔离(引擎 LJS.time vs probe mockNowMs 不同源)
- G0-6 受控面零改回归:initOk/verifyOk/uncaught=[](AudioContext 告警非 error)
- G0-7 渲染落 2D mainContext(#game-engine):780×1688·coloredHits=7(粒子真渲)·whiteTextHits=0(水印已除)
- G0-8 回滚桩活(stub):initOk/verifyOk/uncaught=[]/noEngine=true

对抗复审纠偏经实测兑现:setDebugWatermark(false)→whiteTextHits=0;
setCanvasClearColor(BLACK)→不透明黑底;real 像素门 overshoot→stub 通道独占逐像素。

A0=地基立住:LittleJS 引擎真成为 host-dev 运行时,受控面契约零改(引擎可换边界守住),
回滚桩活。A1-A6 在此地基接线。证据=game-runtime/evidence/gate0/。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-13 06:49:03 +00:00

3.0 KiB
Raw Permalink Blame History

A0 引擎掌帧接管 — 门0 实测结果(mini-desktop)

运行:2026-06-13 mini-desktop(minione-ubuntu-desktop),scratch 检出 dev/2.0.0 @ 11c8eaf, 构建 host-dev/entry.js → host-bundle.js(engine 真入包,littlejsengine@1.18.19), systemd-run static-serve(:4321,根=host-dev/)+ chrome --headless=new(:9222,--autoplay-policy=no-user-gesture-required), driver=test/harness/gate0-engine-takeover.cjs(G0-1~G0-7)+ stub 通道独立核对(G0-8)。机读详情见同目录 gate0.json

判定:门0 全过(G0-1~G0-8 共 8 门,8 PASS · gate0_rc=0 · g08_rc=0)

断言 实测
G0-1 real 通道引擎真起(非桩) bootedReal=true · gameInit=true · hasEngine=true · engErr=null
G0-2 引擎内部 RAF 真掌帧(帧单调推进) frame 42→72/500ms=Δ3020,45
G0-3 time≈frame/60 一致性自检 Δ0.0167s<0.05(仅自检,非掌帧证据)
G0-4 timeReal 纯墙钟推进(P75 钟可用) Δ0.5001s≈500ms 墙钟
G0-5 双时钟物理隔离 引擎 time(LJS.time) vs probe 6 锚(mockNowMs)不同源不联动
G0-6 受控面零改回归(smoke) initOk · verifyOk · uncaught=[] · 6 锚齐(AudioContext 告警非 error 级)
G0-7 渲染落 2D mainContext(#game-engine) 780×1688 · coloredHits=7(粒子真渲)· whiteTextHits=0(水印已除)
G0-8 回滚桩活(stub 通道) initOk · verifyOk · uncaught=[] · noEngine=true · hasHostdev=true

配套本机门(6c6g,主会话亲验,见 commit 11c8eaf)

  • 155 单测绿(受控面/插件零改,基线持平)
  • 受控面零改:src/core/api.d.ts+plugin.js 零 diff(引擎可换边界守住)
  • Q4 边界:引擎 import 仅 host.js+entry.js(metafile importers 反查证,未泄进受控面/插件)
  • 真接线门①:littlejsengine 真入产物 163691 bytesInOutput,box2d 惰性(0 wasm input)

关键纠偏(8-agent workflow 对抗复审逮,经实测兑现)

  • debugWatermark:dev 构建默认 true,每帧把非确定 averageFPS 画进 mainContext 右上角 → setDebugWatermark(false) → G0-7 whiteTextHits=0 实证已除。
  • canvasClearColor:引擎默认 CLEAR_BLACK alpha=0(透明,不铺底)→ setCanvasClearColor(BLACK) → 不透明黑底。
  • real 像素门 overshoot(P0):引擎一 RAF 内追帧跑 N 次 gameUpdate(N 受墙钟抖动),异步采样落帧不确定 → 逐像素确定性由 stub 通道独占(G0-8 兜),real 通道只证掌帧+渲染落 2D(G0-2/G0-7)。
  • P75 埋点钟:real 模式 host mockNowMs 退化为逻辑帧钟 → P75 候选钟改读引擎 timeReal(G0-4 已验纯墙钟可用)。

结论

A0「引擎掌帧接管」= 地基立住:LittleJS 引擎真正成为 host-dev 运行时(engineInit 五回调掌帧 + 真渲 2D mainContext), 受控面契约零改(引擎可换边界守住),回滚桩活(?engine=stub α 等价)。A1-A6 可在此地基上接线