# RE backlog Open items that are *not* being worked right now. Each entry says what is wrong or unknown, what evidence exists, and what the first step would be. Move an item into `INDEX.md` (with a `structures/…md` or a parser + test) once it is actually settled. --- ## Capital ships assemble wrong in the viewer **Reported:** 2026-07-30, by the user. **Status:** ❔ open, not investigated. The reborn viewer builds capital ships from the split XBG7 parts via `sylpheed-formats::ship::assemble_ship`, and they come out **wrong** — parts in the wrong place / wrong orientation. **Why this is a real finding and not a known limitation:** the RE write-up [`ship-placement-runtime-capture.md`](ship-placement-runtime-capture.md) declares static assembly ✅ **exact** as of 2026-07-26 — 9-channel joint tables `[TX TY TZ RY RX RZ SX SY SZ]`, Euler `Ry·Rx·Rz`, with `ship::tests::static_assembly_matches_runtime_capture` asserting static == runtime capture (T < 1.0, R < 0.02). So either the viewer is not using that path, or the claim generalises worse than the test suggests. **The likely gap:** that test is **one ship** — the `e106` destroyer, 8 parts plus two nacelles, two turrets and the hull mirror. Nothing pins the other classes. Rules that were derived from `e106` and could easily be `e106`-specific: - the engine cluster rig mounted at `GN_Engine_01` (two mirrored nacelles + centre); - "X-reflect the shared-geometry twin whose lateral offset opposes the geometry's dominant side" — a heuristic, not a decoded flag; - cross-id turret instancing (×2). **First step (the oracle already exists):** re-run the runtime capture on a *different* capital ship and diff static vs captured, exactly as `e106` was done — F10 in the `capture-ship-placement` build of `xenia-canary-native` dumps the ship shader's `c0..c2` WorldViewProjection rows per part; `WV_ref⁻¹ · WV_p` is the ship-space rigid transform, which is ground truth. Pick a class whose rig differs from `e106` (different engine count, a ship with no `sld`, a carrier). Then extend `static_assembly_matches_runtime_capture` into a per-ship table so a regression in one class cannot hide behind `e106` passing. **Also worth ruling out first, cheaply:** that the viewer's own transform stack (scale, handedness, node-instance recursion) is not re-breaking a correct assembly — compare the viewer's placement against `assemble_ship`'s output directly before blaming the format layer.