# Editor zero-debt audit checklist

> **Active plan — describes incomplete release/debt gate work.** Current shipped behavior is indexed in the [canonical documentation](../README.md).

Living checklist for the production editor program ([ADR 0012](../adr/0012-zero-tech-debt-editor.md)). Update when closing a phase or removing debt.

## Must not ship (gate before phase sign-off)

| Item | Status | Notes |
|------|--------|-------|
| `bevy_inspector_egui` entity dump on default Inspector tab | Done | `actor_inspector` only; `bevy-inspector-egui` kept for `SelectedEntities` |
| Monolithic `hydrate_authoring_entities` | Done | `crates/shared/src/hydration/*` modules |
| Optional / inferred `ActorKind` as long-term save path | Done | Schema v2 + migration; save validates |
| Hydrated components in committed `.scn.ron` | CI | `scene::validate_scene_authoring_only` + `repo_editor_scene_has_no_hydrated_components` |
| Production mutation without commit/cancel/failure/undo invariants | Done | Shared operator harness plus typed history projections cover palette, asset, brush, terrain, physics, grouping, lighting, material-drop, and transform paths; see [evaluation](evaluations/operator-invariants/) |
| Representative editor coverage can silently disappear | Done | Versioned five-area manifest, typed scene gate, `validate-samples`, and native protocol; see [sample pack](sample-regression-pack.md) |
| Dirty editor exit can bypass an explicit decision, or transient entity IDs define document cleanliness | Done | Guarded shutdown and canonical authored-content checkpoints pass source validation and all seven native workflows at source implementation `4b33f32`, including dirty untitled Save All through Save As. See the [evaluation](evaluations/guarded-shutdown-savepoints/). |
| Scoped UI callbacks depend on temporarily unavailable host state or lose direct selection precedence | Done | Explicit selection/tab requests, panel-owned state, captured viewport data, and full-slice reconciliation pass six scoped regressions, independent re-review, and native toolbar/Inspector/diagnostics acceptance at `9e23ae7`; see the [evaluation](evaluations/scoped-ui-actions/). |
| Checkout metadata or filesystem enumeration can rewrite imported-asset artifacts | Done | Shared content fingerprints, semantic byte-preserving publication, normalized registry order, clean-checkout validators, and live mtime-only drift pass at `cbd380a`; see the [evaluation](evaluations/deterministic-asset-fingerprints/). |
| Dual FBX thumbnail ad-hoc path (parallel to unified pipeline) | Partial | Phase 5 `assets/thumbnails/` refactor |
| `failed_keys` thumbnail cache without retry API | Partial | `asset_thumbnails.rs`; Phase 5 `ThumbnailState` |
| Inspector hard-coded component dispatcher | Done | `EditorComponentRegistry` is the sole visible built-in dispatcher; startup rejects missing callbacks |
| `ui/inspector.rs` monolith | Done — P0 #68 | 363 nonblank-line registry-dispatch shell; component cards and complex domains are separate modules |
| `ui/asset_browser/panel.rs` monolith | Done — P0 #68 | 450 nonblank-line shell; navigation, cards, Details, import, extraction, transactions, trash, and undo are separate modules |
| Architecture debt can grow silently | Done | `.codex/architecture.toml` plus `scripts/codex/architecture_audit.py`; exact frozen baselines ratchet every remaining legacy module |

## Phase completion gates

| Phase | Debt gate |
|-------|-----------|
| P0 | Hydration modules; strip-on-save tests; live project lighting |
| P1 | `ActorKind` required; `validate_actor` on save |
| P2 | No runtime components in default inspector |
| P3 | `HierarchySiblingIndex`; no undefined sibling order |
| P6 | `ActorInspectorSection` registry; typed immediate/modal command dispatch; BRP authoring policy; production mutation invariants |
| P7 | ADRs 0009–0012 indexed; CI `shared` + `scene` + `editor` checks |

## Manual verification (release)

- [ ] R1–R6 rendering/inspector scenarios ([roadmap.md](roadmap.md))
- [ ] Save/load roundtrip: hierarchy, lights, materials unchanged
- [ ] PIE 60s stop: project lighting profile unchanged unless scene overrides edited
- [ ] Rerun the [operator invariant matrix](operator-regression-testing.md) from the nominated release-candidate commit
- [ ] Open all five [sample regression pack](sample-regression-pack.md) entries through the native File menu and record exact-candidate results
