Skip to content

SCAPI Skyline Project v0.1.153

Choose a tag to compare

@DionysusDWI DionysusDWI released this 29 Sep 09:13
· 22 commits to main since this release

SCAPI Skyline Project v0.1.153


[v0.1.153] - 2026-09-29

第一百五十七版:新增地形形状指纹(把"随日照变化的 SunlightHeight"从跨轮判据里切出去)。
相对 v0.1.152 的变更:

1. 新只读探针 skyline.ChunkShapeHash(cx, cz)

只哈希 Top/Bottom 两张图(不含 SunlightHeight);ChunkHeightHash 保留(含日照高度)并显式带
includesSunlightHeight 字段。为什么需要:SunlightHeight 由日照值推出 ⇒ 会随时间/天气变化,
跨轮比对"邻居有没有被污染"时会把时间变化误判成污染。

2. 用它把"修法 A 的 crit5"改成同轮次强设计(heightlab/skyline-v0153-crit5-same-round.py)

  • 给受害区块与 4 个邻块各放一格 ⇒ 卸载时一定落盘 ⇒ 之后从盘读回(判据断言 4/4 loadedFromDisk=True);
  • 控制轮测完必须再卸载,否则受害区块常驻、注入轮不走 LoadChunkData ⇒ 注入不触发
    (第一版实测 nonIoFailures 增量 = 0,整轮无意义——已修);
  • 判据用形状指纹(Top+Bottom);含 SunlightHeight 的完整高度图降为仪器。

3. 结果(如实):injection-fired ✅、neighbors-were-from-disk ✅、victim-regenerated ✅(0.999),

neighbors-identical-same-round ❌(4 个邻块里 1 个形状指纹变了)。

我先猜"是日照随时间变"——被实验否掉(形状指纹同样变)。剩下最合理的解释写在 notes/262 §5.2:
受害区块在修法 A 下重新生成期间列是空的,而邻块的高度计算会读邻居列 ⇒ 那一个邻块可能按"空邻居"算过一次。
可判定验证方式已写好(下一轮:把该邻块再走一遍 InvalidLight,看形状指纹是否回到控制值)。

如实边界

  • 数据丢失路径(crit2)仍是绿的(保留率 1.000)——本版没有改变这一点。
  • crit5 没有关掉,但性质已从"测量混淆"澄清为"可能真实、范围极小(1/4 邻块)、可判定"。
  • 本版只加只读探针;SunLightReplay/SunlightHeight 的行为未变。

相对 v0.1.152:新增只读探针 skyline.ChunkShapeHash(只哈希 Top/Bottom,不含由日照值推出的 SunlightHeight);并用它把修法 A 的 crit5 改成同轮次强设计(受害区块与 4 邻块各放一格 ⇒ 一定落盘 ⇒ 从盘读回;控制轮测完必须再卸载,否则注入不触发)。实测:注入 fired ✅、邻块 4/4 fromDisk ✅、受害块 nonAir 与邻居同量级(0.999)✅,但仍有 1/4 邻块的形状指纹变了 ⇒ 我先猜的"日照随时间变"被否掉;最合理解释(重生成窗口期"空邻居"被邻块高度计算读到)已写进 notes/262 §5.2,并给出可判定验证方式。crit5 未关,crit2(数据丢失)仍绿。README 9993 字符。