summaryrefslogtreecommitdiff
path: root/docs/evidence/p64-verification.txt
blob: 690ea31a4070a9dcb059a89fced13167f3fa3da9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
P64(A3 成熟度:样板三处视觉缺口)验证记录
commit 前置:HEAD=128164d(docs tick)

变更(仅限现有江南样板,不扩展全村)
1. 好处:村庄俯瞰上半部空旷
   - `VillageArt.sampleRenderPlan` 在 local y0..6 / x0..19 补种(复用既有 RenderPropKind 与低饱和配色):
     4 菜畦(2格) + 2 竹丛(3格) + 2 灌木 + 2 花丛,并铺北侧田埂石径 x0..19 y0。
   - 无新增几何占位:全部走既有 GardenSprite/BambooSprite/ShrubSprite/FlowerSprite 与 StonePath。
2. 桥梁可读性
   - `scripts/make-jiangnan-art.py` 重绘 slot5:栈板桥面 + 两侧通长木栏杆 + 望柱 + 石缘(单格 32px,尺寸不变)。
   - `VillageArt.drawBridge` 在桥两侧水线补 4 块护岸石(`bridgeAbutmentOffsets`,仅江南图集;cc0 不变);
     桥位置与通行逻辑零改动。
3. 民居内景下半家具
   - `InteriorElementKind` 增 Chair/Stool/BedFoot/Teapot;图集在 392x96 自由区新增 4 个绘制单元,
     `interiorSourceRectangle`/`elementDestination` 同步;`sampleRenderPlan.Interior` 4 → 8 件。
   - 进门流程与 HomeMode 语义未改(内部元素纯绘制)。

改动文件
- scripts/make-jiangnan-art.py(桥 slot5 + 内景 4 家具单元)
- src/LivingVillage.Desktop/Assets/jiangnan-world.png, jiangnan-interior.png(脚本重生成,尺寸不变)
- src/LivingVillage.Desktop/VillageArt.fs(类型/源矩形/落位/补种/护岸石/采样)
- src/LivingVillage.Desktop/Game.fs(新增 LV_P64_SHOT 钩子,+~100 行,无删除)
- src/LivingVillage.Desktop.Tests/P64EvidenceTests.fs(新,+3 测试)+ fsproj
- src/LivingVillage.Desktop.Tests/PrototypeTests.fs(内容计数更新:内景元素 4→8;footprint 37→55)
- scripts/analyze-p64.py(新)

构建
dotnet build LivingVillage.sln -c Release → 已成功生成,0 错误,1 警告(P40ArtTests.fs(38,28) FS0760,既有)

测试
dotnet test LivingVillage.sln -c Release --no-build
- Desktop 313/313(310 → +3:P64EvidenceTests)
- Kernel 119/119

证据实跑(真实 Desktop + xvfb 1280x720)
LV_P64_SHOT=1 LV_LEGACY_MAP=1 xvfb-run -a -s "-screen 0 1280x720x24"(exit=0)
log:
  p64-plan upper_band_props=11 upper_band_kinds=4 bridge_props=1 bridge_foot_tiles=3 bridge_abutments=4 interior_elements=8
  p64-shot=p64-overview tick=2592000 avatar=(1008,688) camera=(384,344) home=Outside
  p64-shot=p64-bridge  tick=2592000 avatar=(1008,912) camera=(384,568) home=Outside
  p64-shot=p64-interior tick=2592056 avatar=(1008,763) camera=(384,568) home=Inside (HomeId 1)
(内景为真实 Sim.step 向门口移动后真实 Interact 进门,tick 前进 56)

scripts/analyze-p64.py /tmp/opencode/lv-p64 docs/evidence/p64-analysis.txt → verdict: PASS
  p64-overview.png 1280x720 mean=86.3 std=33.2 黑块=0 白块=0
  p64-bridge.png   1280x720 mean=86.0 std=33.0 黑块=0 白块=0
  p64-interior.png 1280x720 mean=118.7 std=54.1 黑块=0 白块=0
  俯瞰上半部内容密度(y120..360 非背景占比)= 0.1812,P62 同带基线 0.1030(+76%)
  桥区域木色像素占比(x560..720,y360..500)= 9604/22400 = 0.4288
  三帧两两不同(min mean_abs_diff=12.5);缺字空白位=0
scripts/check-no-white-blocks.py 三帧 → checked=3 failures=0 OK

确定性
LivingVillage.Headless.dll --performance-baseline ×3 → final_digest=
953775FAEB2FDDE97289491AA260BD8D390C571E48A7A13AD2CB6FB7124F7F6C ×3,performance_determinism=PASS

边界
- 未改 Kernel/Sim.fs、Sim.step、地图/seed 口径、HUD/对话框结构、字形表、进门流程/HomeMode 语义
- 未引外部素材;未生成 512×384;未 push
- 桥位置与通行逻辑未动(只加护岸石/栏杆贴图)
- 逐帧视觉复核仍受本写入模型不支持图像输入限制(P60 G3),需 vision 能力方复核