diff --git a/NOTES.md b/NOTES.md
index a117f05..f8d8c13 100644
--- a/NOTES.md
+++ b/NOTES.md
@@ -16,9 +16,10 @@ A selected object is not just a rectangle. It may be authored, runtime-created,
## Must do first
-- Keep player/controller ownership scene-specific unless a genuinely shared abstraction appears.
-- Introduce an editor command/change model before implementing undo/redo.
-- Keep undo/redo editor-only at first.
+- [x] Keep player/controller ownership scene-specific unless a genuinely shared abstraction appears.
+- [x] Introduce an editor command/change model before implementing undo/redo.
+- [x] Keep undo/redo editor-only at first.
+- [x] Keep scene activation separate from default scene creation so loading cannot be overwritten by `on_enter()`.
## Phase targets
diff --git a/README.md b/README.md
index c5b6dcc..78a1994 100644
--- a/README.md
+++ b/README.md
@@ -192,7 +192,8 @@ Current priorities:
- [x] Command model for editor changes
- [x] Undo/Redo on top of the command model
- [x] Command history panel
-- [ ] Multi-select
+- [x] Multi-select
+- [x] Multi-select move/delete
- [ ] Tool mode state
- [ ] Scale tool
- [ ] Basic audio hooks
diff --git a/src/prune/app/app.cpp b/src/prune/app/app.cpp
index c69ea32..540374f 100644
--- a/src/prune/app/app.cpp
+++ b/src/prune/app/app.cpp
@@ -28,6 +28,7 @@ namespace prune {
m_input = std::make_unique();
m_time = std::make_unique