Repository navigation
SCAPI Skyline Project v0.1.147
SCAPI Skyline Project v0.1.147
[v0.1.147] - 2026-09-29
第一百五十一版:notes/257 那条发现的零风险处置("方案 C") —— 把"坏档被当成已加载"变成可数可查。
相对 v0.1.146 的变更:
1. 坏档账本(只加可观测性,不改任何语义)
TerrainSerializer23 新增三个静态计数与一个有界最近失败记录(8 条):
ioFailures(走 catch (IOException):弹窗 + DisposeProject 那条重分支)、
nonIoFailures(走 catch (Exception):只记日志然后 return true)、
acceptedAfterFailure(其中"被当成加载成功"的次数 —— 也就是 notes/257 那条发现的计量)。
只读探针:skyline.ChunkLoadFailures()。
2. 验收 3/3 PASS(heightlab/skyline-v0147-chunk-load-ledger.py)
| 判据 | 实测 |
|---|---|
ledger-counts-failure |
造一次坏档后 nonIoFailures +1、acceptedAfterFailure +1 |
ledger-keeps-coordinates |
最近记录含坐标 (4854,3760)、异常类型 InvalidDataException、注入消息 |
ledger-read-only-invariant |
再读一次计数不变(证明它只是账本、不改行为) |
3. 门禁新增 chunk-load-ledger
断言账本可读、三个计数都是整数、保留上限与最近记录结构在 ⇒ 这份可观测性不会被后续改动弄丢。
门禁现在 PASS 22 / FAIL 0 / SKIP 2。
如实边界
- 修法 A/B(非 IO 也
return false/ 先清零)仍未做:它们会改变"坏档时的世界演化",属引擎语义变更,
已在notes/257 §4列出并交审计裁定。 - 账本记录只保留最近 8 条(有界);没有做持久化(重启即清零)。
相对 v0.1.146:按 notes/257 的『方案 C』做零风险处置——TerrainSerializer23 新增坏档账本(ioFailures / nonIoFailures / acceptedAfterFailure + 最近 8 条含坐标与异常类型),只读探针 skyline.ChunkLoadFailures()。验收 3/3:造一次坏档后 nonIoFailures +1、acceptedAfterFailure +1(证明『坏档被当成已加载』可数)、记录含坐标与 InvalidDataException、再读计数不变。门禁新增 chunk-load-ledger ⇒ PASS 22 / FAIL 0 / SKIP 2。修法 A/B(非 IO 也 return false / 先清零)会改变世界演化,仍待审计裁定。README 9986 字符。