Skip to content

TAVERN-FIT2 ADOPTION (M-ALIGN wave-2 close): density-law tavern is canonical (#1557 ruling)#1562

Open
100yenadmin wants to merge 1 commit into
mainfrom
tavern-fit2-adopt
Open

TAVERN-FIT2 ADOPTION (M-ALIGN wave-2 close): density-law tavern is canonical (#1557 ruling)#1562
100yenadmin wants to merge 1 commit into
mainfrom
tavern-fit2-adopt

Conversation

@100yenadmin

Copy link
Copy Markdown
Member

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)

slot plate median Δ vs control
B fit2 single-pass s1111 (adopted) 7.0 −1.0
INCUMBENT tavern_truegrey_v1 (disclosed) 7.5 −0.5
C registered PoE2 ruins-brazier control (band 6.8–9.2, valid) 8.0 0.0
D layered p1 material-only 6.0 −2.0
A layered p3 (camera broken) 5.0 −3.0

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Δ.

⚠️ Plate-asset note (deviation surfaced for the orchestrator)

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_manifest line + one sweep re-run.

Promotion (automated gate, no bypass)

tools/library/promote.py --batch visual 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 row vc-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 from qa/evidence/layered-reg/panel_verdict.json, PR #1561). library-lint: clean.

Wiring

  • extensions/renderers/unity/plates_manifest.json tavern → plates/tavern_fit2_v1.png
  • extensions/renderers/shared/room_recipes.json tavern → fit2 base_plate/canonical_plate + derived manifest (prior truegrey adoption preserved as status_prior)
  • qa/room_manifests/tavern_fit2.cells.json is the canonical derived manifest
  • qa/journey_visual_sweep.pyqa/evidence/tavern-fit2 added as a plate search dir (repo copy tavern_fit2_v1.png; box carries the real plates/tavern_fit2_v1.png)

Walkslice reconciliation (qa/seed_gfx_walkslice.py build_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.
  • +8 props verbatim from 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).
  • spawns unchanged (party (4,8)(5,8), npcs (7,8)) — none collide.
  • validate_scene_grid green; walkslice + cross_door + arrival + scene_grid_validate = 29 passed single-process.

Visual sweep — the headline (scratch :8769, never :8766)

qa/journey_visual_sweep.py on the seeded branch world:

room before (incumbent) after (fit2)
tavern 88.3% CLEAN — 7/59 invented-furniture flags 100.0% CLEAN — 0/43 flags
crypt 94.7% 94.7% (unchanged)
camp 90.8% 90.8% (unchanged)
overall world 91.6% 93.6%

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. gitnexus impact(build_tavern_grid) = LOW (Tests only) run before editing.

…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).
@coderabbitai

coderabbitai Bot commented Jul 11, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 8 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: bbac27f8-e1c4-42c4-8f65-82ac4f8f4bf7

📥 Commits

Reviewing files that changed from the base of the PR and between 1385c83 and 14341ef.

⛔ Files ignored due to path filters (37)
  • qa/evidence/layered-reg/panel_strip.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/before_after.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/gen_base/room_tavern.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/gen_style/candidate_s1000.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/gen_style/candidate_s1111.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/gen_style/candidate_s1222.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop/panel/house_best.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop/panel/image_1.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop/panel/image_2.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop/panel/image_3.jpg is excluded by !**/*.jpg
  • qa/evidence/tavern-fit2/loop_s1000/panel/crop1_a.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop_s1000/panel/crop1_b.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop_s1000/panel/crop1_pit.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop_s1000/panel/crop2_chars.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop_s1000/panel/crop2_chars2.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop_s1000/panel/crop3_a.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop_s1000/panel/crop3_b.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop_s1000/panel/crop3_bar.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop_s1000/panel/crop3_left.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop_s1000/panel/crop3_tables.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop_s1000/panel/house_best.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop_s1000/panel/image_1.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/loop_s1000/panel/image_2.jpg is excluded by !**/*.jpg
  • qa/evidence/tavern-fit2/loop_s1000/panel/image_3.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/refs/v1_1557_candidate_s1000.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/sweep/frames/step00_spawn_crypt.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/sweep/frames/step01_arrive_camp_clearing_night.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/sweep/frames/step02_return_crypt.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/sweep/frames/step03_arrive_tavern.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/sweep/frames/step04_return_crypt.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/sweep/seed.log is excluded by !**/*.log
  • qa/evidence/tavern-fit2/sweep/viewer.log is excluded by !**/*.log
  • qa/evidence/tavern-fit2/tavern_fit2_depth.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/tavern_fit2_greybox.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/tavern_fit2_normal.png is excluded by !**/*.png
  • qa/evidence/tavern-fit2/tavern_fit2_v1.png is excluded by !**/*.png
  • qa/scores.db is excluded by !**/*.db
📒 Files selected for processing (34)
  • extensions/renderers/shared/room_recipes.json
  • extensions/renderers/unity/plates_manifest.json
  • library/rooms/room_tavern_fit2_s1111_20260711__d179e6f8.json
  • qa/evidence/layered-reg/findings.json
  • qa/evidence/layered-reg/panel_mapping.json
  • qa/evidence/layered-reg/panel_verdict.json
  • qa/evidence/tavern-fit2/findings.json
  • qa/evidence/tavern-fit2/gallery.html
  • qa/evidence/tavern-fit2/gallery.html.rows.json
  • qa/evidence/tavern-fit2/gallery_s1000.html
  • qa/evidence/tavern-fit2/gallery_s1000.html.rows.json
  • qa/evidence/tavern-fit2/gemini_style_pass.py
  • qa/evidence/tavern-fit2/gen_base/scenario_meta.json
  • qa/evidence/tavern-fit2/loop/panel/contract.json
  • qa/evidence/tavern-fit2/loop/panel/prompts.json
  • qa/evidence/tavern-fit2/loop/panel_mapping.json
  • qa/evidence/tavern-fit2/loop/panel_verdict.json
  • qa/evidence/tavern-fit2/loop_s1000/panel/contract.json
  • qa/evidence/tavern-fit2/loop_s1000/panel/prompts.json
  • qa/evidence/tavern-fit2/loop_s1000/panel_mapping.json
  • qa/evidence/tavern-fit2/loop_s1000/panel_verdict.json
  • qa/evidence/tavern-fit2/nomination.jsonl
  • qa/evidence/tavern-fit2/plateloop_tavern_fit2.json
  • qa/evidence/tavern-fit2/plateloop_tavern_fit2_s1000.json
  • qa/evidence/tavern-fit2/style_pass_prompt_v2.txt
  • qa/evidence/tavern-fit2/sweep/gallery.html
  • qa/evidence/tavern-fit2/sweep/report.json
  • qa/evidence/tavern-fit2/tavern_fit2_geometry.json
  • qa/evidence/tavern-fit2/tavern_fit2_promote_panel.json
  • qa/evidence/tavern-fit2/tavern_fit2_visual_gate_panel.json
  • qa/journey_visual_sweep.py
  • qa/room_manifests/tavern_fit2.cells.json
  • qa/seed_gfx_walkslice.py
  • tools/author_room_geometry.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch tavern-fit2-adopt

Comment @coderabbitai help to get the list of available commands.

@100yenadmin 100yenadmin enabled auto-merge (squash) July 11, 2026 07:32
@evaos-code-review-bot

evaos-code-review-bot Bot commented Jul 11, 2026

Copy link
Copy Markdown

evaOS review status: completed

PR: #1562 - TAVERN-FIT2 ADOPTION (M-ALIGN wave-2 close): density-law tavern is canonical (#1557 ruling)
Head: 14341ef7761a5a17ac1fe37f617845b33f0df157
Updated: 2026-07-11T07:32:21.136Z

evaOS review completed for this PR head.

Automation note: agents should wait for this comment to reach completed, stale_head, closed_or_merged_before_review, skipped, or failed before treating evaOS review as settled for this head. provider_deferred means evaOS still intends to retry.

PR URL: #1562

Review URL: #1562 (review)

@evaos-code-review-bot evaos-code-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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",

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: 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,

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: 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",

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: 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.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 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",

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 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",

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 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,

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 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",

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 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 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant