Skip to content

SCAPI Skyline Project v0.1.149

Choose a tag to compare

@DionysusDWI DionysusDWI released this 29 Sep 08:40
· 26 commits to main since this release

SCAPI Skyline Project v0.1.149


[v0.1.149] - 2026-09-29

第一百五十三版:按审计裁定落地修法 A(默认打开) —— 掐断"坏档 + 编辑 ⇒ 地形被固化丢失"这条路径。
相对 v0.1.148 的变更:

1. 修法 A 改为默认生效

审计(to-cc/…081600Z-0001、…082034Z-0001)裁定:缺陷成立、定级 P1、修法选 A
("非 IO 异常也 return false";B 的先清零被裁定为冗余,因为 GenerateTerrain 会无条件重写每格)。
⇒ skyline.CorruptChunkRegenerate 默认翻成 true(保留开关只为 A/B 对照与一键回滚)。

2. 同批完成审计点名的三条配套

  • 跨会话留痕(P3):非 IO 坏档失败额外写一行 Log.Warning(坐标 + 异常类型 + 是否被当成已加载),
    因为账本是内存态、重启会清零;
  • 门禁升级为回归约束(P3):chunk-load-ledger 现在断言 acceptedAfterFailure == 0
    (修法 A 生效后该计数不得再增长);
  • 注入可指定目标区块(验收可靠性):skyline.ChunkReadFailureTargetCx/Cz(默认任意),
    否则"下一次 LoadChunkData"可能落在玩家附近的别的区块上、让实验不可判定(v0.1.149 第一版脚本就吃了这个亏)。

3. 验收(heightlab/skyline-v0149-corrupt-a-acceptance.py,审计的四条口径)

口径 实测
① 注入后 nonIoFailures +1、acceptedAfterFailure +0;受害区块走生成路径且与邻居同量级 ✅ nonIo +1 / accepted +0;受害区块 nonAir 281,860 vs 邻居 283,714(比值 0.993)
② 注入 → 编辑 → 保存 → 重开不断崖 ✅ 280,411 → 280,411(保留率 1.000;对照:修法前 281,844 → 1)
③ 坏档不被回写 ⚠️ 字节级证据通过(不注入时重开,受害区块高度指纹 = 基线 59d766e324f17f5d);但 "Region 文件 mtime 不变"这条代理判据 FAIL(+2.02 s)——见下
④ catch (IOException) 分支不回归 代码级核对:该分支未改动(仍为弹窗 + DisposeProject + return false);未做行为注入(会关掉世界)

关于 ③ 的代理判据(如实报告 + 已请审计裁定):区域文件是 16×16=256 个区块共用一个,
所以"文件 mtime 变新"不能证明受害区块被写回——它可能来自同文件的别的区块。
而字节级判据通过了(一次干净重开仍读到原档内容)⇒ 受害区块的原始数据没有被覆盖。
⇒ 我请 CC 裁定:把"字节级(指纹)"作为权威判据、"mtime"降为仪器,或给出更精确的区块级判据。

如实边界

  • 修法 A 的语义:坏档区块会被重新生成(地形与原档不同但自洽);原档数据本身已损坏,
    修法只是阻止"空内容被写回、原地形被抹掉"。
  • catch (IOException) 那条重分支(弹窗 + 关世界)没有做行为注入测试(会中断会话)。

相对 v0.1.148:按 CC 裁定落地修法 A(skyline.CorruptChunkRegenerate 默认翻成 true ⇒ 非 IO 坏档异常也 return false、该区块按同一坐标重新生成);同批完成三条配套(非 IO 失败写一行日志留痕、门禁断言 acceptedAfterFailure==0、注入可指定目标区块)。审计四条口径实测:①nonIo +1 且 accepted +0、受害区块 nonAir 281,860 vs 邻居 283,714(比值 0.993)②**注入→编辑→保存→重开 280,411 → 280,411(保留率 1.000;修复前 281,844 → 1)**③字节级证据通过(干净重开后指纹=基线),但『Region mtime 不变』这条代理判据 FAIL(一个区域文件 256 区块共用,mtime 不能证明受害区块被写回)⇒ 已请 CC 裁定代理判据④IOException 分支未改动。README 9952 字符。