Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
73 changes: 66 additions & 7 deletions extensions/renderers/unity/plates_manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,53 @@
"_comment": "WALKABLE-SLICE-V1 item 6 (W5e runtime plate registry; docs/roadmap/W5E-PLATE-REGISTRY-DECISION.md). Keys are the ENGINE location.id the surface carries (viewer/server.py _session_location -> surface.location.id), the SAME keying the editor-time _location_plates.json already uses. `plate` is a path under StreamingAssets (BuildMacOSPlayer.EnsurePackaged copies this file + plates/*.png from the Unity project root). planeSize + cameraPin are OPTIONAL: absent => the client derives the plane from the plate aspect (oh=2*orthoSize, ow=oh*aspect) and leaves the scene camera as-is (crypt + camp share the ortho=13 / pitch=30 / yaw=45 rig). Adding a room later = one entry here + drop the PNG under plates/. On the box, CONFIRM these keys against the smoke campaign's real location.id (curl /combat-surface | jq .location.id in each room) and rename if they differ.",
"plates": {
"crypt": {
"plate": "plates/crypt_v36_registered.png",
"plate": "plates/crypt_kit_v1_registered.png",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Regenerate crypt paint-coherence evidence

This cutover makes crypt_kit_v1_registered.png the shipped crypt plate, but the committed qa/evidence/paint-coherence/crypt_coherence_report.json was last touched before this file existed (git rev-parse 451abdbd:extensions/renderers/unity/plates/crypt_kit_v1_registered.png fails). The paint-drift-gate workflow installs Pillow/numpy and runs qa/check_coherence_freshness.py over every manifest-shipped room, and live spawn/certification code also consumes those per-cell verdicts, so this can merge with stale crypt open/covered evidence unless the paint-coherence report/overlays are regenerated for the new plate.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep the canonical recipe plate in sync

This switches the runtime manifest to crypt_kit_v1_registered.png, but extensions/renderers/shared/room_recipes.json still declares rooms.crypt.canonical_plate as crypt_fresh_v1.png, and the regen/drift tooling keys off that canonical plate. Future crypt generation or qa/check_plate_drift.py gate-recipes runs will continue validating the old crypt-fresh asset instead of the shipped kit-crypt plate, leaving the adoption split across two sources of truth; update the recipe/status alongside the manifest cutover.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Align the kit plate with the live crypt grid

The shipped crypt surface is still authored as the 14x11 qa/seed_gfx_combat.py grid realigned to crypt_fresh_v1 (including doors/props at those coordinates), while this manifest now loads a 16x12 kit plate plus 16x12 crypt_v36 boxes/effects. Because the client projects actors, occluders, clicks, and effects through the engine-supplied surface grid rather than the manifest, entering crypt will overlay a 14x11 walkmask on a 16x12 image (for example the new effect at cell [14,4] is outside a 14-column grid), so movement and visuals diverge until the engine seed/grid is migrated to the kit geometry or the plate is built for the live grid.

AGENTS.md reference: AGENTS.md:L16-L19

Useful? React with 👍 / 👎.

"cameraPin": {
"ortho": 11.7851,
"pitch": 30,
"yaw": 45
},
"boxes": "boxes/crypt_v36_boxes.json",
"_provenance": "SHIP-THREE-PLATES (2026-07-15, owner 'ship it'): crypt v3.6 16x12 via qa/paint_room.py (recipe qa/unified_paint_recipes.json; base seed 12346 recall 0.9595; Gemini structure-lock). Blind panel 8.3 vs PoE2 control 9.4 / incumbent 7.2 (qa/evidence/paint-room/restored_pipeline_panel.json). Boxes sidecar = the EXACT conditioning volumes (UNIFY-THE-FRAMES). Geometry qa/room_geometries/crypt_v36_geometry.json; ortho = _fit_ortho_size(16,12)."
"effects": [
{
"type": "fire_medium",
"cell": [
5,
1
],
"scale": 0.8,
"y": 1.2
},
{
"type": "fire_medium",
"cell": [
14,
4
],
"scale": 0.8,
"y": 1.2
},
{
"type": "fire_medium",
"cell": [
6,
5
],
"scale": 0.8,
"y": 1.2
},
{
"type": "fire_medium",
"cell": [
10,
5
],
"scale": 0.8,
"y": 1.2
}
],
"_effects_comment": "Animated fire over the four painted brazier fires (geometry brazier cells; bowls sit ~1.2u up the stem). Tune scale/y at the sandbox eyeball if the flame floats or washes the paint.",
"_provenance": "KIT-CRYPT v1 (2026-07-23, #83/#84 nav-truth spike): 3D-FIRST CERTIFIED CHAIN \u2014 geometry crypt_v36 -> build_room_kit scene (footprint SEG GATE 100.00%, 0/192 disagreements, qa/evidence/kit-crypt/) -> kit 3D depth -> flux depth-CN base seed 12346 (recall 0.9752, asset_qM9R3tuRH4sceUrVjCoLdPRk) -> Gemini 3.0 Pro edit (model_google-gemini-pro-image-editing, critique-targeted detail prompt, job_Lmhssjh7iWnHsUKY1dhnHB4m) -> phase-corr ALIGNED dx=0,dy=0 vs base (qa/styled_align_check.py) -> geometric void composite (seg-frame mask). Blind panel 7 vs control 8 (delta -1.0, in-band; wf_89967920). Collision truth UNCHANGED (same geometry/walkmask/boxes as crypt_v36). NOTE: model_google-gemini-pro-image-editing pending model-registry allowlist (owner sign-off)."

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Register the adopted edit model first

The manifest now adopts this plate while its provenance records model_google-gemini-pro-image-editing and notes that it is still pending model-registry allowlist. qa/model_registry.json is the allowlist used by the promotion provenance gate, so cutting the runtime plate over before adding the signed-off registry/MODEL-REGISTRY entry leaves the shipped asset outside the sanctioned model chain; either register the model in this change or keep the manifest on the previous approved plate until sign-off lands.

Useful? React with 👍 / 👎.

},
"camp_clearing_night": {
"plate": "plates/camp_clearing_night_truegrey_v1.png",
Expand Down Expand Up @@ -40,9 +79,19 @@
"yaw": 45
},
"boxes": "boxes/tavern_v2_boxes.json",
"_door_hotspots_comment": "#1585/#1647 PAINTED-DOOR HOTSPOTS (plate-pixel click targets in the 1344x768 registered plate). Measured 2026-07-22 by overlaying the contract-camera cell projection (qa/walk_test.world_to_window_px at texW/texH) on tavern_v2_registered.png and reading the PAINTED arch centroid off a 50px grid (artifacts/zoom_tavern_left.png). door_cell (7,0) projects to px (440,242) at the bar, but the room's one painted STONE ARCHWAY (dark interior) sits on the SAME back-left (r=0) wall with its opening centroid at ~(210,320) a large ~4.5-cell #1585 divergence, the exact 'no functional doors' case: clicking the visible arch now crosses at (7,0). door_cell (13,5) lands on the painted fireplace/hearth (no arch) -> intentionally omitted (TODO, see PR body).",
"_door_hotspots_comment": "#1585/#1647 PAINTED-DOOR HOTSPOTS (plate-pixel click targets in the 1344x768 registered plate). Measured 2026-07-22 by overlaying the contract-camera cell projection (qa/walk_test.world_to_window_px at texW/texH) on tavern_v2_registered.png and reading the PAINTED arch centroid off a 50px grid (artifacts/zoom_tavern_left.png). door_cell (7,0) projects to px (440,242) at the bar, but the room's one painted STONE ARCHWAY (dark interior) sits on the SAME back-left (r=0) wall with its opening centroid at ~(210,320) \u2014 a large ~4.5-cell #1585 divergence, the exact 'no functional doors' case: clicking the visible arch now crosses at (7,0). door_cell (13,5) lands on the painted fireplace/hearth (no arch) -> intentionally omitted (TODO, see PR body).",
"door_hotspots": [
{ "door_cell": [7, 0], "px": [210, 320], "radius_px": 85 }
{
"door_cell": [
7,
0
],
"px": [
210,
320
],
"radius_px": 85
}
],
"_provenance": "SHIP-THREE-PLATES (2026-07-15): tavern v2 14x11 molded (bar/table kinds) via qa/paint_room.py. Panel 8.4. Geometry qa/room_geometries/tavern_v2_geometry.json; ortho = _fit_ortho_size(14,11). Replaces tavern_fit2_v1 (12x10, ortho 9.2597)."
},
Expand All @@ -64,9 +113,19 @@
"yaw": 45
},
"boxes": "boxes/shop_v1_boxes.json",
"_door_hotspots_comment": "#1585/#1647 PAINTED-DOOR HOTSPOTS (plate-pixel click targets in the 1344x768 registered plate; a click inside a hotspot routes exactly like clicking door_cell -> cross_door). Measured 2026-07-22 by overlaying the contract-camera cell projection (qa/walk_test.world_to_window_px at texW/texH) on shop_v1_registered.png and reading the PAINTED arch centroid off a 50px grid (artifacts/zoom_shop_door12_5.png). door_cell (12,5) projects to px (1037,230) but the painted dark archway opening centroid sits at ~(900,275) the ~2-cell #1585 divergence. door_cell (6,0) is occluded by the potion shelf (no visible arch) -> intentionally omitted (TODO, see PR body).",
"_door_hotspots_comment": "#1585/#1647 PAINTED-DOOR HOTSPOTS (plate-pixel click targets in the 1344x768 registered plate; a click inside a hotspot routes exactly like clicking door_cell -> cross_door). Measured 2026-07-22 by overlaying the contract-camera cell projection (qa/walk_test.world_to_window_px at texW/texH) on shop_v1_registered.png and reading the PAINTED arch centroid off a 50px grid (artifacts/zoom_shop_door12_5.png). door_cell (12,5) projects to px (1037,230) but the painted dark archway opening centroid sits at ~(900,275) \u2014 the ~2-cell #1585 divergence. door_cell (6,0) is occluded by the potion shelf (no visible arch) -> intentionally omitted (TODO, see PR body).",
"door_hotspots": [
{ "door_cell": [12, 5], "px": [900, 275], "radius_px": 85 }
{
"door_cell": [
12,
5
],
"px": [
900,
275
],
"radius_px": 85
}
],
"_provenance": "ROOM-READINESS SCALE PROOF (2026-07-16, epic #1581/#1588): the first room authored AFTER the pipeline existed, run hands-off end-to-end \u2014 author_shop() 13x10 (design-gated 2x locally) -> build_room_unified on the box (ortho 9.6806, 49 boxes incl. auto door frames) -> qa/paint_room.py shop (base seed 12347 recall 0.9555; Gemini structure-lock) -> blind panel 6 vs PoE2 control 8, delta -2.0 IN-BAND (tier=stable, cycle-2 levers in qa/evidence/paint-room/shop/panel.json). Geometry qa/room_geometries/shop_geometry.json; ortho = _fit_ortho_size(13,10). Walk gate: #1596 sandbox lane after the player rebuild packages this entry."
},
Expand Down Expand Up @@ -110,4 +169,4 @@
"boxes": "boxes/dwing_room_1_v1_boxes.json"
}
}
}
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: Trailing newline removed from manifest (now "No newline at end of file")

The diff ends with \ No newline at end of file for plates_manifest.json. The file previously ended with a newline. Some linters/formatters and POSIX tooling treat a missing final newline as a style violation, and a future re-serialization could churn the whole file. Restore the trailing newline unless the repo explicitly forbids it.

Category: CI/build

Why this matters: Keeps the file POSIX-clean and avoids unrelated diff churn on the next JSON edit; non-functional.

Binary file added qa/evidence/kit-crypt/seg_100pct.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading