diff --git a/web/world/editor.html b/web/world/editor.html
index 4bc6130..f6ed01b 100644
--- a/web/world/editor.html
+++ b/web/world/editor.html
@@ -195,13 +195,24 @@
import { createEditor } from './js/editor.js';
try {
- await createEditor({
+ const EDITOR = await createEditor({
canvas: document.getElementById('ed-canvas'),
side: document.getElementById('ed-side'),
toolbar: document.getElementById('ed-toolbar'),
readout: document.getElementById('ed-readout'),
hint: document.getElementById('ed-hint'),
});
+
+ // The two lane panels, mounted AFTER createEditor resolves because both need
+ // a live EDITOR — B's reads `globalThis.EDITOR` on import (self-registering,
+ // nothing to call), C's exports a mount function. Landed by the integrator at
+ // SPRINT14 integration: both lanes built against A's published seams and
+ // asked for this one line each; A had finished by then, so it's mine. Inside
+ // the try on purpose — a panel that throws is an editor that says so on the
+ // glass rather than a rail with a hole in it.
+ await import('./js/editor_score.js');
+ const { mountWindPanel } = await import('./js/editor.wind.js');
+ await mountWindPanel(EDITOR);
} catch (err) {
// The editor is a tool, so it fails LOUD and on the glass. index.html's boot
// failure writes into a hidden #dev div and shows a stranger a blank page