📐 Journey Studio
Authoring guardrails · KG-native

Journey Sequence & Blueprint

A guardrail kit for the two generation operations — turning a chapter into an ordered sequence of ~15–20 min journeys, and each journey into a construction-grade blueprint. The model already knows the pedagogy; this kit encodes only the delta: house conventions, research-backed invariants, and a grounding contract that keeps every claim traceable to the Knowledge Graph.

KG-native DOI-verified citations Draft · integration pending
47laws
20verified refs
3enforcement seams
15–20min / journey

the stanceGuardrails, not a tutorial

The LLM already knows CPA, cognitive load, ZPD, scaffolding, curriculum theory. This kit does not re-teach any of it. Every law is a constraint on output, carrying a test to detect a breach and, where one exists, the verified research that justifies it. Roughly half the laws are house conventions (delivery consistency, buildability) and are labelled as such — no theory is claimed where none applies. The strongest layer is content-grounding: every misconception, visual model, and interaction the kit pulls is itself KG-cited per row.

Make the best of the model's domain knowledge with supportive, research-backed guardrailing.

the grammarSix kinds, one home each

Every fact lives in exactly one place; cross-references are by id or name, never a copy — the kit's own DRY law.

FileOwns
spinethe ordered process of A and B
lawsoperation invariants (R-CHP-, R-BLU-)
vocabularynamed primitives (tropes, sections, applet stages, content-types)
leversevery tunable number
provenancegrounding + identity contract (R-GND-*)
referencesthe DOI-verified evidence layer

processThe spine

Operation A — Chapter Research + Sequence

Input: a chapter id (G<grade>C<chap>) + the target in lever:content_scope.

A0 · Resolve + preflight

Resolve the chapter's textbook in the KG: kg_list_source_docs(curriculum, grade) → pick the book → kg_get_source_outline(doc_id) → the chapter's page range.

  • Laws: R-CHP-01. If the book is absent → gap::kg_source_absent, stop and report (R-GND-02/03).

A1 · Extract the chapter

kg_get_source_pages(doc_id, page_start, page_end) (+ kg_search_sources for specifics). Build the structured textbook_extract: sections (id, title, pages, key objects, cognitive register, exercise density, any textbook-flagged misconceptions), vocabulary, notation, cultural anchors, CPA trajectory, teach-time estimate — and the textbook's own worked_examples[] and exemplar_questions[] (the "Figure it Out" / exercise prompts) captured verbatim, each with its kg_source::<doc>::p<page> cite (these feed R-CHP-14 assignment and R-BLU-23 use).

  • Laws: R-CHP-01, R-CHP-06; every extracted claim cites kg_source::<doc>::p<page> (R-GND-05).
  • Output: textbook_extract.json.

A2 · KG evidence assembly (deterministic, zero-LLM)

Scope the KG for the chapter and FK-expand from surfaced LOs. One battery of reads, bounded by lever:kg_retrieval: kg_list_los(grade+strand) → surfaced LOs → FK-expand each to its misconception_ids, false_friend_ids, insight_record_ids, prerequisite_lo_codes via kg_lo_neighborhood / kg_list_ai_tags; plus kg_list_misconceptions, ported visual_insight_records + interactive_landscape + false_friends (now KG-tagged), kg_list_ias_patterns, kg_list_convention_differences, learning-progression edges, lo_components (component reuse universe), curriculum + bridge nodes.

  • Extracted-asset reuse universe (per R-GND-04): for each surfaced LO, also pull the KG's already-built assets — kg_list_ai_tags (which lesson slides / images / applets / mcp-sims / videos teach this LO, with evidence + confidence) and kg_lesson_full (the per-asset briefs). This is the reuse candidate set B4/B3 draw on.
  • Laws: tag every row kg_node::…::<reason> (R-GND-05); R-GND-01 (real nodes only); R-GND-04 (record the reuse candidates).
  • Output: the evidence bundle (_refs/kg_*.json) + the asset-reuse candidate index (LO → existing assets by kind), each row provenance-tagged.

A3 · Synthesise (LLM — the model's domain knowledge, guardrailed)

The model synthesises, connects, and gap-flags over the pre-assembled evidence — it does not re-research. Produce the LO brief and the KG synthesis.

  • CHAPTER_LO_BRIEF: chapter LO + subgoals, prerequisite chain, ≥5-curriculum alignment, surfaced-LO universe (each with relevance + dual-ID + provenance).
  • Laws: R-CHP-02, R-CHP-03, R-CHP-04, R-GND-01/04/05/06; dual-ID per provenance.md.
  • CHAPTER_KG_SYNTHESIS: misconceptions (full payload), visual models, KG-resolved interactive URLs, IAS recommendations, vocabulary status, false-friends, conventions, tropes, gaps, cultural anchors.
  • Laws: R-CHP-05, R-CHP-06, R-GND-01/02/03/05; never-synthesize list for URLs/ids.
  • Output: CHAPTER_LO_BRIEF.json, CHAPTER_KG_SYNTHESIS.json.

A4 · Sequence into journeys

Decompose the chapter LO into the ordered CHAPTER_JOURNEY_SEQUENCE. Journey count and boundaries are set by the time filter — every journey sized to lever:time.journey_budget_minutes within lever:time.journey_flex_band_minutes (the 15–20 min unit), summed against the textbook estimate within lever:sequence.textbook_time_tolerance_fraction — together with the content drivers (section count, page span, exercise density). Each journey typed, CPA-phased, LO-bound, annotated, and assigned a tgar_role — TGAR cascades across the journey cluster, not necessarily within one journey (R-CHP-18); reconciliation map if existing journeys are present.

  • Laws: R-CHP-07 (content-driven count + time budget)…R-CHP-12 (the time budget is one of the three conjoined constraints), R-CHP-14, R-CHP-15, R-CHP-17, R-CHP-18; reuse-first components R-GND-04.
  • Output: CHAPTER_JOURNEY_SEQUENCE.json.

A5 · Coverage close

Build COVERAGE over every surfaced LO code; every code covered or explicitly acknowledged.

  • Laws: R-CHP-16 (must reach 0 genuinely-uncovered).
  • Output: COVERAGE.json, KB_HIERARCHY.json.

▪ GATE A · Sequence approval (HARD STOP)

Render the ordered journey list for the human. On approval, R-CHP-13 locks {position, journey_title, content_type, lo_codes, cpa_phase} for every journey. Only then may Operation B run — one journey at a time.

---

Input: one locked journey record from CHAPTER_JOURNEY_SEQUENCE + the CHAPTER_KG_SYNTHESIS. (Re-read the KG for journey-scope narrowing as needed.)

B0 · Load + narrow + gather reuse candidates

Load the locked journey header (never mutate it — R-CHP-13) and the chapter synthesis. Narrow the KG evidence to this journey's LO, and pull the asset-reuse candidate index for it (kg_list_ai_tags / kg_lesson_full / neighbourhood on the journey LOs) — the existing screens / images / applets / mcp-sims / videos the KG has extracted for this LO (R-GND-04, R-BLU-22). This index feeds every authoring step below: reuse or adapt before you author net-new.

B1 · Define the journey spine

The spine is the core-teaching backbone — the ordered sequence of content screens that carries the concept from Activate to Consolidate: the CPA progression, the worked examples, the prerequisite and vocabulary screens. It is authored first, and targets lever:time.spine_target_fraction of the journey budget (the remaining headroom is enrichment — tropes-as-screen-pairs, applets, videos, media, placed in B3). Lay out the six sections and the spine screens; place the required semantic-tag tropes; assign CPA phases and the scaffolding arc.

  • Reuse-first: for each spine screen/image, check the reuse index — adopt an extracted KG screen/image where one teaches this beat (R-BLU-22), author new only on no-match.
  • Textbook examples & questions: populate the Get worked examples and the Ask/Exit questions from this journey's assigned textbook_examples / exemplar_questions (from A1), each page-cited; author new only to fill an uncovered beat (R-BLU-23).
  • Laws: R-BLU-01, R-BLU-02, R-BLU-03, R-BLU-04, R-BLU-05, R-BLU-06, R-BLU-22, R-BLU-23.
  • Primitives: vocabulary.md §2, §3. Budget: lever:time.spine_target_fraction, lever:time.role_minutes_table.

B2 · Enrich per-screen

Attach the per-screen fields (major idea, tgar role, visual-model description, transition, scaffolding level, vocabulary-on-screen) and the commitment tags. Materialise conventions/false-friends.

  • Laws: R-BLU-07, R-BLU-13, R-BLU-14, R-BLU-16, R-BLU-17.

B3 · Place applets + videos

Where R-BLU-08 escalates or R-BLU-10 licenses, insert the three-screen sandwich; classify screen roles.

  • Laws: R-BLU-08, R-BLU-09, R-BLU-10. Roles: vocabulary.md §6. Cap: lever:blueprint.applets_per_journey_soft_cap.

B4 · Build each applet blueprint

For every applet placeholder, author the six-stage screen sequence, construction-grade.

  • Laws: R-BLU-11, R-BLU-12, R-BLU-18, R-BLU-19, R-BLU-20, R-BLU-21.
  • Primitives: vocabulary.md §4.

B5 · Compile (deterministic, zero-LLM)

Run the compile pass: structural invariants + provenance completeness. Assign asset_context_role deterministically. Return every violation; never silently repair.

  • Enforces every compile-seam law above + R-GND-05. Pacing checked against lever:time.role_minutes_table.
  • Output: {ok, violations[], stats}.

▪ GATE B · Blueprint checkpoint (HARD STOP)

Render the blueprint for the human. A non-empty violations[] means regenerate the offending artifact — not hand-patch around a violation. On approval the journey is construction-ready.

---

SeamWhat runsLaws it carries
kgreads resolve against real KG nodes; proposed nodes route to the KG authoring gateR-GND-01/04, all "real-node" clauses
compilezero-LLM structural + provenance pass (A5, B5)every [HARD] machine-checkable law
promptguardrails instructed into A3/A4 and B1–B4 generationevery [SOFT] law + judgment-bearing [HARD] law
human gatesequence approval (A) and blueprint checkpoint (B)locks (R-CHP-13); regenerate-not-patch discipline

The model's domain knowledge does the authoring in A3/A4 and B1–B4; the kit's job is only to keep that authoring grounded (kg), structurally sound (compile), and house-consistent (prompt), then hand a human the two decisions that matter (the sequence, the blueprint).

operation A · 18 lawsChapter Research & Sequence

Textbook grounding (from the KG source layer), the LO brief, the KG synthesis, and the ordered chapter → journey sequence. The sequence's locked fields are the contract every blueprint inherits.

R-CHP-01

Textbook is the floor, from the KG source layer

HARD
LawThe chapter's textbook is resolved from the KG source-doc layer (kg_list_source_docskg_get_source_outlinekg_get_source_pages) — the only admissible source of the textbook. Every textbook section maps to ≥1 journey; KG-driven additions beyond the textbook must each cite a KG source; textbook content deliberately omitted must be explained.
DetectA section with no journey in the textbook_to_journey_map; an addition with no KG citation; an omission with no note.
RelaxNone. If the KG lacks the book for this curriculum, fail loud (gap::kg_source_absent) — the remedy is to ingest the book into the KG source layer first (a KG-write candidate), never a local paste. Input provenance is KG-only.
KGkg_get_source_pages, kg_search_sources.
Seamprompt + compile (section→journey coverage) + kg (textbook must exist as KG source nodes).
Groundingconvention (coverage discipline) · F§ (textbook-floor principle).
Why"Floor, not ceiling": the textbook guarantees baseline coverage; research adds above it. Sourcing it from the KG brings the textbook under the same provenance contract as every other claim (R-GND-05) — so every input to a chapter, textbook included, is KG-grounded and auditable.
R-CHP-02

Terminal LO quality

HARD
LawThe chapter LO is one terminal, testable student action naming the capability at chapter end. Journey LOs likewise: one testable action, achievable within lever:time.journey_budget_minutes, no vague verbs (understand/appreciate/know). Language formalizes progressively: informal → visual → formal term → symbol.
DetectNon-behavioural verb; an LO not achievable in budget (→ split, R-CHP-07); an LO not decidable by observation.
Seamprompt + compile (banned-verb lint).
Groundingliterature:Fyfe2014 (concreteness fading — informal/concrete before formal/symbolic) · F§8.1.
R-CHP-03

≥5-curriculum alignment

HARD
LawThe chapter aligns to ≥ lever:kg_retrieval.curriculum_alignment_min_count curricula, each {curriculum, standard_code, description} drawn only from KG curriculum nodes / bridges (R-GND-01). If fewer have relevant standards, document the gap.
KGkg_list_los(by curriculum), curriculum/bridge nodes.
Seamprompt + compile (count + real-code check).
Groundingconvention (grounding breadth — defensibility beyond one syllabus).
R-CHP-04

Semantic, not keyword, LO binding

HARD
LawBind a journey to a KG lo_code by intent match, not shared keywords. If the connection needs a stretch of interpretation, it is not a match → lo_code: null + gap (R-GND-02).
DetectA binding justified only by a term collision (e.g. "table" the furniture vs "table" the data structure).
Seamprompt.
Groundinggrounding-discipline (prevents the model's easiest false-positive).
R-CHP-05

Misconception discipline

HARD
LawPrefer KG misconception nodes (kg_list_misconceptions, FK-expanded from surfaced LOs). Synthesise only when the KG is thin, with a synth_misc_* id and kg_write_candidate: true (R-GND-01/03). Always include misconceptions the textbook itself flags (Teacher's-Note callouts), tagged with the source page.
KGkg_list_misconceptions, kg_lo_neighborhood.
Seamprompt + compile (id-shape + provenance).
Groundingliterature:Posner1982 (conceptual change — anticipate, then accommodate) · content-grounded (KG misconception rows carry citations) · F§9.
R-CHP-06

Cultural / context anchors

SOFT
LawWhere the curriculum mandates cultural rootedness (e.g. NCERT/NCF-SE Indian anchors — Virahanka, Brahmagupta, Ashoka Chakra, local names, native vocabulary), extract and honour those anchors. If the chapter genuinely has none, say so explicitly and why.
Seamprompt.
Groundingconvention (curriculum mandate).
WhyA house/curriculum-specific delta the model won't reliably supply unprompted; soft because presence depends on the source.
R-CHP-07

Content-driven journey count

HARD
LawJourney count is derived from content, not a target: section count + page span + exercise density + the time budget. Heavy sections (> lever:sequence.heavy_section_split_pages pages or > lever:sequence.heavy_section_split_exercises exercises) split; light sections (≤ lever:sequence.light_section_merge_pages pages) merge. Total teach-time within lever:sequence.textbook_time_tolerance_fraction of the textbook estimate.
DetectA fixed journey count independent of section metrics.
Seamprompt + compile (arithmetic).
Groundingconvention (content-driven, not target-driven).
R-CHP-08

Journey atomicity

HARD
LawOne clear LO per journey. A tight cluster of ≤ lever:sequence.max_los_per_journey atomic LOs is allowed only when immediately dependent (teaching one makes the next immediate). If they can be sequenced separately, they must be.
Seamprompt.
Groundingliterature:Sweller1988 (limit element interactivity — one idea at a time) · F§2.1.
R-CHP-09

Prerequisite ordering

HARD
LawUse KG prerequisite edges (kg_lo_neighborhood) to order journeys. A journey never precedes its prerequisites; a required-but-unassigned prerequisite is flagged (no_orphan_prerequisites), either assigned an earlier journey or explicitly marked assumed-prior-knowledge.
KGkg_lo_neighborhood, prerequisite edges.
Seamprompt + compile (topological check).
Groundingconvention (dependency ordering) · F§5.5.
R-CHP-10

Content-type rhythm + practice threading

HARD
LawA new concept always gets a Learn journey before a Practice journey; Practice is never a concept's first encounter. Practice is threaded through the chapter (Learn→Learn→Practice→…), not bottom-loaded. Sequence follows lever:sequence.content_type_sequence; distribution respects lever:sequence.content_type_distribution_targets (targets soft, floors/caps hard).
Seamprompt + compile (ordering + distribution).
Groundingliterature:Cepeda2006 (distributed practice), Rohrer2007 (interleaving), Roediger2006 (retrieval practice) · F§5.2.
WhyPractice before first teaching, and end-loaded practice, are the two recurring sequencing errors; threading follows the spacing/interleaving evidence.
R-CHP-11

Strand coherence

HARD
LawAll journeys address the chapter's strand and scope. No adjacent-strand concept is pulled in unless a KG prerequisite edge justifies it.
Seamprompt.
Groundingconvention (scope discipline).
R-CHP-12

Constraint conjunction

HARD
LawThe time budget (R-CHP-07), practice threading (R-CHP-10), and type distribution must all hold together. If satisfying one breaks another, iterate the sequence until all hold — do not ship a sequence that trades one off.
Seamprompt + compile.
Groundingconvention (multi-constraint satisfaction).
R-CHP-13

Locked-field discipline

HARD
LawAfter the sequence gate, these fields are locked and no Operation-B run may change them: position, journey_title, content_type, the journey's lo_codes, cpa_phase. Get them right here.
DetectA blueprint whose journey header differs from the sequence record.
Seamcompile (diff against the sequence).
Groundingconvention (pipeline contract — prevents downstream desync).
R-CHP-14

Journey annotation completeness

HARD
LawEvery journey in the sequence carries all nine annotation fields: vocabulary_to_introduce, notation_to_introduce, misconceptions_to_address, false_friends_to_watch, tropes_expected (⊇ the lever:blueprint.trope_minimum_requirements set), cpa_phase, curriculum_standards, textbook_examples (the A1 worked examples whose LO this journey owns, by page cite), exemplar_questions (likewise the A1 exercise/"Figure it Out" prompts). Empty arrays are valid; missing fields are not. Practice/Challenge journeys additionally carry the matching pedagogy-structure template (see vocabulary.md §5).
KGfalse-friends and misconceptions via kg_list_ai_tags / neighbourhood.
Seamcompile (presence check).
Groundingconvention (data-contract completeness).
R-CHP-15

Formalization ceiling (scope discipline)

HARD
LawThe journey LO sets the ceiling of formalization. The journey must not introduce content deeper than its LO on the CPA or quantitative axis — a qualitative LO must not introduce quantitative values; a "recognise" LO must not demand "construct".
TestFor every screen: can I justify this content from the journey LO alone, without a deeper formalization?
RelaxContent owned by a sibling journey is in-scope only when this journey is genuinely deeper on CPA/content-type (legitimate scaffolding vs duplication).
Seamprompt.
Groundingliterature:SweEtal1998 (over-formalization = extraneous load) · F§2.1.
WhyPrevents scope creep and cross-journey duplication — the model, left free, over-teaches toward the concept's full formalization.
R-CHP-16

Coverage closes at zero

HARD
LawEvery surfaced LO code ends either covered by a journey or explicitly acknowledged (prerequisite_assumed / acknowledged_extension / acknowledged_adjacent / external_curriculum_anchor). genuinely_uncovered must be 0; a non-zero count means something is wrong — investigate, don't ship.
Seamcompile (coverage audit).
Groundingconvention (coverage discipline).
NoteCoverage is a flag-and-investigate gate, never a fill-to-satisfy one — it must not reward padding (contrast the KG's own scope-completeness stubs). It closes by honest acknowledgement, not by manufacturing journeys.
R-CHP-17

Reconciliation vocabulary

HARD
LawWhen an existing journey set is present, changes are expressed only as KEEP / MERGE / SPLIT / RELOCATE / INSERT / DELETE / EDIT, each citing the KG lo_code(s) that justify it (R-GND-01). No opinion-based recommendation.
Seamprompt + compile (op-enum + citation).
Groundingconvention (auditable edit operations).
R-CHP-18

TGAR cascades across the journey cluster

HARD
LawThe Teach → Get → Ask → Review rhythm is realized across the cluster of journeys that teach a concept in the chapter — it is not required to complete inside a single journey. Each journey carries a tgar_role and typically occupies one or two phases (a Learn journey = Teach + Get; a Practice / Challenge journey = Ask + Review). The sequence must guarantee that every concept's full T → G → A → R arc completes, in order, across its journey cluster.
DetectA concept whose journeys never reach Ask/Review; TGAR phases out of order across the cluster; a single 15–20 min journey forced to cram all four phases for a concept that spans several.
RelaxA short concept may legitimately complete TGAR within one journey — the law forbids requiring it, not allowing it.
Seamprompt + compile (per-concept TGAR-arc completeness + ordering across its cluster).
Groundingliterature:Cepeda2006, Rohrer2007 (distributing Get/Ask/Review across journeys is spacing + interleaving) · convention (the tgar_rolecontent_type mapping) · F§5.2.
WhyCramming T→G→A→R into every short journey fights both the time budget (R-CHP-07) and the spacing effect; letting the rhythm cascade lets each journey do one thing well and spaces retrieval across the chapter. --- # B — Journey + Applet Blueprint (R-BLU-*) Covers construction of one journey's screens + its applets/videos, from the locked sequence record and the KG synthesis. Consumes the vocabulary.md primitives; enforces conformance to them.

operation B · 23 lawsJourney Blueprint

One journey's slides + applets, from the locked sequence record and the KG synthesis. Reuse-first: adopt the KG's already-extracted assets (slides, images, applets, mcp-sims, videos) before authoring net-new.

R-BLU-01

Section arc

HARD
LawThe journey traverses the six sections in order (vocabulary.md §2, Activate→Consolidate); the arc is complete — no section silently dropped.
Seamcompile.
Groundingconvention (TGAR delivery structure) · F§5.2.
R-BLU-02

Trope conformance

HARD
LawEvery trope instance conforms to its registry record (vocabulary.md §3): it appears where its required-when fires, at its position_rule, and — where setup_reveal: yes (Math_Trap, Math_Twist) — as a setup→reveal pair; setup and resolution never share one screen. Minimum counts per lever:blueprint.trope_minimum_requirements. Math_Twist is at most one per journey and never merged with Math_Trap.
DetectA confrontation/anchoring trope collapsed onto a single screen; a missing required trope; a Twist merged into a Trap.
Seamcompile (via compile_key tags) + prompt.
Groundingliterature:Posner1982 (Math_Trap = elicit dissatisfaction, then accommodate), Kapur2008 (Math_Twist = productive surprise) · F§5.3, F§9.
WhyCollapsing setup+reveal destroys the pedagogical moment (the commitment→disconfirmation beat); the registry is the single definition, this law the single enforcer.
R-BLU-03

CPA sequencing

HARD
LawConcrete before Pictorial before Abstract; never start Abstract. Transition screens bridge phases.
RelaxPer content-type (vocabulary.md §1 / lever:blueprint.cpa_strictness): Learn = full C→P→A; Practice may begin Pictorial but must reach Abstract; Challenge abbreviated.
Seamprompt + compile (phase order).
Groundingliterature:Bruner1966 (enactive→iconic→symbolic), Fyfe2014 (concreteness fading), Ainsworth2006 (translating across representations) · F§2.2.
R-BLU-04

Scaffolding arc is monotonic

HARD
LawScaffolding follows lever:blueprint.scaffolding_ladder (full→partial→guided→independent) and never increases after being reduced; transitions are smooth at section boundaries.
TestRead the scaffolding_level column top to bottom: a jump from full to independent signals missing intermediate screens; still full past Teach = hand-holding; independent before Review = abandoning.
RelaxApplet stages have their own arc under this same law.
Seamcompile (monotonicity) + prompt.
Groundingliterature:WBR1976 (scaffolding + fading), Vygotsky1978 (ZPD) · F§2.6.
R-BLU-05

Concept-prerequisite ordering

HARD
LawIntroduce vocabulary and relational concepts before the tool or representation that uses them. Students need the language before the instrument.
TestFor each screen: does the student already have ALL the vocabulary/concepts needed to engage it? If not, a prerequisite screen is missing.
Seamprompt.
Groundingliterature:SweEtal1998 (unmet prerequisites spike element interactivity/load) · F§2.3.
Whye.g. teach "numerator/denominator" before showing fraction bars; "variable = unknown" before algebraic notation.
R-BLU-06

Context coherence

HARD
LawA Learn journey uses at most lever:blueprint.max_contexts_per_learn_journey concrete contexts: one primary context runs Activate→Ask (the learning spine); at most one transfer context appears in Consolidate. The applet uses the primary context or a context-free representation (number line, area model) — never a brand-new scenario.
DetectDifferent concrete contexts across sections (dice→marbles→coins→cards); a worked example that switches context before consolidation; an Exit Question in a novel context needing new domain knowledge.
Seamprompt + compile (context tag count).
Groundingliterature:MartonPang2006 (vary one thing, hold the background invariant), Mayer2001 (coherence — extraneous material harms) · F§2.4.
R-BLU-07

Screen density ceiling

HARD
LawOne major idea, one visual context, one student action per screen. If describing the screen needs more than lever:blueprint.screen_density_max_describe_sentences sentences, it is too dense.
Detect≥2 worked examples on one screen; teacher-mediated interactive flow in prose (an applet pretending to be a screen); setup AND reveal together; ≥2 visual models on one screen.
TestUntrained first-year teacher presents it in 3 minutes?
RelaxPlaceholder screens exempt (vocabulary.md §6).
Seamcompile (density signals) + prompt.
Groundingliterature:Sweller1988 (intrinsic+extraneous load), Chandler1991 (split-attention), Mayer2001 (redundancy/coherence), Mayer2009 · F§2.3.
R-BLU-08

Media escalation

HARD
LawAny one of these means the content must become an applet sandwich, not a screen: interaction language (drag/place/sort/build); ≥ lever:blueprint.media_escalation_example_count examples of the same reasoning; teacher-mediated interactivity; predict-then-reveal; a dense procedural flow. Multi-step procedures (≥ lever:blueprint.procedure_to_applet_step_threshold steps) belong in applets.
Seamprompt + compile (signal scan).
Groundingconvention (delivery-medium routing) + literature:Sweller1988 (offload high element-interactivity to interaction).
WhyThese signals mark content that only lands through interaction; leaving it on a screen produces the "screen pretending to be an applet" failure.
R-BLU-09

Media sandwich

HARD
LawEvery applet and every video is a three-screen sandwich: context (why, what to explore/watch-for) → placeholder (where it runs, duration) → consolidation (reconnect to the journey LO). The Snapshot trope lands on the consolidation screen. Per-medium specifics are in vocabulary.md §6 (screen roles).
DetectA placeholder without its flanking context/consolidation screens.
Seamcompile (sandwich presence).
Groundingconvention (integration structure) · F§7.3, F§7.4.
R-BLU-10

Applet purpose bound

HARD
LawAn applet is placed only when all hold: (1) the synthesis names a specific IAS archetype, (2) a misconception needs surfacing through interaction (not mere statement), and (3) sufficient conceptual groundwork precedes it. Applets serve Explore / Consolidation / Practice / Assessment — never exposition, definition, worked examples, or trope moments (those are screens).
Seamprompt.
Groundingconvention (interaction-must-encode-concept) · F§3.1.
WhyApplets are expensive attention; spending them on exposition wastes the interactive budget and pacing (lever:blueprint.applets_per_journey_soft_cap).
R-BLU-11

Applet stage arc

HARD
LawAn applet follows the six stages (vocabulary.md §4, Launch→Consolidate), with its own scaffolding arc (R-BLU-04).
RelaxContent-type/node kind: an exit_question applet may compress to Application only; a misconception applet leads with the wrong intuition (see R-BLU-19).
Seamprompt + compile (stage presence).
Groundingliterature:Kapur2008 (explore/struggle before articulation), Chi1989 (Explain stage = self-explanation) · F§6.2.
R-BLU-12

Construction-grade screens

HARD
LawEvery applet screen carries the enrichment fields that make it buildable: student_sees_does_thinks, intermediate_states (trigger→resulting_state→visual_change), affordances (element + visual_cue), variants_and_invariants (the IAS archetype in action — what changes vs the principle that stays), feedback (on_correct / on_incorrect / on_partial / on_misconception, with exact text + timing), time_estimate, transition_from_previous. A builder implements the screen from these alone.
DetectA generic thinks: "thinks about fractions"; missing on_misconception where the applet targets one; an interactive element with no discoverable affordance cue.
Seamcompile (field presence) + prompt (specificity).
Groundingconvention (buildability spec) + literature:Hattie2007 (feedback that redirects; on_misconception targets the specific error) · F§3.2, F§6.4.
WhyThis is the delta between a storyboard and a spec; it is what makes R-BLU-20 (buildable from storyboard alone) achievable.
R-BLU-13

Difficulty cap by content-type

HARD
LawDifficulty progresses along lever:blueprint.difficulty_ladder but stays within the content-type's cap (vocabulary.md §1 / lever:blueprint.difficulty_cap_by_content_type): Learn caps at variation; Practice/Challenge reach transfer. Worked examples precede independent practice.
Seamprompt + compile (max-level check).
Groundingliterature:SweCoop1985 (worked-example effect → fade to practice), Chi1989 (self-explanation between) · F§5.4.
R-BLU-14

Screen tagging contract

HARD
LawEach screen's commitment tags — concepts_introduced, concepts_reinforced, misconceptions_targeted, prerequisites_activated — are the contract the compile pass verifies. A concept appears in concepts_introduced on exactly one screen.
Seamcompile (uniqueness + presence).
Groundingconvention (verification contract; single-introduction is the screen-level DRY rule).
R-BLU-15

Dev-note anchoring

HARD
LawEvery dev-note recommendation is anchored to specific content — a screen/screen reference, or journey-wide with enumeration. Vague advice is forbidden.
DetectA dev note with no screen/screen reference → flagged UNANCHORED. GOOD: "Screens 4 & 7: touch targets ≥ 44×44px." BAD: "Ensure touch targets meet accessibility guidelines."
Seamcompile (anchor scan) + prompt.
Groundingconvention (actionability).
R-BLU-16

Convention / false-friend materialization

HARD
LawEvery KG convention flag or false-friend on the journey's LOs (kg_list_ai_tags / neighbourhood over the ported nodes) becomes a structured entry {term_or_aspect, risk, mitigation, addressed_at_screen}. The mitigation is a concrete instructional action, not "be careful"; a false-friend entry names the register shift explicitly (math meaning vs everyday meaning).
KGported false_friends + convention_differences nodes, FK'd to LOs.
Seamprompt + compile (shape + non-vague mitigation).
Groundingcontent-grounded (KG false-friend/convention nodes carry evidence) + convention (materialization shape).
R-BLU-17

Substitute-teacher self-sufficiency

HARD
LawA substitute teacher can run the whole journey using only on-screen content — every concept used is prerequisite-activated, taught here, or flagged as first encounter; no external guidance required.
TestRead only the on-screen content end-to-end: any concept that appears un-activated and un-taught is a gap.
Seamprompt + compile (concept-provenance sweep, ties to R-BLU-14).
Groundingconvention (facilitation model) · F§7.1.
De-scored from the ACRLDS module gate G4/G5 — invariant only, no score.
R-BLU-18

No robot-completable interaction

HARD
LawNo applet interaction is completable without concept-linked thought — a purely mechanical tap-sequence that a robot could finish is a design failure.
Seamprompt.
Groundingconvention (interaction-encodes-concept — the "razor") · F§3.1.
De-scored from applet gate G3.
R-BLU-19

WHY before HOW

HARD
LawThe learner understands why before learning how — motivation/meaning precedes procedure.
RelaxA misconception-type applet inverts this by design: it exposes the wrong intuition first, then resolves it. The inversion is declared, not accidental.
Seamprompt.
Groundingliterature:Kapur2008 (explore/struggle before instruction) · F§2.5.
De-scored from applet gate G4 + its applet_types relaxation.
R-BLU-20

Buildable from storyboard alone

HARD
LawA developer can build the applet from the storyboard without calling a designer — satisfied by R-BLU-12's field completeness.
Seamcompile (delegates to R-BLU-12) + prompt.
Groundingconvention (storyboard = state machine, dev handoff) · F§6.3.
De-scored from applet gate G5.
R-BLU-21

Three layers on every interactive screen

HARD
LawEvery interactive screen carries all three content zones: action_instruction (what to do), scaffolding_text (hints/supports), dev_notes (implementation). Visible content carries the interaction without external guidance.
DetectAn interactive screen missing any of the three zones.
RelaxPlaceholder screens with <TO BE REPLACED> markers are deployment injection points — validate the surrounding sandwich, not the marker.
Seamcompile (zone presence).
Groundingconvention (screen-zone separation) · F§6.4.
De-scored from applet gates G6/G7.
R-BLU-22

Reuse extracted assets before authoring

HARD
LawBefore authoring a net-new asset of any kind — lesson slide, image, applet, mcp-simulation, video — query the KG for an existing extracted asset that already teaches the target LO (kg_lesson_full, kg_list_ai_tags). If one exists and fits, reuse or adapt it: cite it (kg_tag::<asset>::<lo> + the CMS asset id) and resolve its runnable bytes from the CMS at build time. Author net-new only when the KG has no fit, marking it kg_write_candidate: true. This is R-GND-04 instantiated for the blueprint.
DetectA newly-authored screen/image/applet/mcp-sim/video whose intent matches an extracted KG asset on the same LO, carrying no kg_tag:: reuse provenance.
KGkg_lesson_full, kg_list_ai_tags; CMS for the bytes.
Seamprompt (search instructed) + kg (match check) + compile (new asset without a checked-and-recorded no-match is flagged).
Groundinggrounding-discipline (reuse-first → corpus convergence, no duplicate builds). See R-GND-04.
R-BLU-23

Carry the textbook's examples &amp; questions into the journey

HARD
LawThe journey's worked examples (the Get section) are drawn from the textbook's own worked_examples for this journey's LO, and its practice + Exit questions (the Ask / Consolidate sections) from the textbook's exemplar_questions — both captured in A1 and assigned to the journey by R-CHP-14. Each carries its kg_source::<doc>::p<page> cite; adapt wording only as needed (delivery-language per R-GND-06). Author a net-new example or question only to fill a beat the textbook does not cover, and flag it (gap::textbook_no_example).
DetectA Get worked example or an Ask/Exit question with no kg_source cite where the journey's textbook_examples/exemplar_questions hold a fit; fabricated exercise content presented as the textbook's.
KGthe A1 textbook_extract (sourced via kg_get_source_pages); no new read.
Seamprompt + compile (every Get example / Exit question resolves to a page cite or a flagged gap).
Groundingliterature:SweCoop1985 (worked-example effect — study examples before solving), Chi1989 (self-explanation over worked examples) · convention (textbook fidelity) · F§5.4.
WhyA journey that invents its own examples drifts from the book the class actually uses; the textbook's exemplars are the shared, vetted ground truth — reuse them like any other extracted asset, cite the page, and only author to fill real gaps.

6 laws · cross-cuttingGrounding & identity

The backbone that makes the guardrails trustworthy — what lets a human or the KG ingest audit any claim back to a real source.

R-GND-01

No invented ids

HARD
LawEvery reference to a KG entity — LO id, misconception id, VIR id, interactive/activity URL, convention id, false-friend id, curriculum standard code — must resolve to a real KG node or tag. When none matches, the reference is null and the claim is flagged (R-GND-02); a genuinely-needed new entity is authored as a proposed node, never asserted as resolved.
DetectAny canonical id / URL not present in the pulled KG evidence; any proposed node lacking kg_write_candidate: true.
Seamkg (resolve against real nodes) + compile (cross-check every id against the evidence bundle).
WhyThe cardinal failure mode of a fluent LLM is a plausible fabricated identifier. URLs and misconception ids especially: they look right and are load-bearing downstream.
R-GND-02

Gap does not mean exclude

HARD
LawMissing KG coverage never means dropping the content. Author it, set the KG reference null, flag kg_gap: true with a reason, and surface it for KG enrichment.
DetectContent silently absent where the textbook/curriculum demands it; a null reference without a kg_gap flag.
Seamprompt + compile (null-without-flag is a violation).
WhySilent omission hides a real curriculum need and starves the KG-enrichment loop. Null must be explicit, never silent.
R-GND-03

Gap over fabrication

HARD
LawWhen a claim cannot be grounded in a KG node or a source page, default to gap::<reason> rather than a fabricated claim. Gaps are honest; fabrications are dishonest.
Seamprompt + compile (a synthesised::low claim with no reasoning trace is treated as a candidate fabrication).
WhyThis is the line that lets the kit trust the model's domain fluency elsewhere: fluency is welcome for synthesis and gap-identification, forbidden for grounding.
R-GND-04

Reuse before invent

HARD
LawBefore authoring anything new — an LO-component, a screen, a visual model, or a whole applet — search the KG for what it has already extracted on the same LO and reuse or adapt it. Two reuse surfaces: 1. Components / substrate — existing lo_components, misconceptions, VIRs, IAS patterns tagged to the LO. Statement-equivalent match (canonical form: stripped + lower-cased; near-paraphrases count) → reuse (reuse::<lo>#<node>). 2. Built assets — the KG's extracted lesson/asset corpus, spanning every asset kind: lesson slides, images, applets, mcp-simulations, videos. Discovery + alignment come from the KG (kg_lesson_full → per-lesson lesson_brief, slides_brief, asset_briefs with content_moments / pedagogy / assessment_inference; kg_list_ai_tags → per-asset asset_kind, slide_position, lo_id, evidence excerpt, confidence). When an extracted asset of any kind already teaches this LO, reuse or adapt it (kg_tag::<asset>::<lo>) rather than authoring a net-new one. - KG discovers, CMS runs. The KG holds the extract + LO alignment; the runnable bytes (deck, image, applet bundle, mcp-sim, video) live in the CMS. Reuse is a two-hop: KG says which asset teaches the LO → resolve its bytes from the CMS at build time. Provenance carries both: kg_tag::<asset>::<lo> (why it's a match) + the CMS asset id. Mint new only when the KG has no reusable asset/component, marking it kg_write_candidate: true.
DetectA newly-authored component/screen/applet whose intent matches an existing KG component or extracted asset on the same LO, with no reuse::/kg_tag:: provenance.
KGkg_lesson_full, kg_list_ai_tags, kg_lo_neighborhood.
Seamprompt (the search is instructed) + kg (equivalence check at ingest).
Groundinggrounding-discipline (convergence, not sprawl) — reuse-first keeps the built corpus converging and stops the KG accreting duplicates. Instantiated for the blueprint by R-BLU-22.
R-GND-05

Every enumerated claim carries provenance

HARD
LawEvery entry in these lists carries a _provenance tag (below) with a reason: surfaced_lo_codes, curriculum_alignment, prerequisite_chain, misconceptions, visual_models, interactive_landscape, false_friends, conventions_flags, tropes, cultural_anchors, per-journey lo_codes, lo_components, visual_treatments, ias_recommendations.
DetectAny listed entry without a _provenance, or with a tag of an unknown type.
Seamcompile.
R-GND-06

Delivery-language purity

HARD
LawNever author native-language student-facing tokens into LOs, component statements, or specs. Native-language parentheticals in KG source text are localization references only — strip them from generated content (e.g. drop and pangkat from an authored LO). The delivery language is lever:content_scope.language.
DetectNon-target-language tokens in any generated statement / lo_text / spec field.
Seamcompile (a cleanse pass) + prompt.
WhyPrevents source-language pollution from leaking into student-facing output — a subtle, common LLM leak when the KG source is bilingual. --- ## The tag vocabulary Every _provenance value is one of these types (compose with + when a claim has multiple sources). | Tag | Meaning | Use when | |---|---|---| | kg_node::<type>::<id>::<reason> | direct KG node reference | a KG node is the source. type ∈ LO / misconception / vir / interactive / ias / convention / false_friend / curriculum. reasonfk_from_lo / keyword_match / lo_overlap / strand_breadth / term_match / neighbourhood | | kg_tag::<asset>::<lo> | KG asset↔LO alignment tag | grounding an asset/interactive/VIR to an LO via kg_list_ai_tags | | reuse::<lo>#<component> | reused approved component | source_lo_code is non-null after a statement-equality match (R-GND-04) | | kg_source::<doc_id>::p<page> | KG source-document citation | the source is a textbook page (R-CHP-01); always cite the page | | kg_bridge::<cluster_or_edge_id> | cross-curriculum bridge | a curriculum alignment translates via a KG cluster/bridge edge | | synthesised::<low\|medium\|high> | judgment-derived | no KG node or source page grounds it directly. high = corroborated by both KG-adjacent nodes AND a source page; medium = one source + clear reasoning; low = pure domain judgment, flagged for KG-write review | | gap::<reason> | explicit gap | no claim can be grounded. Reasons: kg_scope_ceiling, kg_misconceptions_thin, kg_interactive_thin, kg_ff_absent, iks_rows_absent, … | Compound example: synthesised::high + kg_node::convention::103 · synthesised::high + kg_source::G6C2::p13_teachers_note ## The never-synthesize list These four may never be synthesised:: — they are kg_node/kg_tag/external-code only, or null + gap: 1. Interactive / activity URLskg_node::interactive::<id> or null + kg_status: no_kg_row_matched. Never recalled from training. 2. Misconception ids on a journey — real KG ids; synthesised misconceptions use a synth_misc_ string id, never a fake integer. 3. Reused-component references ({master}#{node}) — must trace to a real KG component node. 4. External standard codes — real codes from the KG curriculum nodes only. ## The visible-badge promise The renderer surfaces every _provenance as a coloured badge so a reader can audit any single claim to its named source. Badges: | Badge | Meaning | |---|---| | KG (green) | KG-resolved node | | PROPOSED (purple) | proposed KG node — kg_write_candidate | | EXTERNAL (orange) | external standard (e.g. CBSE) with no KG node | | SYN (yellow) | synthesised (misconception / false-friend / convention proposed) | | SRC (blue) | source-document (textbook) citation | | GAP (red) | uncovered gap / no-node candidate | A badge is a contract: clicking kg_node::misconception::70 must land on node 70 in the evidence with the matching description; clicking kg_source::G6C2::p13 must land on that page carrying what was cited. When the promise can't be kept, use gap:: or synthesised:: — but never lie about provenance.

Identity — the dual-ID scheme

Every LO, component, and authored node carries two ids:

  • Local id — chapter-stable, sequential, always present. Independent of KG state.
  • LO: LO-G<grade>C<chap>-NN · Component: LC-G<grade>C<chap>-NNN · Chapter: G<grade>C<chap> · Journey: <chapter>J<pos>
  • Canonical id — the KG anchor. One of four resolutions:
ResolutionCanonical idMeaning
KG-resolvedthe exact KG LO id (e.g. merdeka-math-…)first choice, always — reuse the KG string verbatim
Bridgedthe KG LO id + sister_curriculum_anchors{}cross-curriculum equivalence via a KG cluster/bridge edge
External-onlya real external standard code (e.g. CBSE.6.AL.A.4)the KG has no node; an external standard captures it
Proposeda proposed KG node, state: ai_proposed, kg_write_candidate: truea genuine gap — authored through the KG's create_lo / bulk_create_* path, human-gated. **Replaces the old CRX.* scheme.**

The local id is used in the chapter's internal navigation; the canonical id in all cross-references, KG lookups, and ingest. The proposed-vs-resolved distinction is a hard signal — never blur a proposed node into a resolved one (R-GND-01).

---

The tag vocabulary

Every _provenance value is one of these types (compose with + when a claim has multiple sources).

TagMeaningUse when
kg_node::<type>::<id>::<reason>direct KG node referencea KG node is the source. type ∈ LO / misconception / vir / interactive / ias / convention / false_friend / curriculum. reasonfk_from_lo / keyword_match / lo_overlap / strand_breadth / term_match / neighbourhood
kg_tag::<asset>::<lo>KG asset↔LO alignment taggrounding an asset/interactive/VIR to an LO via kg_list_ai_tags
reuse::<lo>#<component>reused approved componentsource_lo_code is non-null after a statement-equality match (R-GND-04)
kg_source::<doc_id>::p<page>KG source-document citationthe source is a textbook page (R-CHP-01); always cite the page
kg_bridge::<cluster_or_edge_id>cross-curriculum bridgea curriculum alignment translates via a KG cluster/bridge edge
`synthesised::<low\medium\high>`judgment-derivedno KG node or source page grounds it directly. high = corroborated by both KG-adjacent nodes AND a source page; medium = one source + clear reasoning; low = pure domain judgment, flagged for KG-write review
gap::<reason>explicit gapno claim can be grounded. Reasons: kg_scope_ceiling, kg_misconceptions_thin, kg_interactive_thin, kg_ff_absent, iks_rows_absent, …

Compound example: synthesised::high + kg_node::convention::103 · synthesised::high + kg_source::G6C2::p13_teachers_note

The visible-badge promise

The renderer surfaces every _provenance as a coloured badge so a reader can audit any single claim to its named source. Badges:

BadgeMeaning
KG (green)KG-resolved node
PROPOSED (purple)proposed KG node — kg_write_candidate
EXTERNAL (orange)external standard (e.g. CBSE) with no KG node
SYN (yellow)synthesised (misconception / false-friend / convention proposed)
SRC (blue)source-document (textbook) citation
GAP (red)uncovered gap / no-node candidate

A badge is a contract: clicking kg_node::misconception::70 must land on node 70 in the evidence with the matching description; clicking kg_source::G6C2::p13 must land on that page carrying what was cited. When the promise can't be kept, use gap:: or synthesised:: — but never lie about provenance.

named primitivesVocabulary

1. Content types

The three kinds a journey can be. Each fixes a CPA rule and a difficulty ceiling (enforced by R-BLU-03, R-BLU-13; numbers in lever:blueprint.*).

idStructureCPA ruleDifficulty ceiling
LearnFull CPA progression. Definition/formula locked in. Worked examples before student practice.full C → P → Acaps at variation (do not reach combination)
PracticeBegins Pictorial or Abstract; escalating difficulty; synthesis with prior learning. Waning-scaffold template.may begin Pictorial, must reach Abstractmust reach combination + transfer
ChallengeTransfer + extension; non-routine problems; minimal scaffolding. Socratic time-boxed template.abbreviatedreaches transfer

---

2. Journey sections — the delivery arc

Ordered. A journey traverses these in order (R-BLU-01). Screen-count guidance is soft; time cost is lever:time.role_minutes_table.

#idPurposeNotable contents
1ActivatePrerequisite activation — surface prior knowledge, flag gaps1–3 screens
2TeachIntroduce the concept, Concrete then PictorialMath_Vault lands here
3GetWorked examples, C → P → A progressionfading worked examples
4AskStudents practice; may embed an applet or videoMath_Trap lands here
5ReviewConsolidate; active recallSnapshot, Shout_Out_Loud
6ConsolidateReal-world grounding + verificationMath_World, Exit_Question

---

3. The seven tropes

Named instructional moves. Each carries: purpose, required-when, position_rule, setup_reveal (whether it is a two-screen setup→reveal pair — a hard invariant under R-BLU-02), and compile_key (where the deterministic pass looks). Minimum instance counts are lever:blueprint.trope_minimum_requirements.

idPurposeRequired whenPositionsetup_revealcompile_key
SnapshotVisual anchor — "see it". One durable image of the concept.every new/unique idea in the journeyafter concept introduced, before worked examples; also on every applet/video consolidation screennotrope_map.snapshots (tag)
Math_VaultPermanent deposit — "lock it in". Definition/formula/procedure in formal language.every newly-introduced definition, formula, or procedureTeach, after concrete demonstrationnotrope_map.math_vaults (tag)
Math_TrapMisconception confrontation — "don't get fooled". Shows the wrong path, then corrects.every high-severity misconception in the research synthesisAsk, before/during practice; one per major misconceptionyestrope_map.math_traps
Shout_Out_LoudActive recall + energy — "say it together". Whole-class choral response.wherever classroom engagement is possibleReview, after knowledge establishednotrope_map.shout_out_louds (tag)
Math_TwistCognitive surprise — "think deeper". A counter-intuitive-but-correct result, OR the moment an everyday false-friend word is displaced by its formal meaning. Distinct from Math_Trap (a Trap confronts a wrong path; a Twist reveals a deeper correct one).when the synthesis has a twist candidate (VIR surprise_factor ≥ 3, or a false-friend with confusion_risk ∈ {medium, high}). Exactly ONE per journey, highest-priority candidate.screen-pair: setup elicits commitment, reveal displaces the framing; at the moment formal vocabulary first meets its everyday false-friend, or where the counter-intuitive visual first appearsyestrope_map.math_twists (never merge with math_traps)
Math_WorldReal-world grounding — "find it in your world". Authentic context.to consolidate journey learnings for the age groupConsolidate, near endnotrope_map.math_worlds (tag)
Exit_QuestionUnderstanding verification — "prove you got it". One diagnostic.≥1 per journey (may be served by an applet)final screen or final applet screennotrope_map.exit_questions

Cost note (for pacing, R-BLU/levers): Snapshot, Math_Vault, Shout_Out_Loud are semantic tags on existing screens — zero time cost. Only Math_Trap / Math_Twist as a screen-pair (trope_setup + trope_reveal) or as a trope-applet add time.

---

4. Applet six stages

Ordered arc of an applet (R-BLU-11). Its scaffolding reduces across stages (R-BLU-04).

#idPurpose
1LaunchWhy this matters, what to explore. Context + curiosity, no instruction yet.
2ExploreEncounter the phenomenon through interaction. Scaffolded; help without revealing.
3NoticePattern recognition — the invariant structure surfaces through designed interaction.
4ExplainName the pattern; student articulates the principle in their own words.
5ApplyTest in new contexts. Transfer; scaffolding reduced.
6ConsolidateSummarize, connect to journey LO, preview what follows.

---

5. Pedagogy-structure templates

Attached to Practice and Challenge journeys (R-CHP-14 requires the field; shapes here). Minute windows reference lever:time.journey_budget_minutes.

Waning Scaffold (Practice)

Four phases, scaffolding fades across them (R-BLU-04 applies): 1. I-doscaffold: full 2. We-doscaffold: high 3. You-do (fading)scaffold: fading 4. You-do (independent)scaffold: none Plus scaffold_artefacts[] — the actual hint/reference cards used.

Socratic Time-Boxed (Challenge)

  • driving_question — one substantial question the student has no ready path to.
  • sub_prompts[] — 5 entries, each {window, prompt, expected_move, reveal}, each in a hard time window.
  • takeaway_question — unanswered, take-home, no time box.
  • transition_cadence — the reveal-and-jump rhythm.

---

6. Screen roles

The canonical role taxonomy. A screen's asset_context_role is assigned deterministically by the compile pass, not the LLM — sourced from applet/video placements, screen.tropes, and section. Named here so laws and the compiler share one vocabulary.

content (default) · worked_example · summary · exit_question · applet_context · applet_placeholder · applet_consolidation · video_context · video_placeholder · video_consolidation · trope_setup · trope_reveal · trope_applet_placeholder

Placeholder screens (*_placeholder) are developer briefs, not student copy — several laws (R-BLU-07, and any style/density rule) suspend on them by declaration.

tunable numbersLevers

The single home for every tunable number in the kit. Laws (laws.md) and the process spine (spine.md) reference these by dotted name (e.g. lever:time.journey_budget_minutes); they never restate a value. One edit here re-tunes both the generator prompt and the deterministic compile checker.

time

Single source of truth for delivery-time budgets. A journey targets 15-20 min; the law (R-CHP-07) treats the budget as the cognitive-load UNIT, not a ceiling — the flex band is the allowed spread.

time.journey_budget_minutes18
time.journey_flex_band_minutes[15,20]
time.applet_budget_minutes7
time.spine_target_fraction0.7
time.role_minutes_table.content2
time.role_minutes_table.worked_example2.5
time.role_minutes_table.summary1
time.role_minutes_table.exit_question2.5
time.role_minutes_table.trope_setup1.5
time.role_minutes_table.trope_reveal2
time.role_minutes_table.applet_context1
time.role_minutes_table.applet_placeholder5
time.role_minutes_table.trope_applet_placeholder2
time.role_minutes_table.applet_consolidation1
time.role_minutes_table.video_context0.5
time.role_minutes_table.video_placeholder2
time.role_minutes_table.video_consolidation1

sequence

Chapter → journey sequencing knobs (R-CHP-07..R-CHP-12).

sequence.max_los_per_journey3
sequence.journey_count_modecontent_driven
sequence.heavy_section_split_pages10
sequence.heavy_section_split_exercises8
sequence.light_section_merge_pages2
sequence.textbook_time_tolerance_fraction0.25
sequence.content_type_sequence["Learn","Practice","Challenge"]
sequence.practice_threadinginterleaved
sequence.content_type_distribution_targets.Learn[0.45,0.7]
sequence.content_type_distribution_targets.Practice[0.2,0.4]
sequence.content_type_distribution_targets.Challenge[0.05,0.2]

blueprint

Journey + applet construction knobs (R-BLU-*).

blueprint.max_contexts_per_learn_journey2
blueprint.max_content_screens_per_journey6
blueprint.min_visual_models_per_journey2
blueprint.min_misconceptions_addressed1
blueprint.screen_density_max_describe_sentences2
blueprint.media_escalation_example_count3
blueprint.procedure_to_applet_step_threshold3
blueprint.cpa_strictness.Learnfull
blueprint.cpa_strictness.Practiceabbreviated
blueprint.cpa_strictness.Challengeabbreviated
blueprint.scaffolding_ladder["full","partial","guided","independent"]
blueprint.difficulty_ladder["direct_application","variation","combination","transfer"]
blueprint.difficulty_cap_by_content_type.Learnvariation
blueprint.difficulty_cap_by_content_type.Practicetransfer
blueprint.difficulty_cap_by_content_type.Challengetransfer
blueprint.trope_minimum_requirements.Snapshot3
blueprint.trope_minimum_requirements.Math_Vault1
blueprint.trope_minimum_requirements.Exit_Question1
blueprint.applets_per_journey_soft_cap2

kg_retrieval

KG query-scoping knobs for Operation A's evidence assembly (spine.md steps A2–A3). The KG runs its own search; these bound the scope and result size the pipeline pulls.

kg_retrieval.curriculum_alignment_min_count5
kg_retrieval.sister_curricula_pool["CBSE","CCSS","Singapore","UK","Merdeka","EngageNY"]
kg_retrieval.result_cap_per_table40
kg_retrieval.forward_looking_grade_lookahead1
kg_retrieval.fk_expansion_enabledtrue

content_scope

The generation target. Named by R-CHP-03/R-CHP-10 and the spine. Set per run.

content_scope.target_curriculumCBSE
content_scope.grade_band6-8
content_scope.languageen
content_scope.kg_scope_ceiling_grades[0,13]

evidence layerReferences

Every DOI verified against Crossref on 2026-09-04 (title, author, year confirmed). Laws cite these by key; the pedagogical laws rest on these primary sources, which the ACRLDS foundation named but did not cite.

  1. Sweller1988 Sweller, J. (1988). Cognitive load during problem solving: Effects on learning. Cognitive Science, 12(2), 257–285. doi:10.1207/s15516709cog1202_4 ✓ verified
  2. SweEtal1998 Sweller, J., van Merriënboer, J. J. G., & Paas, F. (1998). Cognitive architecture and instructional design. Educational Psychology Review, 10(3), 251–296. doi:10.1023/A:1022193728205 ✓ verified
  3. SweKal2011 Sweller, J., Ayres, P., & Kalyuga, S. (2011). Cognitive Load Theory. Springer. ✓ (book) doi:10.1007/978-1-4419-8126-4 ✓ verified
  4. SweCoop1985 Sweller, J., & Cooper, G. A. (1985). The use of worked examples as a substitute for problem solving in learning algebra. Cognition and Instruction, 2(1), 59–89. doi:10.1207/s1532690xci0201_3 ✓ verified
  5. Chi1989 Chi, M. T. H., Bassok, M., Lewis, M. W., Reimann, P., & Glaser, R. (1989). Self-explanations: How students study and use examples in learning to solve problems. Cognitive Science, 13(2), 145–182. doi:10.1207/s15516709cog1302_1 ✓ verified
  6. Chandler1991 Chandler, P., & Sweller, J. (1991). Cognitive load theory and the format of instruction. Cognition and Instruction, 8(4), 293–332. doi:10.1207/s1532690xci0804_2 ✓ verified
  7. Mayer2001 Mayer, R. E., Heiser, J., & Lonn, S. (2001). Cognitive constraints on multimedia learning: When presenting more material results in less understanding. Journal of Educational Psychology, 93(1), 187–198. doi:10.1037/0022-0663.93.1.187 ✓ verified
  8. Mayer2009 Mayer, R. E. (2009). Multimedia Learning (2nd ed.). Cambridge University Press. ✓ (book) doi:10.1017/CBO9780511811678 ✓ verified
  9. Bruner1966 Bruner, J. S. (1966). Toward a Theory of Instruction. Harvard University Press. (Enactive–Iconic–Symbolic; operationalised as CPA.) — no DOI (book) book — no DOI
  10. Fyfe2014 Fyfe, E. R., McNeil, N. M., Son, J. Y., & Goldstone, R. L. (2014). Concreteness fading in mathematics and science instruction: A systematic review. Educational Psychology Review, 26(1), 9–25. doi:10.1007/s10648-014-9249-3 ✓ verified
  11. Ainsworth2006 Ainsworth, S. (2006). DeFT: A conceptual framework for considering learning with multiple representations. Learning and Instruction, 16(3), 183–198. doi:10.1016/j.learninstruc.2006.03.001 ✓ verified
  12. MartonPang2006 Marton, F., & Pang, M. F. (2006). On some necessary conditions of learning. Journal of the Learning Sciences, 15(2), 193–220. doi:10.1207/s15327809jls1502_2 ✓ verified
  13. WBR1976 Wood, D., Bruner, J. S., & Ross, G. (1976). The role of tutoring in problem solving. Journal of Child Psychology and Psychiatry, 17(2), 89–100. doi:10.1111/j.1469-7610.1976.tb00381.x ✓ verified
  14. Vygotsky1978 Vygotsky, L. S. (1978). Mind in Society: The Development of Higher Psychological Processes. Harvard University Press. — no DOI (book) book — no DOI
  15. Cepeda2006 Cepeda, N. J., Pashler, H., Vul, E., Wixted, J. T., & Rohrer, D. (2006). Distributed practice in verbal recall tasks: A review and quantitative synthesis. Psychological Bulletin, 132(3), 354–380. doi:10.1037/0033-2909.132.3.354 ✓ verified
  16. Rohrer2007 Rohrer, D., & Taylor, K. (2007). The shuffling of mathematics problems improves learning. Instructional Science, 35(6), 481–498. doi:10.1007/s11251-007-9015-8 ✓ verified
  17. Roediger2006 Roediger, H. L., & Karpicke, J. D. (2006). Test-enhanced learning: Taking memory tests improves long-term retention. Psychological Science, 17(3), 249–255. doi:10.1111/j.1467-9280.2006.01693.x ✓ verified
  18. Posner1982 Posner, G. J., Strike, K. A., Hewson, P. W., & Gertzog, W. A. (1982). Accommodation of a scientific conception: Toward a theory of conceptual change. Science Education, 66(2), 211–227. doi:10.1002/sce.3730660207 ✓ verified
  19. Kapur2008 Kapur, M. (2008). Productive failure. Cognition and Instruction, 26(3), 379–424. doi:10.1080/07370000802212669 ✓ verified
  20. Hattie2007 Hattie, J., & Timperley, H. (2007). The power of feedback. Review of Educational Research, 77(1), 81–112. doi:10.3102/003465430298487 ✓ verified