修复脚本短路构造与Promise链调用图
按JavaScript短路语义建模sequence、logical与逻辑赋值callee 补齐assignment、conditional与未覆盖bind的构造目标解析 穿透delete括号并恢复函数对象原型内建调用 沿动态导入Promise链传播精确callback参数槽 补充控制流回归及技术方案与共享决策记录
This commit is contained in:
@@ -839,6 +839,7 @@ game-project/
|
||||
- `new` 必须覆盖显式 `super()`、隐式 derived constructor 和直接 class expression;class expression 经 `new` 赋给局部变量时必须冻结 instance owner,未 override 的 instance / static 方法沿冻结的 `extends` 链查找。普通嵌套 function 拥有独立 `this`,只有 arrow 词法继承外层 owner。声明后通过 assignment 安装的 function / arrow、本地 function alias 和 `.bind()` 结果都必须保留 callable identity;只有未被函数对象自有成员覆盖的 Function.prototype `.call()` / `.apply()` / `.bind()` 采用内建 callable 语义,自有覆盖和业务对象同名方法都按实际成员 callable 解析。函数对象自有 `.call / .apply / .bind` 覆盖必须按对象身份传播到全部普通别名,`.bind()` 生成的新函数则保持独立对象身份。callable conditional expression 必须合并 consequent / alternate 的全部可调用身份;声明式和后续赋值式 `api.run.bind(api)` 都在绑定时冻结成员 owner 与方法名。受控 callback 识别穿透 callee 与 receiver 外层括号;Promise `.then` 的 fulfilled / rejected 两个参数都是 callback,`.catch` / `.finally` 仍仅取第一个。timer、RAF、microtask、Promise 与事件监听 callback 的注册点只建立异步可达调用边,闭包读取外层 alias 时必须选取当前同步作用域收尾后的状态,不能冻结在注册点;callback 函数体对外层 alias 的写副作用仍不得同步提交到注册调用末尾。数组字面量的已知迭代 API 才按同步 callback 传播函数体副作用。视觉资产启发式允许使用 ASCII 小写副本查找路径、`drawImage` 与图片变量,但函数调用图、semantic binding 和可达性必须始终解析原始大小写 JavaScript,禁止把 `MainLoop` 与 `mainloop` 合并。Canvas 视觉门必须复用同一组受 256 文件、累计源码 `2 MiB` 与投影处理 `32 MiB` 限制的 inline / external module 加载、链接和投影结果,并逐个原始大小写 unit 独立关联资产路径、图片变量与可达 `drawImage`;`<script type="module">`、本地 `<script type="module" src>` 及其真实可达依赖可以形成证据,未链接文件、恒假动态依赖、未调用函数、跨 unit 拼接和仅出现在 HTML 文本中的路径不得借用其它 unit 的绘制调用过门。
|
||||
- conditional callable 的 consequent / alternate 必须在 test 求值之后分别按自身表达式起点冻结身份;受控 callback 参数也按该参数自身起点解析,使更早参数的 alias 副作用先行生效,同时保持真实 callback 执行边位于注册调用之后。
|
||||
- 异步 callback 的延迟状态必须沿完整 enclosing invocation 链传播:每层闭包读取该函数同步收尾后的局部 alias,越过最外层调用后再读取当前 job 末尾的外层 alias;不能只完成注册函数一层后,又在其调用点冻结更外层状态。conditional expression callee 在 test 完成后解析两支,assignment expression callee 直接调用 RHS 求值结果;`new` 除 class constructor 外也必须调用普通 function 及其 alias。函数对象自有 `.call / .apply / .bind` assignment 的 RHS 可来自普通对象静态 member callable;`delete` 通过任一共享函数 alias 删除这些自有覆盖后恢复 Function.prototype intrinsic,未知条件删除保留覆盖与 intrinsic 两种可能。删除态必须和“自有属性仍存在但值不可调用”分离,后者继续禁止 intrinsic 回退。
|
||||
- callee 求值必须覆盖 sequence、logical expression 与 `||= / &&= / ??=`:sequence 只调用最后一项但保留前项副作用,logical 与 logical assignment 按 callable 的真值 / nullish 事实执行短路,未知状态才合并可运行分支,不能统一退化为 RHS 或把已跳过 RHS 的 decoy 建边。`new` 的 assignment / conditional callee 同样先完成 callee 求值,再冻结 constructor owner;未被 class 自有静态 `bind` 或函数对象 own override 覆盖的 Function.prototype `.bind()` 保留原 class construct target。`delete (((target.call)))` 等任意括号包装必须删除同一函数对象 own `.call/.apply/.bind` 并恢复 intrinsic。固定 dynamic import 返回的 Promise 可沿任意连续 `.then/.catch/.finally` 链传播 callback 可达性,链中每个 `.then` 只取 fulfilled / rejected 两槽,`.catch/.finally` 只取首槽,其余参数保持普通值。
|
||||
- 泥点不足是确定性业务中断,不是瞬态 Provider 故障或未知副作用。钱包的 `泥点余额不足` 与 `可消费泥点不足:...` 两种领域文案统一映射为稳定原因 `mud-points-insufficient`,不得自动重试;即使 External Generation durable ledger 已存在,也必须落为 `failed`,不能误入 `needs-reconciliation`。game-chat 顶部状态、持久失败对话与 `【Supervisor 阶段记录】` 统一显示“泥点余额不足,本轮游戏生成已中断。请充值后发送“继续”,系统会从当前项目进度接着完成。”,并禁止透传 operationId、URL、路径、密钥或任意上游正文。
|
||||
- tool-plan 成功响应落账前,对内置 Runtime 原生函数与 legacy wrapper 的合法、无重复 key JSON arguments 按工具 schema 的精确位置做项目路径 canonicalization:`file.*.path`、`project.patchset.changes[*].path`、`project.git_commit.paths[*]`、`command.*.cwd`、`image.inspect.paths[*]` 与 `canvas.asset_generate.outputPath` 若是当前项目根目录内的完整绝对路径,转换为 `/` 分隔的项目相对路径后再校验、持久化并执行;源码/叙述字段、任务产物描述、动态 MCP arguments 和项目外绝对路径不得改写,后两者继续由绝对路径门禁失败关闭。项目根只允许搜索/列举范围与命令 cwd 规范化为 `.`,不能成为文件目标。当前进程与重启恢复都必须从同一份规范化 handoff 重放,禁止分别执行原响应和持久响应。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user