发布冻结期能做什么:把状态转换写成可重放的纯函数 冻结期不适合临时替换基础设施却适合把一个已有流程的状态规则写清楚。用固定事件重放一次检查输入有没有被偷偷改掉比补一段“系统已经稳定”的总结更有用。先选一个很小的状态机教学对象是声音素材的评审流程DRAFT 提交后进入 REVIEW审核通过变成 READY人工撤回回到 DRAFT。音频上传、网络请求、通知和当前时间都放在外部。纯函数只回答给定旧状态和事件新状态是什么。10 月 6 日的 Ironclad 官方案例讨论了计算机使用评估但厂商报告和模拟任务不能当成本项目的生产证据本轮重开确认发布日期与研究范围不移植其效果数字。本篇采用独立构造样例验证范围限于状态迁移。为了重放事件携带显式时间和版本不能在 reducer 内调用 Date.now 或 Math.random。事件 ID 用于去重version 用于拒绝过期写入。示例只保存小规模已见事件集合真实持久日志还需分段快照与保留策略。const startObject.freeze({stage:DRAFT,version:0,seen:Object.freeze([]),updatedAt:0}); function reduceAsset(state,event){ if(!event||typeof event.id!string||!event.id||!Number.isSafeInteger(event.at)||event.at0) throw Error(event); if(state.seen.includes(event.id))return state; if(event.expectedVersion!state.version)throw Error(version conflict); if(event.atstate.updatedAt)throw Error(time order); const transitions{DRAFT:{submit:REVIEW},REVIEW:{approve:READY,withdraw:DRAFT},READY:{withdraw:DRAFT}}; const stagetransitions[state.stage]?.[event.type]; if(!stage)throw Error(invalid transition); return {stage,version:state.version1,seen:[...state.seen,event.id],updatedAt:event.at}; } function replay(events,initialstart){return events.reduce(reduceAsset,initial);} const demoEvents[ {id:e1,type:submit,at:100,expectedVersion:0}, {id:e2,type:approve,at:200,expectedVersion:1} ];重放要比较状态也要看失败位置图中 DONE 表示评审完成对应代码的 READY尚不代表已经发布。PURE CORE 指确定性转换EFFECTS OUTSIDE 指网络等外部行为它不是部署流水线截图。对同一初始状态和事件序列纯函数应产生相同结果。未知迁移直接报错让调用者处理而不是悄悄跳过后继续写入。测试时冻结初始状态和嵌套数组可以发现直接 push 或原地修改。对复杂对象需要递归冻结浅冻结不保护所有子对象。还要检查重复投递不重复增版本、乱序时间不会悄悄覆盖、过期 version 能被发现。纯函数守不了数据库事务两个请求都读到 version3各自计算 version4纯函数都可能合法。存储层必须使用条件更新或事务保证只有一个提交成功。通知也不能在 reducer 里直接发送否则重放会重复通知可把副作用写入事务 outbox再由独立消费者幂等执行。本例没有数据库和消息系统因此不宣称并发安全或恰好一次通知。通过的只是确定性、不可变输入、非法迁移、重复 ID 和版本冲突。冻结期能交付的是一份清楚的规则和可重跑样例是否发布仍由既有发布流程决定。复现记录本轮在 Node.js v26.3.0 中运行随文核心逻辑的构造样例进程退出码为 0。测试输出PASS: replay determinism, immutable input, duplicate event, invalid transition, version conflict, time order将上方完整代码保存为 example.mjs以 Node.js 26 执行 node example.mjs 可加载核心与教学输入函数默认不访问网络、模型或硬件。浏览器适配入口需要明确传入对应对象本轮未执行这些入口。上面的通过项来自独立构造样例不能替代集成测试。资料与时效Advancing computer use with Ironclad2026-10-06。HTML Living Standard: Server-sent events首次发布日期未核实更新 2026-10-22。本稿对应原预排时段实际发布前须人工复核来源更正、SDK/API 版本及可用性不据此预言 10 月 24–31 日的新事件。