docs(t1b-beta): Phase0验签结果落档——§7逐函数三分填定(§1.5延迟裁定获验证:4条初判包装翻缺件补层)+修两处实证spec错

§7验签终值:包装/透传6件,缺件补层7件(collision MTV/RayHit/SpatialHash全套·physics抛体+弹簧·palette postProcess·gamefeel高级缓动·audio播放层),混合1——collision整件/palette postProcess/physics核心确为引擎缺件(自研合规,归因从『审计已确认』改『逐函数验签确认』)
修spec实证错(据littlejs.d.ts):①引擎无engineUpdate外部导出→A0改engineInit五回调接管②引擎无独立Music类→audio用ZzFXMusic/Sound.playMusic③probe墙钟可用引擎timeReal:103
Phase A解锁,P2三契约冻结待据签名定

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
zizi 2026-06-13 04:00:57 +00:00
parent 204eaede3b
commit b300cd0daa
2 changed files with 30 additions and 27 deletions

View File

@ -55,7 +55,7 @@
## 4. 数据流与依赖(契约可并行·验收串行)
A0 引擎主循环接管host-dev 桩→engineInit/engineUpdate 真接管帧驱动+渲染**所有真接线的地基**)→ A1-A6受控面/插件/SIZES/像素门。BRunner v2→ C1.x 退役,依赖 B URL 就绪)。**D 参考件入 feed=后端发布主链**submitPublish→admin reviewProject→PublishOrchestration.publish 五步→runtimePackage 翻包 0→1→feed upsertRank→feed stream 二次过滤 `status=PUBLISHED(4)` 才出流;`FeedServiceImpl:119-159`)。**注意 D 依赖「真实 GamePackage 产出」=Runner v2 产物B而 Runner 产物=packageUrl故 D 隐含依赖 §5 的 packageUrl 写链改造,非纯前端点亮。**
A0 引擎主循环接管host-dev 桩→**`engineInit` 五回调**gameInit/gameUpdate/gameUpdatePost/gameRender/gameRenderPost接管帧驱动+渲染;**引擎无 `engineUpdate` 外部导出**,主循环为引擎内部 RAF外部经 engineInit 五回调接桩**所有真接线的地基**)→ A1-A6受控面/插件/SIZES/像素门。BRunner v2→ C1.x 退役,依赖 B URL 就绪)。**D 参考件入 feed=后端发布主链**submitPublish→admin reviewProject→PublishOrchestration.publish 五步→runtimePackage 翻包 0→1→feed upsertRank→feed stream 二次过滤 `status=PUBLISHED(4)` 才出流;`FeedServiceImpl:119-159`)。**注意 D 依赖「真实 GamePackage 产出」=Runner v2 产物B而 Runner 产物=packageUrl故 D 隐含依赖 §5 的 packageUrl 写链改造,非纯前端点亮。**
**串行验收铁律**A/B/C/D 不各自单独过门,最终同一参考包(暖阳小卖部)联验 CDP 走查门。
## 5. 接口/数据契约P2 冻结contract-first
@ -69,10 +69,10 @@ A0 引擎主循环接管host-dev 桩→engineInit/engineUpdate 真接管帧
**Phase 0P0+P1+P2**:装引擎+抽签名(ENGINE-CAPABILITIES.md)+冻结三契约+产 §7 重叠清单空表。
**Phase A**
- **A0地基引擎主循环接管**host-dev `host.js`文件头§注明的「RAF+bundle.tick+普通 2D canvas 桩」)改 `engineInit/engineUpdate` 真接管帧驱动+渲染循环——**这是 particles/physics/audio/time 一切真接线的前提**,不是可选项。
- **A0地基引擎主循环接管**host-dev `host.js`文件头§注明的「RAF+bundle.tick+普通 2D canvas 桩」)改 **`engineInit(gameInit,gameUpdate,gameUpdatePost,gameRender,gameRenderPost,...)` 五回调接管**帧驱动+渲染循环(引擎掌帧、回调里接桩;**无 `engineUpdate` 导出可手摇**——**这是 particles/physics/audio/time 一切真接线的前提**,不是可选项。
- A1 受控面random 透传引擎 `RandomGenerator`time 透传引擎 `time`(依赖 A0input 改「对引擎轮询态(`mouseWasPressed`/`keyIsDown`)的归一化包装」(订阅形状留给 P4/P10 消费者,底层读引擎态,不另造事件系统);**probe 墙钟独立保留**。
- A2 particles-juice粒子→`ParticleEmitter`(包装)hitStop→`timeScale`(包装)**屏震→引擎 `cameraPos`,须同步改 render.js 渲染基座到引擎相机**(否则全 Canvas2D 的 render 不响应 cameraPos不改则屏震保留受控面偏移量补层
- A3 audio-music合成核 zzfxG/zzfxM→引擎 `Sound`/`Music`(包装)**播放/混音层=补层**(受控面 PCM playChannels 与引擎世界音频 Sound.play 不兼容§1.5)。
- A3 audio-music合成核 zzfxG/zzfxM→引擎 `zzfx`/`zzfxM`(包装);音乐用 **`ZzFXMusic extends Sound`/`Sound.playMusic`****引擎无独立 `Music` 类****播放/混音层=补层**(受控面 PCM playChannels 与引擎世界音频 `Sound.play` 不兼容§1.5)。
- A4 collision/gamefeel/physics-lite按 §7 三分逐函数落地。
- A5 SIZES 重建(引擎首次入 bundle单口径「引擎+插件」,**非「消双份记账」**——双份在 SIZES 从未成立R3-P1-2
- A6 e2e 像素门适配 WebGL readPixels + 真接线门三件套接入。
@ -81,29 +81,32 @@ A0 引擎主循环接管host-dev 桩→engineInit/engineUpdate 真接管帧
**Phase D入 feed**:完整后端发布主链各环真翻态。
**Phase E⑤⑥**P7/P8 固定清单 + storage 上提端到端 + probe 时钟拆分 + R6 三件 + R3 血统回填五条。
## 7. 插件×引擎重叠清单(方法论 + 待 P0 验签的假设,**裁定不冻结**
## 7. 插件×引擎重叠清单(✅ Phase 0 验签填定,`204eaed`
> **R3 整改**:本表裁定**不在 spec 冻结**——每函数须经 §1.5 三分判定测试(签名/坐标系/语义兼容),**Phase 0 抽到引擎真实签名后填定**。下列为评审版 §2.5 初判假设,**多条经复核应从「包装」降「缺件补层」**
> **Phase 0 已落2026-06-13`game-runtime/docs/ENGINE-CAPABILITIES.md` 全签名引自 `node_modules/littlejsengine/dist/littlejs.d.ts` file:line**。**§1.5 延迟裁定被验证有效**——4 条初判「包装」过真签名后翻「缺件补层」collision MTV/RayHit、palette postProcess、physics 抛体),正是 R3 病灶坐实。下表「裁定」列为终值Phase A 据此落地
| 件 | 函数 | 引擎候选 | 初判假设 | §1.5 测试预警 | P0 验签后裁定 |
|---|---|---|---|---|:--|
| audio-music | zzfx/zzfxM 合成核 | `Sound`/`Music` | 包装 | 合成核兼容,播放层不兼容 | 合成包装+播放补层(待核) |
| audio-music | playChannels 播放/混音 | `Sound.play`(世界坐标) | — | 空间语义不兼容(无相机) | 缺件补层 |
| particles-juice | 粒子发射/池 | `ParticleEmitter` | 包装 | 待核坐标系 | 待 P0 |
| particles-juice | hitStop | `timeScale` | 包装 | 兼容性高 | 包装(待核) |
| particles-juice | 屏震 | `cameraPos` | 包装 | 跨层:render 须改相机 | 包装+render 改 / 否则补层 |
| palette-post | postProcess | WebGL shader | 待 P1 | Canvas2D→GLSL=整体重写,P1 核名解决不了 | **高概率缺件补层** |
| palette-post | RGB↔HSL/Bayer | `Color`/`hsl` / 确无 | 部分包装 | 基元兼容,索引色表确无 | 混合 |
| physics-lite | 抛体/clampSpeed/friction | `updatePhysics`/`objectMaxSpeed` | 包装 | 待核(EngineObject 体系 vs 解耦) | 待 P0 |
| physics-lite | 弹簧+解耦运动学 | 确无 | 补层 | — | 缺件补层 |
| collision | aabbVsAabb→Manifold(MTV) | `isOverlapping`→boolean | ~~包装~~ | **boolean 满足不了 MTV 契约** | **缺件补层**(或真假判用引擎+MTV 补层) |
| collision | raycastAabb→RayHit | `isIntersecting`→boolean | ~~包装~~ | **射线vs线段+返回双不兼容** | **缺件补层** |
| collision | SpatialHash/圆·SAT/MTV/圆射线 | 确无 | 补层 | — | 缺件补层 |
| gamefeel | easing linear/smoothstep | `lerp`/`smoothStep` | 包装 | 兼容性高 | 包装(待核) |
| gamefeel | elastic/back/cubic/InputBuffer/coyote/combo | 确无 | 补层 | — | 缺件补层 |
| 受控面 | random | `RandomGenerator` | 透传 | 兼容(种子 xorshift) | 包装(透传) |
| 受控面 | time | `time` | 透传 | 依赖 A0 主循环;probe 墙钟须解耦 | 包装(透传,A0 后) |
| 受控面 | input | 轮询层 | 归一化包装 | 引擎轮询 vs 订阅,做归一化 | 包装(归一化) |
| 件 | 函数 | 引擎真签名(littlejs.d.ts) | ①返回 | ②坐标系 | ③语义 | **裁定** |
|---|---|---|:-:|:-:|:-:|:--|
| audio-music | zzfxG/zzfxM 合成核 | `zzfxG→Array:2724`/`zzfxM→Array:3730` | ✅ | n/a | ✅ | **合成包装** |
| audio-music | playChannels 播放/混音 | `Sound.play(pos,...):2551` 世界定位+range 衰减 | ✗ | ✗ | ✗ | **缺件补层** |
| particles-juice | 粒子发射/池 | `ParticleEmitter(pos,...) extends EngineObject:3232` | ✅ | ✗(世界 vs 像素) | ~ | **包装+世界↔像素阻抗层** |
| particles-juice | hitStop | `timeScale:352`/`setTimeScale:638` | ✅ | n/a | ✅ | **包装** |
| particles-juice | 屏震 | `cameraPos:334`/`setCameraPos:626` | ✅ | ~ | ⚠跨层 | **包装(须 render 切引擎相机)/否则补层** |
| palette-post | postProcess | `PostProcessPlugin(shaderCode):3578` GLSL 可注入 | — | — | ✗(CPU 像素缓冲 vs GPU GLSL) | **整体缺件补层**(引擎仅提供 GLSL 注入位) |
| palette-post | RGB↔HSL/Bayer | `Color.setHSLA/HSLA:1431-40`(单色) | ~ | n/a | ✗(单色 vs 缓冲批) | **混合:基元参照,缓冲/索引/抖动补层** |
| physics-lite | 抛体/clampSpeed/friction | `EngineObject.updatePhysics:2832`(帧步刚体)/`objectMaxSpeed:469` | ✗ | ✗ | ✗(秒级无状态纯函数 vs 帧步 OOP) | **缺件补层** |
| physics-lite | 弹簧+解耦运动学 | 引擎确无 | — | — | — | **缺件补层** |
| collision | aabbVsAabb→Manifold(MTV) | `isOverlapping→boolean:1021` | **✗(bool 给不出 depth/nx/ny)** | ✗(全宽 vs 半宽 2×) | ✗ | **缺件补层**R3 预判证实) |
| collision | raycastAabb→RayHit | `isIntersecting→boolean:1029`/`lineTest→Vector2\|undefined:1043` | **✗(无 t/px/py)** | ✗ | ✗(线段 vs 射线) | **缺件补层**R3 预判证实) |
| collision | SpatialHash/圆·SAT/MTV/圆射线 | 引擎确无 | — | — | — | **缺件补层** |
| gamefeel | easing linear/smoothstep | `lerp:987`/`smoothStep:1002` | ✅ | n/a | ✅ | **包装(仅这俩)** |
| gamefeel | elastic/back/cubic/InputBuffer/coyote/combo | 引擎确无(仅 lerp/smoothStep/oscillate) | — | — | — | **缺件补层** |
| 受控面 | random | `RandomGenerator(seed):1164` 种子确定性 | ✅ | n/a | ✅ | **包装(透传)** |
| 受控面 | time | `time:99`(受 timeScale/暂停污染)/`timeReal:103`(纯墙钟) | ✅ | n/a | ✅ | **包装(透传,A0 后);probe 用引擎 `timeReal`/独立墙钟** |
| 受控面 | input | `keyIsDown/mouseWasPressed:2265-2308` 轮询态 bool | ✅ | n/a | ✅ | **包装(归一化)** |
> **裁定分布**:包装/透传 6 件hitStop·屏震·gamefeel lerp 俩·random·time·input + audio 合成核 + particles 发射含阻抗层);**缺件补层 7 件**collision MTV/RayHit/SpatialHash 全套·physics 抛体+弹簧·palette postProcess·gamefeel 高级缓动+时间窗·audio 播放层);混合 1palette 调色)。**collision 整件、palette postProcess、physics 核心实为引擎缺件**——「自研合规」,但归因从「审计已确认缺件」(误)改为「逐函数验签确认缺件」(实)。
> **render.js**agent 生成域(合规),但 β 后绘制底座切引擎 `drawTile`/`drawText`(CJK spike 验)/`drawRect`/`Color`,作「经引擎画游戏」样板。
> **render.js**agent 生成域(合规),但 β 后绘制底座切引擎 `drawTile`/`drawText`(CJK spike 验)/`drawRect`/`Color`,作「经引擎画游戏」样板。
@ -121,7 +124,7 @@ A0 引擎主循环接管host-dev 桩→engineInit/engineUpdate 真接管帧
| # | 门 | 判据 |
|---|---|---|
| 0 | **引擎主循环接管A0 地基)** | host-dev 真跑 engineInit/engineUpdate非 RAF 桩);引擎 `time`/`frame` 随循环真推进probe 实测)。**probe 须同时持双时钟R4-P2**:引擎 time仅作本门接管断言+ 独立墙钟作门9 P75 埋点),两钟物理隔离互不覆盖 |
| 0 | **引擎主循环接管A0 地基)** | host-dev 真跑 `engineInit` 五回调(非 RAF 桩,无 engineUpdate 可手摇);引擎 `time`/`frame` 随循环真推进probe 实测)。**probe 双时钟R4-P2**:引擎 `time`受 timeScale/暂停污染,仅作本门接管断言)+ 引擎 `timeReal:103`独立墙钟(纯墙钟,作门9 P75 埋点),两钟物理隔离互不覆盖 |
| 1 | 真接线门三件套R6 | ①esbuild metafilelittlejsengine 入产物且被各 impl chunk 真实引用 ②运行时 probe各包装层产调引擎能力调用 ID 证据 ③负向扫描:旧裸 Canvas2D/自造合成器等价实现已删。单纯 grep 不算过门 |
| 2 | SIZES 重建 | 引擎首次入 bundle「引擎+插件」单口径(**非消双份记账**R3 血统三件套齐 |
| 3 | e2e 像素门WebGL | 固定 seed/frame readPixels 哈希 ×N PASS + 双开确定性过 |
@ -157,4 +160,4 @@ A0 引擎主循环接管host-dev 桩→engineInit/engineUpdate 真接管帧
---
> R3 复审 5P0/5P1/3P2 全采纳整改 + R4 二轮复审「可冻结」(1P1+3P2 已就地补净) + 待确认 A 默认采纳降级——**✅ 已冻结开工**。Phase 0(装引擎+抽签名+冻三契约)为首步
> R3 复审 5P0/5P1/3P2 全采纳整改 + R4 二轮复审「可冻结」(1P1+3P2 已就地补净) + 待确认 A 默认采纳降级——**✅ 已冻结开工**。**Phase 0 ✅ 完成(`204eaed`:装 littlejsengine@1.18.19+ENGINE-CAPABILITIES.md 50+ 能力真签名+§7 验签填定)§1.5 延迟裁定获验证(4 条初判包装翻缺件补层)。Phase A 解锁**(地基=A0 engineInit 五回调接管)P2 三契约冻结待主会话据签名定(透传白名单/Runner URL 降级/storage 根)

View File

@ -13,7 +13,7 @@
- [ ] **W-CH 渠道波(抖音+微信小游戏,✅ 范围已定稿)**:判定=[`渠道适配判定 HJ-CH-001`](../agent-specs/2026-06-12-渠道适配判定-小游戏双渠道.md)——小游戏=精选整包 L1 分发面(一壳多游·主题合集口径)/H5=UGC+L2 主场W-CH-α 对比 spike(双 spec 齐,Codex 16 条全采纳;LayaAir 尽调出局)→**P0 段 ✅ 完成(2026-06-12 ultracode,验证门 6/6 PASS:adapter 21 测绿〔逮修 1 真 bug/合规 schema 30 用例/probe 八锚点哈希链/SIZES 实测 C-A 主包 gz 37.5KB=4MB 闸门 0.92%·每模板边际 gz2.9KB vs C-B Cocos 文献 1.94MB/双 RUNBOOK+证据校验器)**;**P1 只待你三件套**;C1-C2 ✅ 已拍(C1=自研流即时发布+双渠道精选发行/C2=合规为准绳,详归档⑫)
- [ ] **W-G0 生成工厂契约波(▶ 现行,α 主门已过)**:第 9 契约组——把参考件实证形状升格为正式契约(取证导出 __refForensics/__refChecklist/__refHost+evidence 四件套+LOOP 协议)+黄金评估集 v0(首件=暖阳小卖部)+9g 预算分档字段;**agentic 基建 ✅ 终裁(2026-06-12):全平台单一框架化基建=AgentScope 2.x 主力**(评审版 HJ-AGI-001;五资产契约边界+L1 裸通路定案;换轨触发写死,W-G1 即 spike 门,验不过切 LangGraph 开源核心);**附带**:TPL 产品命名选项给创始人(产品文档 A/C「玩法模板」是否改名,属产品改名非清毒)
- [ ] **W-G1 模型竞标 bake-off创始人 2026-06-12 裁定:Fable 只造引擎,生产生成=便宜模型)**:同 brief 同 harness,M2.7/M3/DS-V4-Pro/Flash 比 过门率/重试数/¥每过门款,对照 ¥0.15 L1 门;品类=现有 8 插件可承载(经营/回合 RPG/弹幕/氛围);**20 游戏能力矩阵=覆盖目标与插件缺口定义**(矩阵入 W-G1 spec);**spec 增列 agent-loop-v1 处置**(冻结只修 P0/资产judge 决策表·ledger 幂等·预算闸〕契约化迁 AgentScope/退役时点——审计②#2);⚠️ 前置=你侧 DS key 激活
- [ ] **T1b-β(双 spec ✅ 冻结开工,Phase 0 首步)**:评审版两轮过+裁决②扩裁(`2026-06-12-...review.md`),**执行版 HJ-T1B-B-EXEC-001(`2026-06-13-...execution.md`)经 R3 对抗复审逮 5P0(初稿§7预烤『引擎有X→包装』未核真签名=同NIH病)全整改→R4 二轮复审『可冻结』(1P1+3P2补净)→✅冻结**;待确认 A 默认采纳=Runner URL 降级 DB-manifest 带版本(不接 OSS,可逆,创始人可后切);**首步 Phase 0=装 littlejsengine 入 game-runtime(现0字节)+抽引擎真实签名(ENGINE-CAPABILITIES.md)+冻三契约**,§7 逐函数三分待 Phase0 验签后填。范围:①**裁决①+②落地(Q4 剃刀:自研=引擎外的层)**:〔裁决①〕粒子/物理/后处理三件改引擎能力包装层+**裁决② 2026-06-13 Opus 复查audio-music(re-vendor ZzFX/ZzFXM→改调引擎 Sound)+受控面 random/time(为取证砌墙→透传引擎 RandomGenerator/time)+juice hitStop·屏震(→引擎 timeScale/engineAddPlugin)+collision·gamefeel·physics-lite 逐函数三分(引擎有→包装/引擎无→缺件补层,废"维持自研"一刀切)**;**前置 P0=littlejsengine 真装入 game-runtime(现 0 字节)**+P1 引擎能力索引+P2 三契约冻结;R6 真接线门三件套(metafile+运行时调用 ID+负向扫);SIZES 重锚;render.js 切引擎 draw API;②Runner v2(防 demo 兜底假阳性);③1.x 退役(srcdoc→URL 四项兼容矩阵+CDP 走查门);④参考件经后端发布主链入 feed(解封③⑤);⑤P7/P8 固定清单(无命中默认 v2)+SDK storage 根契约收敛三套形状+probe 时钟拆分+outcome 注记(Q3 默认采纳);⑥R6 补录三件(weapp-adapter 仅 why-not 归 W-CH)+R3 血统回填五条
- [ ] **T1b-β(双 spec ✅ 冻结开工,Phase 0 首步)**:评审版两轮过+裁决②扩裁(`2026-06-12-...review.md`),**执行版 HJ-T1B-B-EXEC-001(`2026-06-13-...execution.md`)经 R3 对抗复审逮 5P0(初稿§7预烤『引擎有X→包装』未核真签名=同NIH病)全整改→R4 二轮复审『可冻结』(1P1+3P2补净)→✅冻结**;待确认 A 默认采纳=Runner URL 降级 DB-manifest 带版本(不接 OSS,可逆,创始人可后切);**Phase 0 ✅ 完成(`204eaed`):littlejsengine@1.18.19 装入+ENGINE-CAPABILITIES.md 50+ 能力真签名+§7 验签填定——§1.5 延迟裁定获验证(4 条初判『包装』翻『缺件补层』:collision MTV/RayHit·palette postProcess·physics 抛体;collision 整件/palette postProcess/physics 核心实为引擎缺件,自研合规但归因改逐函数验签)**;**Phase A 解锁**(地基 A0=engineInit 五回调接管),P2 三契约冻结待据签名定。范围:①**裁决①+②落地(Q4 剃刀:自研=引擎外的层)**:〔裁决①〕粒子/物理/后处理三件改引擎能力包装层+**裁决② 2026-06-13 Opus 复查audio-music(re-vendor ZzFX/ZzFXM→改调引擎 Sound)+受控面 random/time(为取证砌墙→透传引擎 RandomGenerator/time)+juice hitStop·屏震(→引擎 timeScale/engineAddPlugin)+collision·gamefeel·physics-lite 逐函数三分(引擎有→包装/引擎无→缺件补层,废"维持自研"一刀切)**;**前置 P0=littlejsengine 真装入 game-runtime(现 0 字节)**+P1 引擎能力索引+P2 三契约冻结;R6 真接线门三件套(metafile+运行时调用 ID+负向扫);SIZES 重锚;render.js 切引擎 draw API;②Runner v2(防 demo 兜底假阳性);③1.x 退役(srcdoc→URL 四项兼容矩阵+CDP 走查门);④参考件经后端发布主链入 feed(解封③⑤);⑤P7/P8 固定清单(无命中默认 v2)+SDK storage 根契约收敛三套形状+probe 时钟拆分+outcome 注记(Q3 默认采纳);⑥R6 补录三件(weapp-adapter 仅 why-not 归 W-CH)+R3 血统回填五条
- [ ] **插件库扩展波 v2缺口由 20 游戏矩阵定义,Fable 设计协议+Opus 实现 lane**:候选四件=平台角色控制器/瓦片关卡与房间系统/2D 光照视野/行为体与程序生成工具箱——补齐后矩阵覆盖 ~19/20(Q1K3 类 3D 出 Tier1 圈归 Tier2)
- [ ] **studio 链路③⑤ UI 走查闭合(⛔ 重锚至 β 后)**5 bug 中 OG 修已落(`1921f85`),余 3 件+真走查全需 feed 有内容——W-CLEAN 后池空(2026-06-12 实测),等 T1b-β 参考件发布入池;cover 无源=生成特性归 W-G1;authorName 扩 API 可先写码但 e2e 同等内容
- [ ] **feed 翻页桩**(触发线已失效:池 50→0,W-CLEAN 清空;降为 β 内容回灌后再评,不再"必修"