Instructor Studio (POC) — Implementation Guide

Instructor Studio is the proof-of-concept authoring application for Codermerlin Academy lesson content. Instructors edit lesson panels as MyST Markdown in a live source/preview editor, build a glossary, author missions and challenges — including programs students write and run in a workbench — then publish lessons through the platform’s content pipeline and assign them to sections.

This is implementation material. It documents how the Studio is built, what its components expose, and what contracts other software must agree with. If you are an instructor looking for how to use the Studio, start with Getting to Know Instructor Studio instead — it covers every feature in this guide from the author’s side of the screen, and assumes nothing about software.

Verified against

Build 213 · 20260910T123348 (codermerlin.academy-pocs @ 45b2925).

The POC moves quickly — twenty-four builds in the sixty-one days before this revision. Every document in this set names the build it was verified against in its own opening lines, and --poc-version in instructor-studio/css/styles.css is bumped on every change, so a reader can always tell whether the page in front of them is current. Per the POC’s change discipline, bumping that version obliges reviewing this set and the instructor tutorials against the change.

Where the code is

A plain-file application with no build step, in the codermerlin.academy-pocs repository under instructor-studio/: index.html plus hand-written ES modules under js/, one stylesheet, and two component assemblies under component-assemblies/. The repository’s own instructor-studio/README.md is the canonical source for the POC’s methodology, its architecture diagram, how to serve it locally, and its change discipline. This guide does not restate those; it documents the feature surface and the contracts in detail.

The three rendering surfaces

The Studio’s editing surface is the Merlin MyST Editor, a published platform component (orange/assembly-components, merlin/content/myst-editor/). The Studio, the Student Lab POC and published lessons all resolve it from the published-components catalog, so authoring preview and student rendering are the same renderer — which is why a feature documented in Editor Component behaves identically in all three.

That holds on the catalog path only. Each POC also keeps a local copy of the assembly under its own component-assemblies/, mounted when the local-component override is active (append ?useLocalComponentForTesting=1, or right-click the version badge), and those copies drift: at build 213 the Studio’s copy is 2,529 lines and Student Lab’s is 2,238, with no Merlin Terminal support in Student Lab’s at all. Under a local override the three surfaces do not render identically — worth knowing, because local override is the mode a developer reproducing a rendering bug is most likely to be in. Component drift is tracked in backend #2484.

A second published assembly, Merlin Challenge Config, hosts the challenge options pane; a third, Merlin Terminal, is mounted inside the editor’s preview by {merlin-terminal} directives.

Documents