在登录 / 访客 / 种植 / 用瓶 / Timer 五类触发点,把 [now, now+24h](maxGrow 上界已坐实)的自然雨窗 生成一次并落盘;读天气 = 扫已物化窗口列表;到点事件与水位线前滚由 timersvr 离线定时器(BotTick 范式)驱动。 窗口生成用普通 RNG——结果落盘后即真值,无需跨 Pod 可复算,这是与 E 的本质分野。
horizon = now + 24h // maxGrow=24.00h 已坐实(05 §16.3) if 水位线 materialized_until ≥ horizon: return // 命中,零写 rollWindows(尾部 → horizon) // 普通 RNG,逐日 0 点锚定 + 链式 append → WeatherState.materialized // markDirty → 3 阶段 Save GC 过期窗(end < now-24h) renewTimer(下一窗口边界, seq++) // AddTaskAsync(fire-and-forget)
触发点 = 登录、好友访问、种植、用瓶、timer 到点。任一漏挂即水位线停摆 → 读到「未物化」。 从不登录玩家在被第一次触达(如好友来访)之前,整条时间线不存在。
勾选顶栏「模拟乙的 timer 断链」:乙的水位线停止前滚,越过水位线后乙的天气变为未物化—— 好友看到停摆数据,直到登录/被访问自愈。对照:timer.md §15.5,AddTaskAsync 失败仅打日志,自愈必须业务自带。
本配置约 23 场/天 → 每玩家每天约 46 次边界回调 + 续约;乘以「活动内登录过的玩家数」即 timersvr 的持续负载(开放问题 D-Q1:全量 / dormant 阈值 / D′-lite 三档未拍)。
E:顺延不写任何东西,读时重放自动级联。
D′:顺延 = 把未来已物化窗逐个改写再落盘(本演示实现「级联平移、保留原间隔与原窗时长(快照)」)。
被顺延窗口带金色描边。级联粒度 / 是否重 roll / 跨午夜是否 snap 回次日锚——语义未拍(开放问题 D-Q3);
改写逻辑一旦有 bug,坏数据会持久化(E 的重放坏了改代码即愈,D′ 的坏窗口要修数据)。
D′ 的处理协议:①物化即快照——已落盘窗(含道具雨时长与已写入的顺延结果)天然免疫热更回溯,这是 D′ 在此风险上的结构优势(E 要靠"版本按日选取"纪律达成同效)。 ②代价 = 新配置从各玩家水位线外开始生效:边界错峰、玩家间不公平、混合期最长 24h;timer 断链者永远停在旧配置(03 节勾选断链叠加观察)。 ③「翌日 0 点重物化对齐」可消除错峰(对齐 E 的 §14 天界语义),但引入"丢弃未来已物化窗重生成"的改写机制——窗口身份更换,每场限采的去重键随之失配,须与采集瓶场次键联动设计。 ④重物化 / 强刷必须联动 gate-only 重算,否则窗新门旧(勾掉联动看后果);已揭示相位锁定不回滚。 ⑤GM 强刷禁止截断进行中窗口(去掉保护勾选看事故:现场雨消失 + 身份更换 → 双采/漏采,R-D5 二次事故)。
「真值」列是仿真上帝视角,用于暴露缓存陈旧度;真实系统里观察者拿不到它。 从不登录的丙在被首次访问前徽标恒为「无数据」;访问丙会在读路径上触发 ensureMaterialized→markDirty 落盘—— 与 05 §15.2 否决 DeferCheckpoint 的「读触发写」判据正面冲突(开放问题 D-Q2)。
尚未种植。选一种成熟时长(4/8/12/24h),把时间调到某场已物化雨前再种;观察四个跨阶段判定点是否落进物化雨窗,再试施肥把判定点整体前移。
b-weather-rain-statemachine-260624 · weather-demo-Dprime.html · 2026-07-02 · 机制与 09 §3、05 §16 逐条对齐,配置热更对照 05 §14(演示级简化:日界用整 86400;RNG 用固定种子 mulberry32 便于复现——真实实现可用任意 RNG,落盘即真值)