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
-
Editor Component — the complete feature inventory of the Merlin MyST Editor: editing surface and history, the full context-menu tree, keyboard shortcuts, Find & Replace, whitespace and embedded-HTML markers, glossary, call outs and boxes, insert/format operations, terminal embeds, preview rendering, the component’s public API, and student mode.
-
Studio Shell — the application around the editor: the menubar and its shortcuts, the canonical Menus and labels table, panel navigation and the lesson model, typed panels, view modes, identity and realm assertion, the target-silo selector, the source-normalization pipeline, and the diagnostics surface.
-
Challenges and Grading — the Merlin Challenge Config component, the four evaluation strategies, question types and modifiers, answer keys, structured choice pools, AI grading rubrics, and challenge variant versioning.
-
ĀYŌDÈ Intelligence Operations — the
aitunerequestcontract and host routing, synchronous versus RAG/async paths, the whole-lesson context payload, whole-lesson panel generation, assessment generation and its review-before-hydrate flow, and the reference library. -
Programs and Workbench — orchestrated (
jobAsync) program challenges: generator bundles, runtimes, comparator modes and scoring, authored comparators, workbench bundles and their authoring-time refusals, Test in Workbench, and challenge-shell startup scripts. -
Publish and Assign — the publish wizard and its pre-publish checks, media internalization, the staged publish pipeline, component mirroring and version pinning, conflict resolution, and the assign wizard.
-
Formats and Contracts — everything another program must agree with: the component public API and its events, the Studio SDK, the
callout-*class token, panel manifests and sidecars, content normalization and hashing, and the published-lesson asset shape.
Related documentation
- Instructor Tutorials — the same features from the instructor’s side, in tutorial form.
- Courses and Lessons — how courses, lessons, sections, assignments and grades relate.