4.4 KiB
4.4 KiB
Editor zero-debt audit checklist
Active plan — describes incomplete release/debt gate work. Current shipped behavior is indexed in the canonical documentation.
Living checklist for the production editor program (ADR 0012). 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 |
| Representative editor coverage can silently disappear | Done | Versioned five-area manifest, typed scene gate, validate-samples, and native protocol; see sample pack |
| 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. |
| 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. |
| 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. |
| 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)
- Save/load roundtrip: hierarchy, lights, materials unchanged
- PIE 60s stop: project lighting profile unchanged unless scene overrides edited
- Rerun the operator invariant matrix from the nominated release-candidate commit
- Open all five sample regression pack entries through the native File menu and record exact-candidate results