{
  "_meta": {
    "role": "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.",
    "excluded_by_design": "Verdict/score thresholds (ship/upgrade/reject) are REVIEW parameters and are intentionally absent — this kit is authoring guardrails, not evaluation.",
    "consumed_by": ["spine.md", "laws.md", "the compile pass", "the generator prompts for A and B"]
  },

  "time": {
    "_note": "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.",
    "journey_budget_minutes": 18,
    "journey_flex_band_minutes": [15, 20],
    "applet_budget_minutes": 7,
    "spine_target_fraction": 0.70,
    "role_minutes_table": {
      "_note": "Per-screen-role minute cost. Feeds the deterministic pacing check AND is quoted into the build prompt so the model plans within budget.",
      "content": 2.0,
      "worked_example": 2.5,
      "summary": 1.0,
      "exit_question": 2.5,
      "trope_setup": 1.5,
      "trope_reveal": 2.0,
      "applet_context": 1.0,
      "applet_placeholder": 5.0,
      "trope_applet_placeholder": 2.0,
      "applet_consolidation": 1.0,
      "video_context": 0.5,
      "video_placeholder": 2.0,
      "video_consolidation": 1.0
    }
  },

  "sequence": {
    "_note": "Chapter → journey sequencing knobs (R-CHP-07..R-CHP-12).",
    "max_los_per_journey": 3,
    "journey_count_mode": "content_driven",
    "heavy_section_split_pages": 10,
    "heavy_section_split_exercises": 8,
    "light_section_merge_pages": 2,
    "textbook_time_tolerance_fraction": 0.25,
    "content_type_sequence": ["Learn", "Practice", "Challenge"],
    "practice_threading": "interleaved",
    "content_type_distribution_targets": {
      "_note": "Soft target ranges (fractions of journeys). Hard floors/caps enforced; the middle is guidance.",
      "Learn": [0.45, 0.70],
      "Practice": [0.20, 0.40],
      "Challenge": [0.05, 0.20]
    }
  },

  "blueprint": {
    "_note": "Journey + applet construction knobs (R-BLU-*).",
    "max_contexts_per_learn_journey": 2,
    "max_content_screens_per_journey": 6,
    "min_visual_models_per_journey": 2,
    "min_misconceptions_addressed": 1,
    "screen_density_max_describe_sentences": 2,
    "media_escalation_example_count": 3,
    "procedure_to_applet_step_threshold": 3,
    "cpa_strictness": {
      "Learn": "full",
      "Practice": "abbreviated",
      "Challenge": "abbreviated"
    },
    "scaffolding_ladder": ["full", "partial", "guided", "independent"],
    "difficulty_ladder": ["direct_application", "variation", "combination", "transfer"],
    "difficulty_cap_by_content_type": {
      "Learn": "variation",
      "Practice": "transfer",
      "Challenge": "transfer"
    },
    "trope_minimum_requirements": {
      "_note": "Minimum required instances per journey. Zero-cost semantic-tag tropes (Snapshot/Math_Vault/Shout_Out_Loud) vs time-costed screen-pair tropes (Math_Trap/Math_Twist) — see vocabulary.md.",
      "Snapshot": 3,
      "Math_Vault": 1,
      "Exit_Question": 1
    },
    "applets_per_journey_soft_cap": 2
  },

  "kg_retrieval": {
    "_note": "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.",
    "curriculum_alignment_min_count": 5,
    "sister_curricula_pool": ["CBSE", "CCSS", "Singapore", "UK", "Merdeka", "EngageNY"],
    "result_cap_per_table": 40,
    "forward_looking_grade_lookahead": 1,
    "fk_expansion_enabled": true
  },

  "content_scope": {
    "_note": "The generation target. Named by R-CHP-03/R-CHP-10 and the spine. Set per run.",
    "target_curriculum": "CBSE",
    "grade_band": "6-8",
    "language": "en",
    "kg_scope_ceiling_grades": [0, 13]
  }
}
