0052. Learner layouts as a Layout topic type rendered from the catalogue
Generated from docs/decisions/0052-layout-topic-type.md
- Status: Proposed
- Date: 2026-10-09
- Plan:
docs/plans/leftovers-0-2.md(L2-21)
Context and problem statement
Section titled “Context and problem statement”The spec allows AI-composed lesson layouts, built from approved learning components and stored in the blueprint (behind a flag). LMS topics are RichText Markdown today. The legacy front and exports need a readable fallback.
Considered options
Section titled “Considered options”- A new topic type
topic-type-layoutstoring the catalogue document plus a Markdown fallback. - Embed the layout JSON inside RichText.
- Render layouts only in
front/webfrom the blueprint.
Decision
Section titled “Decision”Option 1:
- Model.
LayoutTopichasdocument(learner catalogue format),schema_versionandmarkdown_fallback, with morph aliastopic.layout. - Rendering.
front/webrenders the document; other clients use the fallback. - Generation. Task
layout, behind the tenant settingCOURSE_BUILDER_LAYOUTS_ENABLED(default off), uses only approved components. Every leaf cites fragments and objectives. - Practice activities. These must use
PracticeActivity, whose schema enforces the scaffolding template.
Consequences
Section titled “Consequences”- Good: layouts are LMS content (progress, export, Living Course updates) and never markup.
- Bad: one more topic type, and two renderings to keep consistent (document and fallback).