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 能力方复核