diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/evidence/p68-analysis.txt | 18 | ||||
| -rw-r--r-- | docs/evidence/p68-map.png | bin | 0 -> 172204 bytes | |||
| -rw-r--r-- | docs/evidence/p68-run-log.txt | 4 | ||||
| -rw-r--r-- | docs/evidence/p68-verification.txt | 51 |
4 files changed, 73 insertions, 0 deletions
diff --git a/docs/evidence/p68-analysis.txt b/docs/evidence/p68-analysis.txt new file mode 100644 index 0000000..4e0a3a6 --- /dev/null +++ b/docs/evidence/p68-analysis.txt @@ -0,0 +1,18 @@ +P68(512×384 整图渲染截图证据)分析 — headless 离线渲染(无图形设备) +钩子:LV_P68_MAPSHOT=1(MapGen.paramsForSize 512 384 seed=4242 → MapSnapshot 整图 PNG) + +log: p68-map width=512 height=384 scale=8 png=4096x3072 bytes=172204 + +log: p68-tiles grass=164907 water=6120 stone=1109 peat=0 paddy=11595 vegetable=12877 +log: p68-features rivers=4 bridges=48 paths=1109 buildings=45 farmhouses=21 groves=852 road_columns=512 + +log: p68-render deterministic=true sha256=DD23CC2DE96955DCDC58A261F14DB6A4BF5E012C6F1E3C047A6E868AAFDC0FBF + +p68-map.png 4096x3072 +palette pixel counts: grass=10480064 water=388608 stone=0 peat=0 paddy=742080 vegetable=824128 path=34112 road=32768 bridge=3072 roof=19328 door=4224 grove=54528 +water pixel ratio (vs tile count) = 0.992 +max_black_block=0 max_white_block=0 + +missing_glyph_slots=0(纯地图整图,无 UI 文案帧) + +verdict: PASS diff --git a/docs/evidence/p68-map.png b/docs/evidence/p68-map.png Binary files differnew file mode 100644 index 0000000..deeebfa --- /dev/null +++ b/docs/evidence/p68-map.png diff --git a/docs/evidence/p68-run-log.txt b/docs/evidence/p68-run-log.txt new file mode 100644 index 0000000..d1d68bf --- /dev/null +++ b/docs/evidence/p68-run-log.txt @@ -0,0 +1,4 @@ +p68-map width=512 height=384 scale=8 png=4096x3072 bytes=172204 +p68-tiles grass=164907 water=6120 stone=1109 peat=0 paddy=11595 vegetable=12877 +p68-features rivers=4 bridges=48 paths=1109 buildings=45 farmhouses=21 groves=852 road_columns=512 +p68-render deterministic=true sha256=DD23CC2DE96955DCDC58A261F14DB6A4BF5E012C6F1E3C047A6E868AAFDC0FBF diff --git a/docs/evidence/p68-verification.txt b/docs/evidence/p68-verification.txt new file mode 100644 index 0000000..82ea1e6 --- /dev/null +++ b/docs/evidence/p68-verification.txt @@ -0,0 +1,51 @@ +P68(512×384 整图渲染截图证据)验证记录 +基线:commit a578791(P67)。本单未 push。 + +范围 +- 为「512×384 整图」方案验收补一张覆盖全图的真实像素证据(P48 只验过 digest)。 +- 只新增 Desktop 侧离线渲染模块与证据钩子/脚本/测试;Kernel/Sim 零改动。 + +改动文件 +- src/LivingVillage.Desktop/MapSnapshot.fs(新):`MapGen.Result` → RGB 像素 / PNG 的纯 CPU 渲染器。 + - 每瓦片 `scale` 像素(默认 8,>=8);调色板:草地/水/石/泥炭/水田/菜畦/小径/主路/桥/屋顶/门/树丛, + 与 scripts/analyze-p68.py 一一对应。 + - 绘制顺序:地面瓦片 → Paths 小径 → MainRoadCenter 主路 → Bridges 桥 → Buildings/Farmhouses + 屋顶矩形 + 门 → Groves 树丛。 + - PNG 编码自包含(IHDR/IDAT/IEND + CRC32 + BCL `ZLibStream` 压缩),无外部图像依赖。 +- src/LivingVillage.Desktop/Program.fs:新增 LV_P68_MAPSHOT=1 钩子——用 `MapGen.generateWithSize 512 384 4242` + (内部即 paramsForSize)离线渲染整图到 `LV_RECORD_DIR/p68-map.png` 后退出,**不启动图形设备**(真正 headless)。 +- src/LivingVillage.Desktop.Tests/P68MapSnapshotTests.fs(新,3 例)+ 两处 .fsproj 挂载。 +- scripts/analyze-p68.py(新)+ docs/evidence/p68-{run-log,map}.png + p68-analysis.txt。 + +红先 +- 先建 P68MapSnapshotTests.fs 引用未实现的 MapSnapshot → 暂存 Program.fs/fsproj 并移开 MapSnapshot.fs 后编译红 + (FS0039 MapSnapshot 未定义),恢复后转绿。首次全量测试暴露 MSTest 对 byte[] 的 AreEqual 非结构比较, + 改用 CollectionAssert.AreEqual 后全绿。 + +构建/测试 +- dotnet build LivingVillage.sln -c Release → 0 错误,1 警告(P40ArtTests.fs FS0760,既有)。 +- dotnet test src/LivingVillage.Desktop.Tests -c Release --no-build → 336/336(333→+3)。 +- dotnet test src/LivingVillage.Kernel.Tests -c Release --no-build → 119/119。 +- 用例:PNG 尺寸 = 512×scale × 384×scale(含 IHDR 解析)+ PNG 签名;RGB 缓冲含 + 河流/农田/主路/小径/屋顶像素;同输入两次 PNG 逐字节一致、不同 scale 不同。 + +真实整图证据(headless,无 Xvfb/X) +- LV_P68_MAPSHOT=1 → p68-map.png 4096x3072(512×384 @ scale 8),172204 bytes。 +- 统计:grass=164907 water=6120 stone=1109 paddy=11595 vegetable=12877; + rivers=4 bridges=48 paths=1109 buildings=45 farmhouses=21 groves=852 road_columns=512。 +- scripts/analyze-p68.py verdict: PASS + - 尺寸 4096x3072;调色板像素计数:water=388608 paddy=742080 vegetable=824128 road=32768 + path=34112 bridge=3072 roof=19328 grove=54528(均 > 0);水像素/瓦片比 = 0.992。 + - 无 24x24 纯黑块、无 64x64 纯白块;missing_glyph_slots=0(纯地图,无 UI 帧)。 + - 确定性 deterministic=true sha256=DD23CC2D…0FBF。 +- scripts/check-no-white-blocks.py → checked=1 failures=0 OK。 + +确定性(数值路径未动) +- dotnet run -c Release --project src/LivingVillage.Headless -- --performance-baseline ×3 + → final_digest 全等 953775FAEB2FDDE97289491AA260BD8D390C571E48A7A13AD2CB6FB7124F7F6C, + performance_determinism=PASS ×3。 + +边界 +- 未改 Kernel/Sim、未改 HUD/对话框、未改 MapGen 生成算法或 seed 口径、未引外部素材;未 push。 +- `docs/overnight-status.md` 未纳入本 slice commit(由外部监控单独提交)。 +- 逐帧/整图「视觉可辨」的 vision 复核由 Hermes 侧完成。 |
