Skip to content

SCAPI Skyline Project v0.1.150

Choose a tag to compare

@DionysusDWI DionysusDWI released this 29 Sep 08:51
· 25 commits to main since this release

SCAPI Skyline Project v0.1.150


[v0.1.150] - 2026-09-29

第一百五十四版:补上审计点名的"光照位没有被比对"缺口 —— 日照/高度 pass 的同轮次幂等性探针。
相对 v0.1.149 的变更:

1. 新受控探针 skyline.SunLightReplay(cx, cz, restore=true)

审计(to-cc/…073754Z-0001#2)指出:v0.1.139 的验收只比高度图指纹,而同一次
GenerateChunkSunLightAndHeight 还会写光照位,那部分没有任何比对覆盖。
本探针用同轮次(中间没有任何传播动作)的方式直接测"这一段是区块自身的确定函数":
先取 digestBefore → 跑一次 f → 取 digestAfterFirstReplay → 再跑一次 f → 取 digestAfterSecondReplay,
判据是 f(f(x)) == f(x)。

为什么必须写成 f(f(x)) == f(x) 而不是 f(x) == x:第一次重跑会抹掉该区块的传播光
(它只按日照/衰减写),所以 before 与 f(x) 不同是正常的——v0.1.150 第一版探针按
f(x) == x 判,结果 5/5 全 FAIL,属判据写错(已改正并如实记录)。

restore=true(默认)在比较完把该区块标回 InvalidLight,让引擎自己重走完整光照
(含光源扫描与传播),因此不会把"只按日照"的结果留在世界里。

2. 验收 4/4 PASS(heightlab/skyline-v0150-sunlight-replay.py)

判据 实测
sunlight-pass-idempotent 5/5 区块 f(f(x)) == f(x)(列内光照摘要逐位相同,覆盖整列全高)
heights-stable-across-replay 重跑前后高度图指纹相同 5/5
restore-happens 5/5 被标回 InvalidLight
state-returns-to-valid 6 s 后 5/5 自己回到可读

附带事实(如实记录):5 个采样区块里 3 个在第一次重跑时摘要变化、2 个不变
⇒ 前者当时带着传播光、后者已经是"纯日照"状态。这条正好解释了为什么要按 f(f(x)) 判。

如实边界

  • 探针是受控的(会重跑 pass 并改状态);只建议在没有点光源的测试区使用。
  • 它证明的是"该 pass 是区块自身的确定函数"(并行路径依赖的性质),
    不是"并行与串行结果相同"(后者由 v0.1.139 的高度图交叉比对 + 本探针共同支撑)。

相对 v0.1.149:新增受控探针 skyline.SunLightReplay(cx,cz,restore=true)——对 Valid 区块跑两次同一个 GenerateChunkSunLightAndHeight(与并行路径同一函数),取整列光照摘要;判据是 f(f(x))==f(x)(v0.1.150 第一版按 f(x)==x 判错、5/5 假 FAIL,已更正并如实记录:首跑会抹掉传播光属正常)。restore=true 时把区块标回 InvalidLight,让引擎自己重走完整光照。验收 4/4:5/5 幂等、高度图稳定、restore 生效、6 s 后全部回到可读。README 9997 字符。