TAVERN-FIT2 ADOPTION (M-ALIGN wave-2 close): density-law tavern is canonical (#1557 ruling)#1562
TAVERN-FIT2 ADOPTION (M-ALIGN wave-2 close): density-law tavern is canonical (#1557 ruling)#1562100yenadmin wants to merge 1 commit into
Conversation
…nonical (#1557 ruling) Execute the architect's playability-first ruling on #1557: adopt the density-law fit2 tavern as the canonical tavern. fit2 is coherence-perfect (recall 0.98, zero invented furniture, 14 authored collision props, camera-fit extent, doorway painted at the authored (8,0)). Under #1559's OLD incumbent-as-house_best anchoring it was an honest negative at 6.0/delta -3.0; the #1560 anchor correction re-scored it in PR #1561 to 7.0/delta -1.0 vs a registered PoE2 control (median 8.0, control_valid), incumbent 7.5/delta -0.5 — the 0.5 gap is inside scorer variance, the alignment gap is total. Adopted plate = the s1111 single-pass — the EXACT asset the #1560-corrected panel scored 7.0/delta -1.0 (byte-identical to the #1561 panel's slot B). The fit2 lane's sibling seed s1000 (deeper tenebrist) had NO corrected-anchor score, so s1111 is the only fit2 plate with citable corrected evidence; adopting it keeps the promotion evidence coherent. (Packet named "s1000"; see PR body — flip is one manifest line + one sweep if the s1000 mood is wanted, but it needs its own corrected panel first.) Promotion: promote.py visual gate PASS, tier=canonical-candidate (delta -1.0 >= -1.2 parity bar), no manual bypass -> library/rooms/room_tavern_fit2_s1111_*.json. Ledger row vc-tavern_fit2-panel-adopt-* (surface=visual, 7.0), #1560 anchor correction noted. Wiring: - plates_manifest.json tavern -> plates/tavern_fit2_v1.png (s1111) - room_recipes.json tavern -> fit2 base_plate/canonical_plate + derived manifest; prior truegrey adoption kept as status_prior - qa/room_manifests/tavern_fit2.cells.json is the canonical derived manifest - journey_visual_sweep.py: qa/evidence/tavern-fit2 added as a plate search dir Walkslice reconciliation (qa/seed_gfx_walkslice.py build_tavern_grid): - TAVERN_BACK_DOOR [0,0] -> [8,0] (#1534/#1535 durable fix now landed: fit2 PAINTS the doorway at the authored (8,0), so cell and painted opening coincide) - 8 new props verbatim from author_tavern_fit2 (16 impassable cells); spawns unchanged - validate_scene_grid green; walkslice + cross_door + arrival tests single-process green (29 passed) Visual sweep (qa/journey_visual_sweep.py, scratch :8769): tavern CLEAN 88.3% (7/59 invented-furniture flags) -> 100.0% (0/43). Overall world 91.6% -> 93.6%. Only the tavern changed (crypt/camp identical). No box deploy (orchestrator's cycle follows the merge).
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 8 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (37)
📒 Files selected for processing (34)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
evaOS review status: completedPR: #1562 - TAVERN-FIT2 ADOPTION (M-ALIGN wave-2 close): density-law tavern is canonical (#1557 ruling) evaOS review completed for this PR head. Automation note: agents should wait for this comment to reach PR URL: #1562 Review URL: #1562 (review) |
There was a problem hiding this comment.
Walkthrough
PR: #1562 - TAVERN-FIT2 ADOPTION (M-ALIGN wave-2 close): density-law tavern is canonical (#1557 ruling)
Head: 14341ef7761a5a17ac1fe37f617845b33f0df157 into main. Review event: COMMENT.
Provider: GLM/Z.ai through ZCode (zcode-glm, zcode, model GLM-5.2).
Estimated review effort: 5/5 (~70 min)
Changed Files
| File | Status | Churn | Purpose | Risk |
|---|---|---|---|---|
extensions/renderers/shared/room_recipes.json |
modified | +4/-3 | Changed file | Low |
extensions/renderers/unity/plates_manifest.json |
modified | +2/-2 | Changed file | Moderate: validated P2 finding |
qa/evidence/layered-reg/findings.json |
added | +45/-0 | Changed file | Low |
qa/evidence/layered-reg/panel_mapping.json |
added | +13/-0 | Changed file | Low |
qa/evidence/layered-reg/panel_strip.png |
added | +0/-0 | Changed file | Low |
qa/evidence/layered-reg/panel_verdict.json |
added | +71/-0 | Changed file | Low |
qa/evidence/tavern-fit2/before_after.png |
added | +0/-0 | Changed file | Low |
qa/evidence/tavern-fit2/findings.json |
added | +75/-0 | Changed file | Moderate: validated P3 finding |
qa/evidence/tavern-fit2/gallery.html |
added | +46/-0 | Changed file | Low |
qa/evidence/tavern-fit2/gallery.html.rows.json |
added | +181/-0 | Changed file | Low |
qa/evidence/tavern-fit2/gallery_s1000.html |
added | +46/-0 | Changed file | Low |
qa/evidence/tavern-fit2/gallery_s1000.html.rows.json |
added | +179/-0 | Changed file | Low |
qa/evidence/tavern-fit2/gemini_style_pass.py |
added | +80/-0 | Changed file | Low |
qa/evidence/tavern-fit2/gen_base/room_tavern.png |
added | +0/-0 | Changed file | Low |
qa/evidence/tavern-fit2/gen_base/scenario_meta.json |
added | +29/-0 | Changed file | Low |
qa/evidence/tavern-fit2/gen_style/candidate_s1000.png |
added | +0/-0 | Changed file | Low |
qa/evidence/tavern-fit2/gen_style/candidate_s1111.png |
added | +0/-0 | Changed file | Low |
qa/evidence/tavern-fit2/gen_style/candidate_s1222.png |
added | +0/-0 | Changed file | Low |
qa/evidence/tavern-fit2/loop/panel/contract.json |
added | +314/-0 | Changed file | Elevated: large change |
qa/evidence/tavern-fit2/loop/panel/house_best.png |
added | +0/-0 | Changed file | Low |
qa/evidence/tavern-fit2/loop/panel/image_1.png |
added | +0/-0 | Changed file | Low |
qa/evidence/tavern-fit2/loop/panel/image_2.png |
added | +0/-0 | Changed file | Low |
qa/evidence/tavern-fit2/loop/panel/image_3.jpg |
added | +0/-0 | Changed file | Low |
qa/evidence/tavern-fit2/loop/panel/prompts.json |
added | +36/-0 | Changed file | Low |
qa/evidence/tavern-fit2/loop/panel_mapping.json |
added | +17/-0 | Changed file | Low |
44 additional changed files omitted from this walkthrough.
Review Signal
Validated inline findings: 3 (P0: 0, P1: 0, P2: 1, P3: 2).
Dropped findings before posting: 0. High-severity findings: 0.
Risk Taxonomy
- Proof gap: 2
- Release regression: 1
Validation and Proof
1 required validation/proof recommendation(s) selected from changed files.
- required: Unity editor or Play Mode smoke - WorldOS repo profile implies Unity runtime risk. Proof: Unity editor smoke; Play Mode log; scene/prefab screenshot or recording.
Proof status: missing - 1 required validation/proof recommendation(s) missing from PR metadata.
Profile validation hints: Prefer correctness, persistence, CI, release, and regression findings over style-only feedback.
Profile proof expectations: Look for Unity editor, play-mode, fixture, or focused smoke evidence when runtime behavior changes.
Related Context
Related issues/PRs: #1557, #1559, #1561, #1560, #1534, #1535.
Suggested labels: none.
Suggested reviewers: none from current metadata.
Review Settings Preview
- Profile: assertive
- Enabled sections: Review summary (inline_review); Walkthrough (inline_review); Changed-files table (walkthrough); Effort estimate (walkthrough); Related issues/PRs (walkthrough); Suggested labels (suggestion_only); Review status comment (sticky_status)
- Path instructions:
Assets/**- Prioritize scene, prefab, save-state, asset-reference, and gameplay regressions. - Path instructions:
ProjectSettings/**- Treat build, platform, input, graphics, and release behavior changes as high risk. - Label suggestions: unity, gameplay, regression-hardening
- Reviewer suggestions: none
- Suggestion behavior: suggestions only; labels and reviewers are not auto-applied.
- Roadmap-only settings: auto-apply labels; auto-request reviewers; required status checks
Pre-merge checklist
- Inline comments target current RIGHT-side diff lines.
- No secret-like content survived into posted inline comments.
- REQUEST_CHANGES is only used when eligible P0/P1 findings survive validation.
- Required behavior proof is present or not applicable.
- Labels and reviewers are suggestions only; the bot did not auto-apply them.
| "tavern": { | ||
| "plate": "plates/tavern_truegrey_v1.png", | ||
| "_effects_comment": "NEW-ROOM-TAVERN (epic #1508): a future animated hearth fire seats over the painted hearth. The hearth footprint is [[5,1],[6,1]] (qa/room_manifests/tavern_truegrey.cells.json props[hearth]) — the fire anchor. Effects deferred (the plate ships flat; the hearth glow is painted). Add a fire_medium here later keyed to a hearth cell, mirroring the camp entry." | ||
| "plate": "plates/tavern_fit2_v1.png", |
There was a problem hiding this comment.
P2: Unity tavern plate points at plates/tavern_fit2_v1.png which no build can resolve until a manual box deploy
The manifest now keys the tavern room at "plate": "plates/tavern_fit2_v1.png". The extensions/renderers/unity/plates/ directory does not exist in this repo (it is a box-only deploy target), and the in-comment admission — "drop it there on the NEXT box cycle — this PR does no box deploy" — confirms the asset is not yet staged anywhere BuildMacOSPlayer.EnsurePackaged will find it. The repo's only copy is qa/evidence/tavern-fit2/tavern_fit2_v1.png (a QA path, not a StreamingAssets path). Until that out-of-band box deploy lands, the next Unity rebuild will package a tavern location whose plate asset is missing — the surface will render with a broken/missing plate at runtime. The prior truegrey plate path had the same repo-vs-box split, but it had a known-good box deploy behind it; this new path does not yet. There is no gate in this PR ensuring the deploy happens before a build consumes the manifest. Recommend either (a) committing the plate into a tracked StreamingAssets/plates/ source path the build copies, or (b) adding an explicit pre-merge/pre-release checklist item + a manifest sanity check that fails the build when a declared plate file is absent.
Category: Release regression
Why this matters: plates_manifest.json is the runtime source of truth the Unity client uses to resolve surface art (per the file's own _comment). Pointing it at an asset that does not exist on disk at build time is exactly the class of release-regression the repo profile asks to guard: a scene/art-reference change that ships broken with no automated catch.
| "candidate_median": 6.0, | ||
| "incumbent_median": 9.0, | ||
| "control_median": 9.0, | ||
| "delta_vs_control": -3.0, |
There was a problem hiding this comment.
P3: walkslice_reconciliation says walkslice is 'REPORT-ONLY / NOT changed here' but seed_gfx_walkslice.py WAS updated in this PR
The evidence file's walkslice_reconciliation block reads: "REPORT-ONLY (per packet — NOT changed here; the walkslice build_tavern_grid must eventually match an ADOPTED geometry ...) IF tavern_fit2 were ever adopted, qa/seed_gfx_walkslice.py needs: (a) TAVERN_BACK_DOOR [0,0] -> [8,0] ... (b) ADD 8 props to _TAVERN_PROPS ... (c) walkable 59 -> 43." But this PR's own diff includes qa/seed_gfx_walkslice.py, and the committed file already has TAVERN_BACK_DOOR = [8,0] (line 114) and all 14 _TAVERN_PROPS entries with the exact footprints the note says still 'need' adding. The authoritative room_recipes.json status (line 175) correctly states the walkslice IS reconciled, so this evidence doc is internally inconsistent with both the code and the recipe status. Treat the evidence file as stale and reword it to past-tense / done, so a future agent auditing the adoption does not re-do the reconciliation or conclude the walkslice and manifest disagree.
Category: Proof gap
Why this matters: Contradictory evidence about whether the collision grid and the painted plate agree is a proof gap: an auditor relying on findings.json would believe the walkslice still encodes the wrong door cell and 6-prop layout, when in fact the committed walkslice and tavern_fit2.cells.json agree exactly.
| @@ -0,0 +1,75 @@ | |||
| { | |||
| "lane": "TAVERN_FIT-V2 (M-ALIGN wave-2 capstone retry) \u2014 apply the DENSITY LAW: author the furniture the #1557 panel LIKED as REAL collision props, then regen through the full pipeline", | |||
There was a problem hiding this comment.
P3: Capstone evidence verdict ('HONEST NEGATIVE — do NOT adopt') contradicts the PR's adoption
The findings.json verdict line states 'HONEST NEGATIVE — do NOT adopt' with promote_dry_run passed=false / delta -3.0, and the auto_merge line says 'NOT armed (armed only on ADOPT). Evidence-only honest negative.' This was the correct verdict for the s1000/s1111 panels under the OLD incumbent-as-house_best anchoring. The PR adopts the plate anyway, justified by the #1560 anchor correction that re-scored s1111 to 7.0/delta -1.0 — but that re-scoring lives in a different evidence file (qa/evidence/layered-reg/panel_verdict.json + tavern_fit2_promote_panel.json), not here. A reader landing on qa/evidence/tavern-fit2/findings.json sees a 'do NOT adopt' verdict for the very plate this PR adopts, with no pointer from the verdict line to the corrected-anchoring re-score that overturned it. Add a one-line header/correction to this file's verdict pointing to the corrected panel (qa/evidence/layered-reg/panel_verdict.json medians.block and tavern_fit2_promote_panel.json) so the adoption chain is traceable from a single entry point.
Category: Proof gap
Why this matters: The repo's RRI discipline requires provenance/proof to be traceable. The adoption rests on a re-score that is not cross-linked from the headline evidence file, making the do-not-adopt -> adopt flip look unjustified to anyone reviewing the evidence in isolation.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 14341ef776
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| "tavern": { | ||
| "plate": "plates/tavern_truegrey_v1.png", | ||
| "_effects_comment": "NEW-ROOM-TAVERN (epic #1508): a future animated hearth fire seats over the painted hearth. The hearth footprint is [[5,1],[6,1]] (qa/room_manifests/tavern_truegrey.cells.json props[hearth]) — the fire anchor. Effects deferred (the plate ships flat; the hearth glow is painted). Add a fire_medium here later keyed to a hearth cell, mirroring the camp entry." | ||
| "plate": "plates/tavern_fit2_v1.png", |
There was a problem hiding this comment.
Pin the camera for the camera-fit tavern plate
When the player enters the tavern, this entry only swaps the texture; the new plate was generated from author_tavern_fit2 with camera_fit=True, but CombatSurfaceClient.ApplyPlate leaves the camera at the previous ortho unless cameraPin.ortho is present. That means the backdrop pixels are from the fitted projection while actors, click targets, door glows, and effects are still projected with the default ortho=13 after a crypt/camp -> tavern transition, so the playable grid no longer lines up with the painted props/door. Add a matching cameraPin for this plate or avoid adopting a camera-fit plate in the runtime manifest.
Useful? React with 👍 / 👎.
| "canonical_plate": "tavern_truegrey_v1.png", | ||
| "status": "ADOPTED 2026-07-11 (NEW-ROOM-TAVERN, epic #1508 replication-breadth): the FIRST room taken through the full true-greybox pipeline from NOTHING — no prior plate, no prior seed — proving the method generalises beyond regenerations. Pipeline: world-true 12x10 geometry authored inline (tools/author_room_geometry.py tavern) -> greybox + depth/normal sidecars at cutaway wall_height 5 (coherence-green 6/6 vs its own DERIVED manifest qa/room_manifests/tavern_truegrey.cells.json) -> flux depth-ControlNet base (edge-recall 0.980 >= the 0.95 masonry gate; grid<->paint coherence 5/6 props @0.03c, only the near-left-corner barrels drift 1.05c — the documented low-corner-prop localisation floor) -> gemini-noref layered style pass, best-of-3 seeds (seed123 adopted; seed7 invented a spurious well — a sparse-new-room reinterpretation finding). Adopted through the AUTOMATED tools/library/promote.py visual-class gate, no manual bypass: library/rooms/room_tavern_truegrey_seed123_20260711__bb792bd6.json (tier=stable, passed=true). Control-anchored 5-scorer blind panel (qa/evidence/new-tavern/tavern_visual_gate_panel.json): candidate median 7.0 vs registered PoE2 ruins-brazier control median 9.0 (delta -2.0, in-band/valid -> clears the -2.5 adopt floor = tier stable, == the camp anchor that passed human taste-gates). Collision source of truth = the derived manifest. The painterly final is soft-edge (edge-recall 0.747, #1491); its registration is proven on the BASE + the greybox-edge overlay. extensions/renderers/unity/plates_manifest.json updated to point at the new plate — the Unity box picks it up at its NEXT rebuild; the box itself was not touched by this PR.", | ||
| "base_plate": "tavern_fit2_greybox.png", | ||
| "canonical_plate": "tavern_fit2_v1.png", |
There was a problem hiding this comment.
Make tavern adoption discoverable by paint gates
This makes tavern_fit2_v1.png the canonical tavern plate, but the committed manifest is keyed as recipe_key: tavern_fit2 and the gate defaults do not search qa/evidence/tavern-fit2; gate-recipes resolves manifests by the room key (tavern) and requires a locally found plate, so the new canonical tavern is reported/skipped as no-manifest/no-plate instead of being drift/coherence checked. Please key/copy/register this artifact so the tavern recipe resolves to the fit2 manifest and plate.
Useful? React with 👍 / 👎.
| }, | ||
| "camera": { | ||
| "recipe": "greybox_render_headless (verified vs Unity Quaternion.Euler(30,45,0) <1e-3)", | ||
| "ortho_size": 13.0, |
There was a problem hiding this comment.
Derive fit2 bboxes with the fitted camera
The fit2 geometry/plate are camera-fit, but this manifest still records the fixed ortho=13 projection, so all of the screen_bbox and occlusion data below are for a different camera than tavern_fit2_v1.png. Any drift/coherence gate or overlay that consumes this manifest will inspect the wrong pixels and can give false clean/fail results for the canonical tavern; regenerate the manifest with the same fitted ortho used for the greybox/plate.
Useful? React with 👍 / 👎.
| "canonical_plate": "tavern_truegrey_v1.png", | ||
| "status": "ADOPTED 2026-07-11 (NEW-ROOM-TAVERN, epic #1508 replication-breadth): the FIRST room taken through the full true-greybox pipeline from NOTHING — no prior plate, no prior seed — proving the method generalises beyond regenerations. Pipeline: world-true 12x10 geometry authored inline (tools/author_room_geometry.py tavern) -> greybox + depth/normal sidecars at cutaway wall_height 5 (coherence-green 6/6 vs its own DERIVED manifest qa/room_manifests/tavern_truegrey.cells.json) -> flux depth-ControlNet base (edge-recall 0.980 >= the 0.95 masonry gate; grid<->paint coherence 5/6 props @0.03c, only the near-left-corner barrels drift 1.05c — the documented low-corner-prop localisation floor) -> gemini-noref layered style pass, best-of-3 seeds (seed123 adopted; seed7 invented a spurious well — a sparse-new-room reinterpretation finding). Adopted through the AUTOMATED tools/library/promote.py visual-class gate, no manual bypass: library/rooms/room_tavern_truegrey_seed123_20260711__bb792bd6.json (tier=stable, passed=true). Control-anchored 5-scorer blind panel (qa/evidence/new-tavern/tavern_visual_gate_panel.json): candidate median 7.0 vs registered PoE2 ruins-brazier control median 9.0 (delta -2.0, in-band/valid -> clears the -2.5 adopt floor = tier stable, == the camp anchor that passed human taste-gates). Collision source of truth = the derived manifest. The painterly final is soft-edge (edge-recall 0.747, #1491); its registration is proven on the BASE + the greybox-edge overlay. extensions/renderers/unity/plates_manifest.json updated to point at the new plate — the Unity box picks it up at its NEXT rebuild; the box itself was not touched by this PR.", | ||
| "base_plate": "tavern_fit2_greybox.png", | ||
| "canonical_plate": "tavern_fit2_v1.png", |
There was a problem hiding this comment.
Update tests that still treat tavern as ad hoc
Changing tavern to a non-null canonical plate invalidates test_noop_for_room_without_canonical_plate and test_non_canonical_room_never_touches_check_plate_drift in extensions/renderers/godot/tools/tests/test_drift_gate_default_on.py; both load the real recipe and use tavern as the no-canonical room. In CI runs of that test file, this adoption will fail those assertions or call the mocked drift gate before the intended behavior is checked, so choose a still-ad-hoc room or update the expectations with the adoption.
Useful? React with 👍 / 👎.
What & why
Executes the architect's playability-first ruling on #1557: adopt the density-law fit2 tavern as the canonical tavern. fit2 (PR #1559) is coherence-perfect — recall 0.98, zero invented furniture, 14 authored collision props, camera-fit extent, doorway painted at the authored (8,0). It read as an honest negative at 6.0 only under #1559's incumbent-as-house_best anchor; PR #1561's corrected-anchor panel (#1560) re-scored it 7.0 / Δ−1.0 with the incumbent itself at 7.5 / Δ−0.5 — the 0.5 gap is inside the ±1.5 per-lens scorer variance while the alignment gap is total.
Corrected-anchor panel (#1561, neutral anchoring per #1560)
Under the OLD #1559 anchor the same s1111 plate scored 6.0 / Δ−3.0; the #1560 anchor fix (panels no longer use the incumbent as
house_best) lifted it +1.0 / +2.0Δ.The packet named the s1000 tenebrist candidate, but the corrected panel that yields the 7.0 / Δ−1.0 promotion evidence scored s1111 (byte-identical to the #1561 panel's slot B); s1000 has no corrected-anchor score — it was only ever scored 6.0 under the old anchor. Per the packet's own disambiguation rule ("use the exact asset the corrected panel scored at 7.0"), and to keep the promotion evidence coherent, s1111 is adopted. If the deeper-mood s1000 image is wanted, it needs its own corrected-anchor panel first; the swap is then one
plates_manifestline + one sweep re-run.Promotion (automated gate, no bypass)
tools/library/promote.py --batchvisual gate: passed=true, tier=canonical-candidate (Δ−1.0 ≥ −1.2 parity bar), control_valid=true →library/rooms/room_tavern_fit2_s1111_20260711__d179e6f8.json. Ledger rowvc-tavern_fit2-panel-adopt-e583130e(surface=visual, 7.0), the #1560 anchor correction noted explicitly. Promotion evidence:qa/evidence/tavern-fit2/tavern_fit2_promote_panel.json(sourced fromqa/evidence/layered-reg/panel_verdict.json, PR #1561).library-lint: clean.Wiring
extensions/renderers/unity/plates_manifest.jsontavern →plates/tavern_fit2_v1.pngextensions/renderers/shared/room_recipes.jsontavern → fit2base_plate/canonical_plate+ derived manifest (prior truegrey adoption preserved asstatus_prior)qa/room_manifests/tavern_fit2.cells.jsonis the canonical derived manifestqa/journey_visual_sweep.py—qa/evidence/tavern-fit2added as a plate search dir (repo copytavern_fit2_v1.png; box carries the realplates/tavern_fit2_v1.png)Walkslice reconciliation (
qa/seed_gfx_walkslice.pybuild_tavern_grid)TAVERN_BACK_DOOR[0,0] → [8,0] — the Door cells don't match painted doorways — labels/glow float mid-floor (crypt + tavern) #1534/walkslice: move door cells to the painted doorways (#1534) #1535 durable fix now LANDS: the incumbent plate painted no back-wall door (cell forced to (0,0) beside an out-painted opening); the fit2 geometry authors a real door gap at (8,0) and the fit2 plate paints its doorway there, so cell and painted opening coincide.author_tavern_fit2(16 impassable cells): woodpile (3,1)(4,1); bench_nw (3,5)(4,5); bench_ne (6,5)(7,5); bench_s (7,6)(7,7); stools_bar (8,3)(8,4); shelf_bar (10,2)(10,3); casks_bar (10,4)(10,5); barrels_corner (10,7)(10,8).validate_scene_gridgreen; walkslice + cross_door + arrival + scene_grid_validate = 29 passed single-process.Visual sweep — the headline (scratch :8769, never :8766)
qa/journey_visual_sweep.pyon the seeded branch world:The extent + invented-furniture flags collapsed exactly as predicted; the tavern now clears the 95% bar. Only the tavern changed. Reciprocal-door failures 0, hero-position failures 0.
Not touched
No box deploy (orchestrator's cycle follows the merge);
:8766//tmp/walkslice_owner/ LaunchAgents untouched. gitnexusimpact(build_tavern_grid)= LOW (Tests only) run before editing.