{
  "schema_version": 2,
  "meta": {
    "build_id": "CODEX-INSTAGRAM-CONTENT-AI-SI-AGENTIC-ERA",
    "slug": "instagram-content-ai-si-agentic-era",
    "title": "Creating Instagram Content for the AI, SI, and Agentic Era",
    "subtitle": "Make a native ten-slide food carousel and a checked companion knowledge pack.",
    "description": "A reviewed ten-slide food carousel for Overnight oats assembly, controlled A/B drafts, complete native production/capstone plans, an evidence rubric, source-linked retrieval objects and hash-checked companion resources.",
    "one_sentence_description": "A reviewed ten-slide food carousel for Overnight oats assembly, controlled A/B drafts, complete native production/capstone plans, an evidence rubric, source-linked retrieval objects and hash-checked companion resources.",
    "target_user": "A beginner content creator or content agent reviewer: A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims.",
    "skill_level": "beginner",
    "estimated_time": "4–6 hours including native production; live publication optional",
    "category": "Guided Build",
    "tags": [
      "instagram-content-ai-si-agentic-era",
      "verified practice",
      "chatgpt_codex"
    ],
    "prerequisites": [
      "Permission to use a dedicated workspace",
      "A browser and terminal",
      "Read each platform-specific prerequisite before installation"
    ],
    "required_accounts": [],
    "required_software": [
      "Modern browser",
      "Python 3.10+ for downloadable drills"
    ],
    "required_hardware": [
      "A computer with space for the practice files",
      "Second drive for the disaster-recovery checkpoint"
    ],
    "expected_cost": "Free offline practice. Optional platform production uses your own eligible account; no paid service is needed.",
    "final_outcome": "A reviewed ten-slide food carousel for Overnight oats assembly, controlled A/B drafts, complete native production/capstone plans, an evidence rubric, source-linked retrieval objects and hash-checked companion resources.",
    "platforms": [
      "windows",
      "macos",
      "linux"
    ],
    "version": 13,
    "author": "chatgpt_codex",
    "source_checked": "2026-10-06",
    "verification_status": "Created; automated browser and project checks recorded separately. Live account/OS verification is never inferred from browser completion."
  },
  "user_outcome": {
    "before": "The learner has no reproducible, checked workflow for creating instagram content for the ai, si, and agentic era.",
    "after": "A reviewed ten-slide food carousel for Overnight oats assembly, controlled A/B drafts, complete native production/capstone plans, an evidence rubric, source-linked retrieval objects and hash-checked companion resources.",
    "finished_product": "A reviewed ten-slide food carousel for Overnight oats assembly, controlled A/B drafts, complete native production/capstone plans, an evidence rubric, source-linked retrieval objects and hash-checked companion resources."
  },
  "learning_objectives": [
    "The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries.",
    "A format/account map supports the home-cook persona.",
    "Two dated examples and a connected/unconnected distribution sketch exist.",
    "Four pillar ideas and a legible style guide exist.",
    "Three hooks retain the same recipe promise.",
    "A dated search brief has natural topic terms and no volume fabrication."
  ],
  "lessons": [
    {
      "lesson_id": "L01",
      "title": "Start with the native creation experience",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims.",
      "estimated_time": "10 min",
      "learning_objective": "The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries.",
      "lessons_before_this": [],
      "lessons_after_this": [
        "L02"
      ]
    },
    {
      "lesson_id": "L02",
      "title": "Map the visual platform",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A format/account map supports the home-cook persona.",
      "lessons_before_this": [
        "L01"
      ],
      "lessons_after_this": [
        "L03"
      ]
    },
    {
      "lesson_id": "L03",
      "title": "Observe the audience and distribution",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Two dated examples and a connected/unconnected distribution sketch exist.",
      "lessons_before_this": [
        "L02"
      ],
      "lessons_after_this": [
        "L04"
      ]
    },
    {
      "lesson_id": "L04",
      "title": "Set a recognizable visual identity",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Four pillar ideas and a legible style guide exist.",
      "lessons_before_this": [
        "L03"
      ],
      "lessons_after_this": [
        "L05"
      ]
    },
    {
      "lesson_id": "L05",
      "title": "Write a semantic visual hook",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Three hooks retain the same recipe promise.",
      "lessons_before_this": [
        "L04"
      ],
      "lessons_after_this": [
        "L06"
      ]
    },
    {
      "lesson_id": "L06",
      "title": "Research a real search intent",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A dated search brief has natural topic terms and no volume fabrication.",
      "lessons_before_this": [
        "L05"
      ],
      "lessons_after_this": [
        "L07"
      ]
    },
    {
      "lesson_id": "L07",
      "title": "Build the ten-layer keyword stack",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Ten surfaces share the same entities without stuffing.",
      "lessons_before_this": [
        "L06"
      ],
      "lessons_after_this": [
        "L08"
      ]
    },
    {
      "lesson_id": "L08",
      "title": "Compare the same carousel",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. This is a controlled same-topic exercise; no publication result is assumed.",
      "estimated_time": "12 min",
      "learning_objective": "A/B drafts address the same overnight-oats assembly.",
      "lessons_before_this": [
        "L07"
      ],
      "lessons_after_this": [
        "L09"
      ]
    },
    {
      "lesson_id": "L09",
      "title": "Draft the knowledge-layer caption",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A complete caption contains useful context and an honest recipe status.",
      "lessons_before_this": [
        "L08"
      ],
      "lessons_after_this": [
        "L10"
      ]
    },
    {
      "lesson_id": "L10",
      "title": "Plan OCR-readable overlays",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A human phone-size reading test records what was legible.",
      "lessons_before_this": [
        "L09"
      ],
      "lessons_after_this": [
        "L11"
      ]
    },
    {
      "lesson_id": "L11",
      "title": "Build the ten-slide carousel",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Ten complete slide scripts deliver an assembly outcome.",
      "lessons_before_this": [
        "L10"
      ],
      "lessons_after_this": [
        "L12"
      ]
    },
    {
      "lesson_id": "L12",
      "title": "Make a standalone Reel",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A timestamped storyboard matches speech, image and text.",
      "lessons_before_this": [
        "L11"
      ],
      "lessons_after_this": [
        "L13"
      ]
    },
    {
      "lesson_id": "L13",
      "title": "Connect the knowledge chain",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Five self-contained ideas and a next-step map exist.",
      "lessons_before_this": [
        "L12"
      ],
      "lessons_after_this": [
        "L14"
      ]
    },
    {
      "lesson_id": "L14",
      "title": "Use Stories as a living lab",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A three-part Story plan has a permanent knowledge destination.",
      "lessons_before_this": [
        "L13"
      ],
      "lessons_after_this": [
        "L15"
      ]
    },
    {
      "lesson_id": "L15",
      "title": "Respond and verify community claims",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Three response drafts apply a six-level evidence ladder.",
      "lessons_before_this": [
        "L14"
      ],
      "lessons_after_this": [
        "L16"
      ]
    },
    {
      "lesson_id": "L16",
      "title": "Localize and define the food entities",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Entity definitions and localization checks preserve the same meaning.",
      "lessons_before_this": [
        "L15"
      ],
      "lessons_after_this": [
        "L17"
      ]
    },
    {
      "lesson_id": "L17",
      "title": "Build a food knowledge graph",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A connected graph has grounded entities and no unsupported benefit claim.",
      "lessons_before_this": [
        "L16"
      ],
      "lessons_after_this": [
        "L18"
      ]
    },
    {
      "lesson_id": "L18",
      "title": "Plan the content factory",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Eight native outputs share one checked source.",
      "lessons_before_this": [
        "L17"
      ],
      "lessons_after_this": [
        "L19"
      ]
    },
    {
      "lesson_id": "L19",
      "title": "Design the six-version capstone",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Six versions show additive changes on one recipe topic.",
      "lessons_before_this": [
        "L18"
      ],
      "lessons_after_this": [
        "L20"
      ]
    },
    {
      "lesson_id": "L20",
      "title": "Plan ten experiments and seven audit lenses",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Ten controlled proposals and seven review lenses have measurements and limits.",
      "lessons_before_this": [
        "L19"
      ],
      "lessons_after_this": [
        "L21"
      ]
    },
    {
      "lesson_id": "L21",
      "title": "Approve a complete visual package",
      "purpose": "A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A publication readiness decision names remaining evidence gaps.",
      "lessons_before_this": [
        "L20"
      ],
      "lessons_after_this": [
        "L22"
      ]
    },
    {
      "lesson_id": "L22",
      "title": "Companion knowledge and truthful claims",
      "purpose": "A dedicated folder makes mistakes easy to diagnose and keeps real project files separate.",
      "estimated_time": "10 min",
      "learning_objective": "The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone.",
      "lessons_before_this": [
        "L21"
      ],
      "lessons_after_this": [
        "L23"
      ]
    },
    {
      "lesson_id": "L23",
      "title": "Score and verify a reviewed production pack",
      "purpose": "A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit.",
      "estimated_time": "12 min",
      "learning_objective": "A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS.",
      "lessons_before_this": [
        "L22"
      ],
      "lessons_after_this": [
        "L24"
      ]
    },
    {
      "lesson_id": "L24",
      "title": "Retrieve, attribute and hand off",
      "purpose": "The relevant query returns source-linked chunks; the unrelated query abstains.",
      "estimated_time": "8 min",
      "learning_objective": "The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision.",
      "lessons_before_this": [
        "L23"
      ],
      "lessons_after_this": [
        "L25"
      ]
    },
    {
      "lesson_id": "L25",
      "title": "Build Bot Better — protect and recover",
      "purpose": "The September 23 BuildBotsBetter profile wipe removed Desktop, Documents and hidden agent memory together. Repeatable onboarding protects the knowledge needed to recover.",
      "estimated_time": "30 min",
      "learning_objective": "RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch.",
      "lessons_before_this": [
        "L24"
      ],
      "lessons_after_this": []
    }
  ],
  "steps": [
    {
      "title": "Open the native draft studio",
      "purpose": "This step helps you open the native draft studio. The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries.",
      "user_action": "Download the resource ZIP and extract it into a new private folder. Open studio.html directly in your browser. Compare the two ten-slide food carousel drafts for Overnight oats assembly. Read AGENT_OPERATING_MANUAL.md and all twenty points in agent-training.json: native CTA/AI, concrete inputs, draft outputs and stop rules. Inspect strategy.json and assign an artifact to each maturity stage. No account or terminal is needed for the studio; do not publish a synthetic fixture.",
      "explanation": "This step helps you open the native draft studio. The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "studio.html",
        "strategy.json",
        "AGENT_OPERATING_MANUAL.md",
        "agent-training.json"
      ],
      "expected_result": "The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries.",
      "resources": [
        "studio.html",
        "strategy.json",
        "AGENT_OPERATING_MANUAL.md",
        "agent-training.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Open the native draft studio",
        "success_condition": "The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries.",
        "how_to_verify": "Record the observed result for Open the native draft studio. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Open the native draft studio?",
          "fix": "For Open the native draft studio: Download the resource ZIP and extract it into a new private folder. Open studio.html directly in your browser. Compare the two ten-slide food carousel drafts for Overnight oats assembly. Read AGENT_OPERATING_MANUAL.md and all twenty points in agent-training.json: native CTA/AI, concrete inputs, draft outputs and stop rules. Inspect strategy.json and assign an artifact to each maturity stage. No account or terminal is needed for the studio; do not publish a synthetic fixture. Compare the actual output to The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use studio.html, strategy.json, AGENT_OPERATING_MANUAL.md, agent-training.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to open the native draft studio. The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries.",
        "demo": "Download the resource ZIP and extract it into a new private folder. Open studio.html directly in your browser. Compare the two ten-slide food carousel drafts for Overnight oats assembly. Read AGENT_OPERATING_MANUAL.md and all twenty points in agent-training.json: native CTA/AI, concrete inputs, draft outputs and stop rules. Inspect strategy.json and assign an artifact to each maturity stage. No account or terminal is needed for the studio; do not publish a synthetic fixture.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Open the native draft studio, compare your own result with: The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries.. Download the resource ZIP and extract it into a new private folder. Open studio.html directly in your browser. Compare the two ten-slide food carousel drafts for Overnight oats assembly. Read AGENT_OPERATING_MANUAL.md and all twenty points in agent-training.json: native CTA/AI, concrete inputs, draft outputs and stop rules. Inspect strategy.json and assign an artifact to each maturity stage. No account or terminal is needed for the studio; do not publish a synthetic fixture."
      },
      "video": {
        "purpose": "Demonstrate open the native draft studio",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Download the resource ZIP and extract it into a new private folder. Open studio.html directly in your browser. Compare the two ten-slide food carousel drafts for Overnight oats assembly. Read AGENT_OPERATING_MANUAL.md and all twenty points in agent-training.json: native CTA/AI, concrete inputs, draft outputs and stop rules. Inspect strategy.json and assign an artifact to each maturity stage. No account or terminal is needed for the studio; do not publish a synthetic fixture. The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries.",
        "on_screen_text": [
          "Open the native draft studio",
          "The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries."
        ],
        "screen_recording_instructions": [
          "Download the resource ZIP and extract it into a new private folder. Open studio.html directly in your browser. Compare the two ten-slide food carousel drafts for Overnight oats assembly. Read AGENT_OPERATING_MANUAL.md and all twenty points in agent-training.json: native CTA/AI, concrete inputs, draft outputs and stop rules. Inspect strategy.json and assign an artifact to each maturity stage. No account or terminal is needed for the studio; do not publish a synthetic fixture.",
          "The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Download the resource ZIP and extract it into a new private folder. Open studio.html directly in your browser. Compare the two ten-slide food carousel drafts for Overnight oats assembly. Read AGENT_OPERATING_MANUAL.md and all twenty points in agent-training.json: native CTA/AI, concrete inputs, draft outputs and stop rules. Inspect strategy.json and assign an artifact to each maturity stage. No account or terminal is needed for the studio; do not publish a synthetic fixture.",
          "The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries."
        ]
      },
      "step_id": "L01-S01",
      "lesson_id": "L01"
    },
    {
      "title": "Map the visual platform",
      "purpose": "This step helps you map the visual platform. A format/account map supports the home-cook persona.",
      "user_action": "List Feed, Reels, Stories, carousel, Live, Notes, bio, Highlights, comments, DMs and broadcast channels. Compare personal, creator and business needs; select a food carousel for saveable assembly steps.",
      "explanation": "This step helps you map the visual platform. A format/account map supports the home-cook persona. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A format/account map supports the home-cook persona.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Map the visual platform",
        "success_condition": "A format/account map supports the home-cook persona.",
        "how_to_verify": "Record the observed result for Map the visual platform. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "A format/account map supports the home-cook persona.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A format/account map supports the home-cook persona.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Map the visual platform?",
          "fix": "For Map the visual platform: List Feed, Reels, Stories, carousel, Live, Notes, bio, Highlights, comments, DMs and broadcast channels. Compare personal, creator and business needs; select a food carousel for saveable assembly steps. Compare the actual output to A format/account map supports the home-cook persona.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "A format/account map supports the home-cook persona."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to map the visual platform. A format/account map supports the home-cook persona.",
        "demo": "List Feed, Reels, Stories, carousel, Live, Notes, bio, Highlights, comments, DMs and broadcast channels. Compare personal, creator and business needs; select a food carousel for saveable assembly steps.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Map the visual platform, compare your own result with: A format/account map supports the home-cook persona.. List Feed, Reels, Stories, carousel, Live, Notes, bio, Highlights, comments, DMs and broadcast channels. Compare personal, creator and business needs; select a food carousel for saveable assembly steps."
      },
      "video": {
        "purpose": "Demonstrate map the visual platform",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "List Feed, Reels, Stories, carousel, Live, Notes, bio, Highlights, comments, DMs and broadcast channels. Compare personal, creator and business needs; select a food carousel for saveable assembly steps. A format/account map supports the home-cook persona.",
        "on_screen_text": [
          "Map the visual platform",
          "A format/account map supports the home-cook persona."
        ],
        "screen_recording_instructions": [
          "List Feed, Reels, Stories, carousel, Live, Notes, bio, Highlights, comments, DMs and broadcast channels. Compare personal, creator and business needs; select a food carousel for saveable assembly steps.",
          "A format/account map supports the home-cook persona."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "A format/account map supports the home-cook persona."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "List Feed, Reels, Stories, carousel, Live, Notes, bio, Highlights, comments, DMs and broadcast channels. Compare personal, creator and business needs; select a food carousel for saveable assembly steps.",
          "A format/account map supports the home-cook persona."
        ]
      },
      "step_id": "L02-S01",
      "lesson_id": "L02"
    },
    {
      "title": "Observe the audience and distribution",
      "purpose": "This step helps you observe the audience and distribution. Two dated examples and a connected/unconnected distribution sketch exist.",
      "user_action": "Review two public food posts and current official guidance. Note follower distribution versus Explore/Reels discovery, readable text and a meaningful save use case without inventing universal signal weights.",
      "explanation": "This step helps you observe the audience and distribution. Two dated examples and a connected/unconnected distribution sketch exist. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Two dated examples and a connected/unconnected distribution sketch exist.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Observe the audience and distribution",
        "success_condition": "Two dated examples and a connected/unconnected distribution sketch exist.",
        "how_to_verify": "Record the observed result for Observe the audience and distribution. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "Two dated examples and a connected/unconnected distribution sketch exist.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Two dated examples and a connected/unconnected distribution sketch exist.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Observe the audience and distribution?",
          "fix": "For Observe the audience and distribution: Review two public food posts and current official guidance. Note follower distribution versus Explore/Reels discovery, readable text and a meaningful save use case without inventing universal signal weights. Compare the actual output to Two dated examples and a connected/unconnected distribution sketch exist.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "Two dated examples and a connected/unconnected distribution sketch exist."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to observe the audience and distribution. Two dated examples and a connected/unconnected distribution sketch exist.",
        "demo": "Review two public food posts and current official guidance. Note follower distribution versus Explore/Reels discovery, readable text and a meaningful save use case without inventing universal signal weights.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Observe the audience and distribution, compare your own result with: Two dated examples and a connected/unconnected distribution sketch exist.. Review two public food posts and current official guidance. Note follower distribution versus Explore/Reels discovery, readable text and a meaningful save use case without inventing universal signal weights."
      },
      "video": {
        "purpose": "Demonstrate observe the audience and distribution",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Review two public food posts and current official guidance. Note follower distribution versus Explore/Reels discovery, readable text and a meaningful save use case without inventing universal signal weights. Two dated examples and a connected/unconnected distribution sketch exist.",
        "on_screen_text": [
          "Observe the audience and distribution",
          "Two dated examples and a connected/unconnected distribution sketch exist."
        ],
        "screen_recording_instructions": [
          "Review two public food posts and current official guidance. Note follower distribution versus Explore/Reels discovery, readable text and a meaningful save use case without inventing universal signal weights.",
          "Two dated examples and a connected/unconnected distribution sketch exist."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "Two dated examples and a connected/unconnected distribution sketch exist."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Review two public food posts and current official guidance. Note follower distribution versus Explore/Reels discovery, readable text and a meaningful save use case without inventing universal signal weights.",
          "Two dated examples and a connected/unconnected distribution sketch exist."
        ]
      },
      "step_id": "L03-S01",
      "lesson_id": "L03"
    },
    {
      "title": "Set a recognizable visual identity",
      "purpose": "This step helps you set a recognizable visual identity. Four pillar ideas and a legible style guide exist.",
      "user_action": "Choose education, demonstration, commentary and culture pillars for the food account. Sketch a palette, type hierarchy and repeatable jar framing that stays readable at 390px.",
      "explanation": "This step helps you set a recognizable visual identity. Four pillar ideas and a legible style guide exist. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Four pillar ideas and a legible style guide exist.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Set a recognizable visual identity",
        "success_condition": "Four pillar ideas and a legible style guide exist.",
        "how_to_verify": "Record the observed result for Set a recognizable visual identity. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "Four pillar ideas and a legible style guide exist.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Four pillar ideas and a legible style guide exist.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Set a recognizable visual identity?",
          "fix": "For Set a recognizable visual identity: Choose education, demonstration, commentary and culture pillars for the food account. Sketch a palette, type hierarchy and repeatable jar framing that stays readable at 390px. Compare the actual output to Four pillar ideas and a legible style guide exist.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "Four pillar ideas and a legible style guide exist."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to set a recognizable visual identity. Four pillar ideas and a legible style guide exist.",
        "demo": "Choose education, demonstration, commentary and culture pillars for the food account. Sketch a palette, type hierarchy and repeatable jar framing that stays readable at 390px.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Set a recognizable visual identity, compare your own result with: Four pillar ideas and a legible style guide exist.. Choose education, demonstration, commentary and culture pillars for the food account. Sketch a palette, type hierarchy and repeatable jar framing that stays readable at 390px."
      },
      "video": {
        "purpose": "Demonstrate set a recognizable visual identity",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Choose education, demonstration, commentary and culture pillars for the food account. Sketch a palette, type hierarchy and repeatable jar framing that stays readable at 390px. Four pillar ideas and a legible style guide exist.",
        "on_screen_text": [
          "Set a recognizable visual identity",
          "Four pillar ideas and a legible style guide exist."
        ],
        "screen_recording_instructions": [
          "Choose education, demonstration, commentary and culture pillars for the food account. Sketch a palette, type hierarchy and repeatable jar framing that stays readable at 390px.",
          "Four pillar ideas and a legible style guide exist."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "Four pillar ideas and a legible style guide exist."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Choose education, demonstration, commentary and culture pillars for the food account. Sketch a palette, type hierarchy and repeatable jar framing that stays readable at 390px.",
          "Four pillar ideas and a legible style guide exist."
        ]
      },
      "step_id": "L04-S01",
      "lesson_id": "L04"
    },
    {
      "title": "Write a semantic visual hook",
      "purpose": "This step helps you write a semantic visual hook. Three hooks retain the same recipe promise.",
      "user_action": "Draft WHO + WHAT + WHY + VALUE in the first frame: busy home cook, overnight oats, assembly friction, clear prep sequence. Compare a visual movement hook, a question hook and a before/after hook.",
      "explanation": "This step helps you write a semantic visual hook. Three hooks retain the same recipe promise. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Three hooks retain the same recipe promise.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Write a semantic visual hook",
        "success_condition": "Three hooks retain the same recipe promise.",
        "how_to_verify": "Record the observed result for Write a semantic visual hook. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "Three hooks retain the same recipe promise.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Three hooks retain the same recipe promise.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Write a semantic visual hook?",
          "fix": "For Write a semantic visual hook: Draft WHO + WHAT + WHY + VALUE in the first frame: busy home cook, overnight oats, assembly friction, clear prep sequence. Compare a visual movement hook, a question hook and a before/after hook. Compare the actual output to Three hooks retain the same recipe promise.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "Three hooks retain the same recipe promise."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to write a semantic visual hook. Three hooks retain the same recipe promise.",
        "demo": "Draft WHO + WHAT + WHY + VALUE in the first frame: busy home cook, overnight oats, assembly friction, clear prep sequence. Compare a visual movement hook, a question hook and a before/after hook.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Write a semantic visual hook, compare your own result with: Three hooks retain the same recipe promise.. Draft WHO + WHAT + WHY + VALUE in the first frame: busy home cook, overnight oats, assembly friction, clear prep sequence. Compare a visual movement hook, a question hook and a before/after hook."
      },
      "video": {
        "purpose": "Demonstrate write a semantic visual hook",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Draft WHO + WHAT + WHY + VALUE in the first frame: busy home cook, overnight oats, assembly friction, clear prep sequence. Compare a visual movement hook, a question hook and a before/after hook. Three hooks retain the same recipe promise.",
        "on_screen_text": [
          "Write a semantic visual hook",
          "Three hooks retain the same recipe promise."
        ],
        "screen_recording_instructions": [
          "Draft WHO + WHAT + WHY + VALUE in the first frame: busy home cook, overnight oats, assembly friction, clear prep sequence. Compare a visual movement hook, a question hook and a before/after hook.",
          "Three hooks retain the same recipe promise."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "Three hooks retain the same recipe promise."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Draft WHO + WHAT + WHY + VALUE in the first frame: busy home cook, overnight oats, assembly friction, clear prep sequence. Compare a visual movement hook, a question hook and a before/after hook.",
          "Three hooks retain the same recipe promise."
        ]
      },
      "step_id": "L05-S01",
      "lesson_id": "L05"
    },
    {
      "title": "Research a real search intent",
      "purpose": "This step helps you research a real search intent. A dated search brief has natural topic terms and no volume fabrication.",
      "user_action": "Write informational, navigational and commercial query examples. Draft a display name, bio and first caption line related to the food topic; observe actual suggestions when available.",
      "explanation": "This step helps you research a real search intent. A dated search brief has natural topic terms and no volume fabrication. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A dated search brief has natural topic terms and no volume fabrication.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Research a real search intent",
        "success_condition": "A dated search brief has natural topic terms and no volume fabrication.",
        "how_to_verify": "Record the observed result for Research a real search intent. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "A dated search brief has natural topic terms and no volume fabrication.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A dated search brief has natural topic terms and no volume fabrication.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Research a real search intent?",
          "fix": "For Research a real search intent: Write informational, navigational and commercial query examples. Draft a display name, bio and first caption line related to the food topic; observe actual suggestions when available. Compare the actual output to A dated search brief has natural topic terms and no volume fabrication.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "A dated search brief has natural topic terms and no volume fabrication."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to research a real search intent. A dated search brief has natural topic terms and no volume fabrication.",
        "demo": "Write informational, navigational and commercial query examples. Draft a display name, bio and first caption line related to the food topic; observe actual suggestions when available.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Research a real search intent, compare your own result with: A dated search brief has natural topic terms and no volume fabrication.. Write informational, navigational and commercial query examples. Draft a display name, bio and first caption line related to the food topic; observe actual suggestions when available."
      },
      "video": {
        "purpose": "Demonstrate research a real search intent",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Write informational, navigational and commercial query examples. Draft a display name, bio and first caption line related to the food topic; observe actual suggestions when available. A dated search brief has natural topic terms and no volume fabrication.",
        "on_screen_text": [
          "Research a real search intent",
          "A dated search brief has natural topic terms and no volume fabrication."
        ],
        "screen_recording_instructions": [
          "Write informational, navigational and commercial query examples. Draft a display name, bio and first caption line related to the food topic; observe actual suggestions when available.",
          "A dated search brief has natural topic terms and no volume fabrication."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "A dated search brief has natural topic terms and no volume fabrication."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Write informational, navigational and commercial query examples. Draft a display name, bio and first caption line related to the food topic; observe actual suggestions when available.",
          "A dated search brief has natural topic terms and no volume fabrication."
        ]
      },
      "step_id": "L06-S01",
      "lesson_id": "L06"
    },
    {
      "title": "Build the ten-layer keyword stack",
      "purpose": "This step helps you build the ten-layer keyword stack. Ten surfaces share the same entities without stuffing.",
      "user_action": "Map speech, overlays, caption, relevant hashtags, profile, comments, bio link, canonical page, source recipe and structured object. Use only available relevant hashtag capacity after checking the current composer.",
      "explanation": "This step helps you build the ten-layer keyword stack. Ten surfaces share the same entities without stuffing. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Ten surfaces share the same entities without stuffing.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Build the ten-layer keyword stack",
        "success_condition": "Ten surfaces share the same entities without stuffing.",
        "how_to_verify": "Record the observed result for Build the ten-layer keyword stack. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "Ten surfaces share the same entities without stuffing.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Ten surfaces share the same entities without stuffing.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Build the ten-layer keyword stack?",
          "fix": "For Build the ten-layer keyword stack: Map speech, overlays, caption, relevant hashtags, profile, comments, bio link, canonical page, source recipe and structured object. Use only available relevant hashtag capacity after checking the current composer. Compare the actual output to Ten surfaces share the same entities without stuffing.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "Ten surfaces share the same entities without stuffing."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to build the ten-layer keyword stack. Ten surfaces share the same entities without stuffing.",
        "demo": "Map speech, overlays, caption, relevant hashtags, profile, comments, bio link, canonical page, source recipe and structured object. Use only available relevant hashtag capacity after checking the current composer.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Build the ten-layer keyword stack, compare your own result with: Ten surfaces share the same entities without stuffing.. Map speech, overlays, caption, relevant hashtags, profile, comments, bio link, canonical page, source recipe and structured object. Use only available relevant hashtag capacity after checking the current composer."
      },
      "video": {
        "purpose": "Demonstrate build the ten-layer keyword stack",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Map speech, overlays, caption, relevant hashtags, profile, comments, bio link, canonical page, source recipe and structured object. Use only available relevant hashtag capacity after checking the current composer. Ten surfaces share the same entities without stuffing.",
        "on_screen_text": [
          "Build the ten-layer keyword stack",
          "Ten surfaces share the same entities without stuffing."
        ],
        "screen_recording_instructions": [
          "Map speech, overlays, caption, relevant hashtags, profile, comments, bio link, canonical page, source recipe and structured object. Use only available relevant hashtag capacity after checking the current composer.",
          "Ten surfaces share the same entities without stuffing."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "Ten surfaces share the same entities without stuffing."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Map speech, overlays, caption, relevant hashtags, profile, comments, bio link, canonical page, source recipe and structured object. Use only available relevant hashtag capacity after checking the current composer.",
          "Ten surfaces share the same entities without stuffing."
        ]
      },
      "step_id": "L07-S01",
      "lesson_id": "L07"
    },
    {
      "title": "Compare the same carousel",
      "purpose": "This step helps you compare the same carousel. A/B drafts address the same overnight-oats assembly.",
      "user_action": "Open studio.html and compare A/B caption drafts for the same ten-slide carousel. Keep visual promise fixed; add rolled oats, clear sequence and a real question while preserving warmth.",
      "explanation": "This step helps you compare the same carousel. A/B drafts address the same overnight-oats assembly. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "studio.html",
        "versions.json"
      ],
      "expected_result": "A/B drafts address the same overnight-oats assembly.",
      "resources": [
        "studio.html",
        "versions.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Compare the same carousel",
        "success_condition": "A/B drafts address the same overnight-oats assembly.",
        "how_to_verify": "Record the observed result for Compare the same carousel. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "A/B drafts address the same overnight-oats assembly.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A/B drafts address the same overnight-oats assembly.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Compare the same carousel?",
          "fix": "For Compare the same carousel: Open studio.html and compare A/B caption drafts for the same ten-slide carousel. Keep visual promise fixed; add rolled oats, clear sequence and a real question while preserving warmth. Compare the actual output to A/B drafts address the same overnight-oats assembly.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "A/B drafts address the same overnight-oats assembly."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use studio.html, versions.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to compare the same carousel. A/B drafts address the same overnight-oats assembly.",
        "demo": "Open studio.html and compare A/B caption drafts for the same ten-slide carousel. Keep visual promise fixed; add rolled oats, clear sequence and a real question while preserving warmth.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Compare the same carousel, compare your own result with: A/B drafts address the same overnight-oats assembly.. Open studio.html and compare A/B caption drafts for the same ten-slide carousel. Keep visual promise fixed; add rolled oats, clear sequence and a real question while preserving warmth."
      },
      "video": {
        "purpose": "Demonstrate compare the same carousel",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Open studio.html and compare A/B caption drafts for the same ten-slide carousel. Keep visual promise fixed; add rolled oats, clear sequence and a real question while preserving warmth. A/B drafts address the same overnight-oats assembly.",
        "on_screen_text": [
          "Compare the same carousel",
          "A/B drafts address the same overnight-oats assembly."
        ],
        "screen_recording_instructions": [
          "Open studio.html and compare A/B caption drafts for the same ten-slide carousel. Keep visual promise fixed; add rolled oats, clear sequence and a real question while preserving warmth.",
          "A/B drafts address the same overnight-oats assembly."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "A/B drafts address the same overnight-oats assembly."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Open studio.html and compare A/B caption drafts for the same ten-slide carousel. Keep visual promise fixed; add rolled oats, clear sequence and a real question while preserving warmth.",
          "A/B drafts address the same overnight-oats assembly."
        ]
      },
      "step_id": "L08-S01",
      "lesson_id": "L08"
    },
    {
      "title": "Draft the knowledge-layer caption",
      "purpose": "This step helps you draft the knowledge-layer caption. A complete caption contains useful context and an honest recipe status.",
      "user_action": "Write topic, assembly problem, method, ingredients, steps, caveats and source attribution in caption.md. Do not claim calories or storage duration without checked support.",
      "explanation": "This step helps you draft the knowledge-layer caption. A complete caption contains useful context and an honest recipe status. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A complete caption contains useful context and an honest recipe status.",
      "resources": [
        "native-production.md",
        "native.json",
        "caption.md"
      ],
      "checkpoint": {
        "what_is_being_checked": "Draft the knowledge-layer caption",
        "success_condition": "A complete caption contains useful context and an honest recipe status.",
        "how_to_verify": "Record the observed result for Draft the knowledge-layer caption. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "A complete caption contains useful context and an honest recipe status.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A complete caption contains useful context and an honest recipe status.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Draft the knowledge-layer caption?",
          "fix": "For Draft the knowledge-layer caption: Write topic, assembly problem, method, ingredients, steps, caveats and source attribution in caption.md. Do not claim calories or storage duration without checked support. Compare the actual output to A complete caption contains useful context and an honest recipe status.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "A complete caption contains useful context and an honest recipe status."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json, caption.md."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to draft the knowledge-layer caption. A complete caption contains useful context and an honest recipe status.",
        "demo": "Write topic, assembly problem, method, ingredients, steps, caveats and source attribution in caption.md. Do not claim calories or storage duration without checked support.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Draft the knowledge-layer caption, compare your own result with: A complete caption contains useful context and an honest recipe status.. Write topic, assembly problem, method, ingredients, steps, caveats and source attribution in caption.md. Do not claim calories or storage duration without checked support."
      },
      "video": {
        "purpose": "Demonstrate draft the knowledge-layer caption",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Write topic, assembly problem, method, ingredients, steps, caveats and source attribution in caption.md. Do not claim calories or storage duration without checked support. A complete caption contains useful context and an honest recipe status.",
        "on_screen_text": [
          "Draft the knowledge-layer caption",
          "A complete caption contains useful context and an honest recipe status."
        ],
        "screen_recording_instructions": [
          "Write topic, assembly problem, method, ingredients, steps, caveats and source attribution in caption.md. Do not claim calories or storage duration without checked support.",
          "A complete caption contains useful context and an honest recipe status."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "A complete caption contains useful context and an honest recipe status."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Write topic, assembly problem, method, ingredients, steps, caveats and source attribution in caption.md. Do not claim calories or storage duration without checked support.",
          "A complete caption contains useful context and an honest recipe status."
        ]
      },
      "step_id": "L09-S01",
      "lesson_id": "L09"
    },
    {
      "title": "Plan OCR-readable overlays",
      "purpose": "This step helps you plan OCR-readable overlays. A human phone-size reading test records what was legible.",
      "user_action": "Create a slide text list with large labels, high contrast and margins clear of UI overlays. View a draft at phone width and ask someone to identify the ingredients without the caption.",
      "explanation": "This step helps you plan OCR-readable overlays. A human phone-size reading test records what was legible. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A human phone-size reading test records what was legible.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Plan OCR-readable overlays",
        "success_condition": "A human phone-size reading test records what was legible.",
        "how_to_verify": "Record the observed result for Plan OCR-readable overlays. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "A human phone-size reading test records what was legible.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A human phone-size reading test records what was legible.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Plan OCR-readable overlays?",
          "fix": "For Plan OCR-readable overlays: Create a slide text list with large labels, high contrast and margins clear of UI overlays. View a draft at phone width and ask someone to identify the ingredients without the caption. Compare the actual output to A human phone-size reading test records what was legible.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "A human phone-size reading test records what was legible."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to plan OCR-readable overlays. A human phone-size reading test records what was legible.",
        "demo": "Create a slide text list with large labels, high contrast and margins clear of UI overlays. View a draft at phone width and ask someone to identify the ingredients without the caption.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Plan OCR-readable overlays, compare your own result with: A human phone-size reading test records what was legible.. Create a slide text list with large labels, high contrast and margins clear of UI overlays. View a draft at phone width and ask someone to identify the ingredients without the caption."
      },
      "video": {
        "purpose": "Demonstrate plan ocr-readable overlays",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Create a slide text list with large labels, high contrast and margins clear of UI overlays. View a draft at phone width and ask someone to identify the ingredients without the caption. A human phone-size reading test records what was legible.",
        "on_screen_text": [
          "Plan OCR-readable overlays",
          "A human phone-size reading test records what was legible."
        ],
        "screen_recording_instructions": [
          "Create a slide text list with large labels, high contrast and margins clear of UI overlays. View a draft at phone width and ask someone to identify the ingredients without the caption.",
          "A human phone-size reading test records what was legible."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "A human phone-size reading test records what was legible."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Create a slide text list with large labels, high contrast and margins clear of UI overlays. View a draft at phone width and ask someone to identify the ingredients without the caption.",
          "A human phone-size reading test records what was legible."
        ]
      },
      "step_id": "L10-S01",
      "lesson_id": "L10"
    },
    {
      "title": "Build the ten-slide carousel",
      "purpose": "This step helps you build the ten-slide carousel. Ten complete slide scripts deliver an assembly outcome.",
      "user_action": "Outline hook, problem, concept, method, diagram, common mistake, corrected approach, checklist, companion action and next step. Keep the public recipe sequence native; place pack validation commands in the companion resource.",
      "explanation": "This step helps you build the ten-slide carousel. Ten complete slide scripts deliver an assembly outcome. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Ten complete slide scripts deliver an assembly outcome.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Build the ten-slide carousel",
        "success_condition": "Ten complete slide scripts deliver an assembly outcome.",
        "how_to_verify": "Record the observed result for Build the ten-slide carousel. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "Ten complete slide scripts deliver an assembly outcome.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Ten complete slide scripts deliver an assembly outcome.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Build the ten-slide carousel?",
          "fix": "For Build the ten-slide carousel: Outline hook, problem, concept, method, diagram, common mistake, corrected approach, checklist, companion action and next step. Keep the public recipe sequence native; place pack validation commands in the companion resource. Compare the actual output to Ten complete slide scripts deliver an assembly outcome.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "Ten complete slide scripts deliver an assembly outcome."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to build the ten-slide carousel. Ten complete slide scripts deliver an assembly outcome.",
        "demo": "Outline hook, problem, concept, method, diagram, common mistake, corrected approach, checklist, companion action and next step. Keep the public recipe sequence native; place pack validation commands in the companion resource.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Build the ten-slide carousel, compare your own result with: Ten complete slide scripts deliver an assembly outcome.. Outline hook, problem, concept, method, diagram, common mistake, corrected approach, checklist, companion action and next step. Keep the public recipe sequence native; place pack validation commands in the companion resource."
      },
      "video": {
        "purpose": "Demonstrate build the ten-slide carousel",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Outline hook, problem, concept, method, diagram, common mistake, corrected approach, checklist, companion action and next step. Keep the public recipe sequence native; place pack validation commands in the companion resource. Ten complete slide scripts deliver an assembly outcome.",
        "on_screen_text": [
          "Build the ten-slide carousel",
          "Ten complete slide scripts deliver an assembly outcome."
        ],
        "screen_recording_instructions": [
          "Outline hook, problem, concept, method, diagram, common mistake, corrected approach, checklist, companion action and next step. Keep the public recipe sequence native; place pack validation commands in the companion resource.",
          "Ten complete slide scripts deliver an assembly outcome."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "Ten complete slide scripts deliver an assembly outcome."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Outline hook, problem, concept, method, diagram, common mistake, corrected approach, checklist, companion action and next step. Keep the public recipe sequence native; place pack validation commands in the companion resource.",
          "Ten complete slide scripts deliver an assembly outcome."
        ]
      },
      "step_id": "L11-S01",
      "lesson_id": "L11"
    },
    {
      "title": "Make a standalone Reel",
      "purpose": "This step helps you make a standalone Reel. A timestamped storyboard matches speech, image and text.",
      "user_action": "Storyboard question → answer → explanation → demonstration → next step in 30–60 seconds. Align jar footage, spoken ingredient names and captions; deliver one full answer rather than withholding a payoff.",
      "explanation": "This step helps you make a standalone Reel. A timestamped storyboard matches speech, image and text. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A timestamped storyboard matches speech, image and text.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Make a standalone Reel",
        "success_condition": "A timestamped storyboard matches speech, image and text.",
        "how_to_verify": "Record the observed result for Make a standalone Reel. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "A timestamped storyboard matches speech, image and text.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A timestamped storyboard matches speech, image and text.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Make a standalone Reel?",
          "fix": "For Make a standalone Reel: Storyboard question → answer → explanation → demonstration → next step in 30–60 seconds. Align jar footage, spoken ingredient names and captions; deliver one full answer rather than withholding a payoff. Compare the actual output to A timestamped storyboard matches speech, image and text.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "A timestamped storyboard matches speech, image and text."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to make a standalone Reel. A timestamped storyboard matches speech, image and text.",
        "demo": "Storyboard question → answer → explanation → demonstration → next step in 30–60 seconds. Align jar footage, spoken ingredient names and captions; deliver one full answer rather than withholding a payoff.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Make a standalone Reel, compare your own result with: A timestamped storyboard matches speech, image and text.. Storyboard question → answer → explanation → demonstration → next step in 30–60 seconds. Align jar footage, spoken ingredient names and captions; deliver one full answer rather than withholding a payoff."
      },
      "video": {
        "purpose": "Demonstrate make a standalone reel",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Storyboard question → answer → explanation → demonstration → next step in 30–60 seconds. Align jar footage, spoken ingredient names and captions; deliver one full answer rather than withholding a payoff. A timestamped storyboard matches speech, image and text.",
        "on_screen_text": [
          "Make a standalone Reel",
          "A timestamped storyboard matches speech, image and text."
        ],
        "screen_recording_instructions": [
          "Storyboard question → answer → explanation → demonstration → next step in 30–60 seconds. Align jar footage, spoken ingredient names and captions; deliver one full answer rather than withholding a payoff.",
          "A timestamped storyboard matches speech, image and text."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "A timestamped storyboard matches speech, image and text."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Storyboard question → answer → explanation → demonstration → next step in 30–60 seconds. Align jar footage, spoken ingredient names and captions; deliver one full answer rather than withholding a payoff.",
          "A timestamped storyboard matches speech, image and text."
        ]
      },
      "step_id": "L12-S01",
      "lesson_id": "L12"
    },
    {
      "title": "Connect the knowledge chain",
      "purpose": "This step helps you connect the knowledge chain. Five self-contained ideas and a next-step map exist.",
      "user_action": "Plan five independent food Reels and link them to the carousel, Highlight and full recipe page. Check each can be understood without earlier clips.",
      "explanation": "This step helps you connect the knowledge chain. Five self-contained ideas and a next-step map exist. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Five self-contained ideas and a next-step map exist.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Connect the knowledge chain",
        "success_condition": "Five self-contained ideas and a next-step map exist.",
        "how_to_verify": "Record the observed result for Connect the knowledge chain. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "Five self-contained ideas and a next-step map exist.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Five self-contained ideas and a next-step map exist.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Connect the knowledge chain?",
          "fix": "For Connect the knowledge chain: Plan five independent food Reels and link them to the carousel, Highlight and full recipe page. Check each can be understood without earlier clips. Compare the actual output to Five self-contained ideas and a next-step map exist.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "Five self-contained ideas and a next-step map exist."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to connect the knowledge chain. Five self-contained ideas and a next-step map exist.",
        "demo": "Plan five independent food Reels and link them to the carousel, Highlight and full recipe page. Check each can be understood without earlier clips.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Connect the knowledge chain, compare your own result with: Five self-contained ideas and a next-step map exist.. Plan five independent food Reels and link them to the carousel, Highlight and full recipe page. Check each can be understood without earlier clips."
      },
      "video": {
        "purpose": "Demonstrate connect the knowledge chain",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Plan five independent food Reels and link them to the carousel, Highlight and full recipe page. Check each can be understood without earlier clips. Five self-contained ideas and a next-step map exist.",
        "on_screen_text": [
          "Connect the knowledge chain",
          "Five self-contained ideas and a next-step map exist."
        ],
        "screen_recording_instructions": [
          "Plan five independent food Reels and link them to the carousel, Highlight and full recipe page. Check each can be understood without earlier clips.",
          "Five self-contained ideas and a next-step map exist."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "Five self-contained ideas and a next-step map exist."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Plan five independent food Reels and link them to the carousel, Highlight and full recipe page. Check each can be understood without earlier clips.",
          "Five self-contained ideas and a next-step map exist."
        ]
      },
      "step_id": "L13-S01",
      "lesson_id": "L13"
    },
    {
      "title": "Use Stories as a living lab",
      "purpose": "This step helps you use Stories as a living lab. A three-part Story plan has a permanent knowledge destination.",
      "user_action": "Draft a poll, a behind-the-scenes assembly image and a question sticker. Explain the 24-hour Story lifecycle and route a useful question to a permanent Highlight or corrected carousel.",
      "explanation": "This step helps you use Stories as a living lab. A three-part Story plan has a permanent knowledge destination. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A three-part Story plan has a permanent knowledge destination.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Use Stories as a living lab",
        "success_condition": "A three-part Story plan has a permanent knowledge destination.",
        "how_to_verify": "Record the observed result for Use Stories as a living lab. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "A three-part Story plan has a permanent knowledge destination.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A three-part Story plan has a permanent knowledge destination.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Use Stories as a living lab?",
          "fix": "For Use Stories as a living lab: Draft a poll, a behind-the-scenes assembly image and a question sticker. Explain the 24-hour Story lifecycle and route a useful question to a permanent Highlight or corrected carousel. Compare the actual output to A three-part Story plan has a permanent knowledge destination.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "A three-part Story plan has a permanent knowledge destination."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to use Stories as a living lab. A three-part Story plan has a permanent knowledge destination.",
        "demo": "Draft a poll, a behind-the-scenes assembly image and a question sticker. Explain the 24-hour Story lifecycle and route a useful question to a permanent Highlight or corrected carousel.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Use Stories as a living lab, compare your own result with: A three-part Story plan has a permanent knowledge destination.. Draft a poll, a behind-the-scenes assembly image and a question sticker. Explain the 24-hour Story lifecycle and route a useful question to a permanent Highlight or corrected carousel."
      },
      "video": {
        "purpose": "Demonstrate use stories as a living lab",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Draft a poll, a behind-the-scenes assembly image and a question sticker. Explain the 24-hour Story lifecycle and route a useful question to a permanent Highlight or corrected carousel. A three-part Story plan has a permanent knowledge destination.",
        "on_screen_text": [
          "Use Stories as a living lab",
          "A three-part Story plan has a permanent knowledge destination."
        ],
        "screen_recording_instructions": [
          "Draft a poll, a behind-the-scenes assembly image and a question sticker. Explain the 24-hour Story lifecycle and route a useful question to a permanent Highlight or corrected carousel.",
          "A three-part Story plan has a permanent knowledge destination."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "A three-part Story plan has a permanent knowledge destination."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Draft a poll, a behind-the-scenes assembly image and a question sticker. Explain the 24-hour Story lifecycle and route a useful question to a permanent Highlight or corrected carousel.",
          "A three-part Story plan has a permanent knowledge destination."
        ]
      },
      "step_id": "L14-S01",
      "lesson_id": "L14"
    },
    {
      "title": "Respond and verify community claims",
      "purpose": "This step helps you respond and verify community claims. Three response drafts apply a six-level evidence ladder.",
      "user_action": "Write replies to ingredient-substitution, missing-step and evidence questions. Classify opinion, anecdote, first-hand test, documented evidence, expert explanation and independently verified result.",
      "explanation": "This step helps you respond and verify community claims. Three response drafts apply a six-level evidence ladder. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Three response drafts apply a six-level evidence ladder.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Respond and verify community claims",
        "success_condition": "Three response drafts apply a six-level evidence ladder.",
        "how_to_verify": "Record the observed result for Respond and verify community claims. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "Three response drafts apply a six-level evidence ladder.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Three response drafts apply a six-level evidence ladder.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Respond and verify community claims?",
          "fix": "For Respond and verify community claims: Write replies to ingredient-substitution, missing-step and evidence questions. Classify opinion, anecdote, first-hand test, documented evidence, expert explanation and independently verified result. Compare the actual output to Three response drafts apply a six-level evidence ladder.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "Three response drafts apply a six-level evidence ladder."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to respond and verify community claims. Three response drafts apply a six-level evidence ladder.",
        "demo": "Write replies to ingredient-substitution, missing-step and evidence questions. Classify opinion, anecdote, first-hand test, documented evidence, expert explanation and independently verified result.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Respond and verify community claims, compare your own result with: Three response drafts apply a six-level evidence ladder.. Write replies to ingredient-substitution, missing-step and evidence questions. Classify opinion, anecdote, first-hand test, documented evidence, expert explanation and independently verified result."
      },
      "video": {
        "purpose": "Demonstrate respond and verify community claims",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Write replies to ingredient-substitution, missing-step and evidence questions. Classify opinion, anecdote, first-hand test, documented evidence, expert explanation and independently verified result. Three response drafts apply a six-level evidence ladder.",
        "on_screen_text": [
          "Respond and verify community claims",
          "Three response drafts apply a six-level evidence ladder."
        ],
        "screen_recording_instructions": [
          "Write replies to ingredient-substitution, missing-step and evidence questions. Classify opinion, anecdote, first-hand test, documented evidence, expert explanation and independently verified result.",
          "Three response drafts apply a six-level evidence ladder."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "Three response drafts apply a six-level evidence ladder."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Write replies to ingredient-substitution, missing-step and evidence questions. Classify opinion, anecdote, first-hand test, documented evidence, expert explanation and independently verified result.",
          "Three response drafts apply a six-level evidence ladder."
        ]
      },
      "step_id": "L15-S01",
      "lesson_id": "L15"
    },
    {
      "title": "Localize and define the food entities",
      "purpose": "This step helps you localize and define the food entities. Entity definitions and localization checks preserve the same meaning.",
      "user_action": "Translate a caption cue or prepare a fluent-review brief. Define rolled oats and overnight oats consistently and retain ingredient names across slide, transcript and glossary.",
      "explanation": "This step helps you localize and define the food entities. Entity definitions and localization checks preserve the same meaning. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Entity definitions and localization checks preserve the same meaning.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Localize and define the food entities",
        "success_condition": "Entity definitions and localization checks preserve the same meaning.",
        "how_to_verify": "Record the observed result for Localize and define the food entities. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "Entity definitions and localization checks preserve the same meaning.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Entity definitions and localization checks preserve the same meaning.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Localize and define the food entities?",
          "fix": "For Localize and define the food entities: Translate a caption cue or prepare a fluent-review brief. Define rolled oats and overnight oats consistently and retain ingredient names across slide, transcript and glossary. Compare the actual output to Entity definitions and localization checks preserve the same meaning.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "Entity definitions and localization checks preserve the same meaning."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to localize and define the food entities. Entity definitions and localization checks preserve the same meaning.",
        "demo": "Translate a caption cue or prepare a fluent-review brief. Define rolled oats and overnight oats consistently and retain ingredient names across slide, transcript and glossary.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Localize and define the food entities, compare your own result with: Entity definitions and localization checks preserve the same meaning.. Translate a caption cue or prepare a fluent-review brief. Define rolled oats and overnight oats consistently and retain ingredient names across slide, transcript and glossary."
      },
      "video": {
        "purpose": "Demonstrate localize and define the food entities",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Translate a caption cue or prepare a fluent-review brief. Define rolled oats and overnight oats consistently and retain ingredient names across slide, transcript and glossary. Entity definitions and localization checks preserve the same meaning.",
        "on_screen_text": [
          "Localize and define the food entities",
          "Entity definitions and localization checks preserve the same meaning."
        ],
        "screen_recording_instructions": [
          "Translate a caption cue or prepare a fluent-review brief. Define rolled oats and overnight oats consistently and retain ingredient names across slide, transcript and glossary.",
          "Entity definitions and localization checks preserve the same meaning."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "Entity definitions and localization checks preserve the same meaning."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Translate a caption cue or prepare a fluent-review brief. Define rolled oats and overnight oats consistently and retain ingredient names across slide, transcript and glossary.",
          "Entity definitions and localization checks preserve the same meaning."
        ]
      },
      "step_id": "L16-S01",
      "lesson_id": "L16"
    },
    {
      "title": "Build a food knowledge graph",
      "purpose": "This step helps you build a food knowledge graph. A connected graph has grounded entities and no unsupported benefit claim.",
      "user_action": "Connect ingredient → used in → breakfast jar and step → precedes → mixing. Include source recipe and creator attribution; distinguish the method from claimed health benefits.",
      "explanation": "This step helps you build a food knowledge graph. A connected graph has grounded entities and no unsupported benefit claim. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A connected graph has grounded entities and no unsupported benefit claim.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Build a food knowledge graph",
        "success_condition": "A connected graph has grounded entities and no unsupported benefit claim.",
        "how_to_verify": "Record the observed result for Build a food knowledge graph. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "A connected graph has grounded entities and no unsupported benefit claim.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A connected graph has grounded entities and no unsupported benefit claim.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Build a food knowledge graph?",
          "fix": "For Build a food knowledge graph: Connect ingredient → used in → breakfast jar and step → precedes → mixing. Include source recipe and creator attribution; distinguish the method from claimed health benefits. Compare the actual output to A connected graph has grounded entities and no unsupported benefit claim.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "A connected graph has grounded entities and no unsupported benefit claim."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to build a food knowledge graph. A connected graph has grounded entities and no unsupported benefit claim.",
        "demo": "Connect ingredient → used in → breakfast jar and step → precedes → mixing. Include source recipe and creator attribution; distinguish the method from claimed health benefits.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Build a food knowledge graph, compare your own result with: A connected graph has grounded entities and no unsupported benefit claim.. Connect ingredient → used in → breakfast jar and step → precedes → mixing. Include source recipe and creator attribution; distinguish the method from claimed health benefits."
      },
      "video": {
        "purpose": "Demonstrate build a food knowledge graph",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Connect ingredient → used in → breakfast jar and step → precedes → mixing. Include source recipe and creator attribution; distinguish the method from claimed health benefits. A connected graph has grounded entities and no unsupported benefit claim.",
        "on_screen_text": [
          "Build a food knowledge graph",
          "A connected graph has grounded entities and no unsupported benefit claim."
        ],
        "screen_recording_instructions": [
          "Connect ingredient → used in → breakfast jar and step → precedes → mixing. Include source recipe and creator attribution; distinguish the method from claimed health benefits.",
          "A connected graph has grounded entities and no unsupported benefit claim."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "A connected graph has grounded entities and no unsupported benefit claim."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Connect ingredient → used in → breakfast jar and step → precedes → mixing. Include source recipe and creator attribution; distinguish the method from claimed health benefits.",
          "A connected graph has grounded entities and no unsupported benefit claim."
        ]
      },
      "step_id": "L17-S01",
      "lesson_id": "L17"
    },
    {
      "title": "Plan the content factory",
      "purpose": "This step helps you plan the content factory. Eight native outputs share one checked source.",
      "user_action": "Derive Reel, carousel, Stories, YouTube explanation, TikTok demo, LinkedIn production case study, X observation and canonical recipe from one source. Show how a nightly B3 segment could supply original footage and questions.",
      "explanation": "This step helps you plan the content factory. Eight native outputs share one checked source. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Eight native outputs share one checked source.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Plan the content factory",
        "success_condition": "Eight native outputs share one checked source.",
        "how_to_verify": "Record the observed result for Plan the content factory. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "Eight native outputs share one checked source.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Eight native outputs share one checked source.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Plan the content factory?",
          "fix": "For Plan the content factory: Derive Reel, carousel, Stories, YouTube explanation, TikTok demo, LinkedIn production case study, X observation and canonical recipe from one source. Show how a nightly B3 segment could supply original footage and questions. Compare the actual output to Eight native outputs share one checked source.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "Eight native outputs share one checked source."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to plan the content factory. Eight native outputs share one checked source.",
        "demo": "Derive Reel, carousel, Stories, YouTube explanation, TikTok demo, LinkedIn production case study, X observation and canonical recipe from one source. Show how a nightly B3 segment could supply original footage and questions.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Plan the content factory, compare your own result with: Eight native outputs share one checked source.. Derive Reel, carousel, Stories, YouTube explanation, TikTok demo, LinkedIn production case study, X observation and canonical recipe from one source. Show how a nightly B3 segment could supply original footage and questions."
      },
      "video": {
        "purpose": "Demonstrate plan the content factory",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Derive Reel, carousel, Stories, YouTube explanation, TikTok demo, LinkedIn production case study, X observation and canonical recipe from one source. Show how a nightly B3 segment could supply original footage and questions. Eight native outputs share one checked source.",
        "on_screen_text": [
          "Plan the content factory",
          "Eight native outputs share one checked source."
        ],
        "screen_recording_instructions": [
          "Derive Reel, carousel, Stories, YouTube explanation, TikTok demo, LinkedIn production case study, X observation and canonical recipe from one source. Show how a nightly B3 segment could supply original footage and questions.",
          "Eight native outputs share one checked source."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "Eight native outputs share one checked source."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Derive Reel, carousel, Stories, YouTube explanation, TikTok demo, LinkedIn production case study, X observation and canonical recipe from one source. Show how a nightly B3 segment could supply original footage and questions.",
          "Eight native outputs share one checked source."
        ]
      },
      "step_id": "L18-S01",
      "lesson_id": "L18"
    },
    {
      "title": "Design the six-version capstone",
      "purpose": "This step helps you design the six-version capstone. Six versions show additive changes on one recipe topic.",
      "user_action": "Draft social, search, explicit-entity, retrieval, agent-card and provenance versions. Keep the recipe topic and audience fixed. Public visuals remain a food sequence; machine cards stay in a companion layer.",
      "explanation": "This step helps you design the six-version capstone. Six versions show additive changes on one recipe topic. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "15–25 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "capstone.md"
      ],
      "expected_result": "Six versions show additive changes on one recipe topic.",
      "resources": [
        "capstone.md"
      ],
      "checkpoint": {
        "what_is_being_checked": "Design the six-version capstone",
        "success_condition": "Six versions show additive changes on one recipe topic.",
        "how_to_verify": "Record the observed result for Design the six-version capstone. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "Six versions show additive changes on one recipe topic.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Six versions show additive changes on one recipe topic.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Design the six-version capstone?",
          "fix": "For Design the six-version capstone: Draft social, search, explicit-entity, retrieval, agent-card and provenance versions. Keep the recipe topic and audience fixed. Public visuals remain a food sequence; machine cards stay in a companion layer. Compare the actual output to Six versions show additive changes on one recipe topic.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "Six versions show additive changes on one recipe topic."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use capstone.md."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to design the six-version capstone. Six versions show additive changes on one recipe topic.",
        "demo": "Draft social, search, explicit-entity, retrieval, agent-card and provenance versions. Keep the recipe topic and audience fixed. Public visuals remain a food sequence; machine cards stay in a companion layer.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Design the six-version capstone, compare your own result with: Six versions show additive changes on one recipe topic.. Draft social, search, explicit-entity, retrieval, agent-card and provenance versions. Keep the recipe topic and audience fixed. Public visuals remain a food sequence; machine cards stay in a companion layer."
      },
      "video": {
        "purpose": "Demonstrate design the six-version capstone",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Draft social, search, explicit-entity, retrieval, agent-card and provenance versions. Keep the recipe topic and audience fixed. Public visuals remain a food sequence; machine cards stay in a companion layer. Six versions show additive changes on one recipe topic.",
        "on_screen_text": [
          "Design the six-version capstone",
          "Six versions show additive changes on one recipe topic."
        ],
        "screen_recording_instructions": [
          "Draft social, search, explicit-entity, retrieval, agent-card and provenance versions. Keep the recipe topic and audience fixed. Public visuals remain a food sequence; machine cards stay in a companion layer.",
          "Six versions show additive changes on one recipe topic."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "Six versions show additive changes on one recipe topic."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Draft social, search, explicit-entity, retrieval, agent-card and provenance versions. Keep the recipe topic and audience fixed. Public visuals remain a food sequence; machine cards stay in a companion layer.",
          "Six versions show additive changes on one recipe topic."
        ]
      },
      "step_id": "L19-S01",
      "lesson_id": "L19"
    },
    {
      "title": "Plan ten experiments and seven audit lenses",
      "purpose": "This step helps you plan ten experiments and seven audit lenses. Ten controlled proposals and seven review lenses have measurements and limits.",
      "user_action": "In experiments.md define hook, tags, overlay, localization, real-experience evidence, series, carousel, companion action, Story loop and full-stack tests. Review human, platform, search, AI, retrieval, agent and trust lenses.",
      "explanation": "This step helps you plan ten experiments and seven audit lenses. Ten controlled proposals and seven review lenses have measurements and limits. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "experiments.md",
        "metrics.json"
      ],
      "expected_result": "Ten controlled proposals and seven review lenses have measurements and limits.",
      "resources": [
        "experiments.md",
        "metrics.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Plan ten experiments and seven audit lenses",
        "success_condition": "Ten controlled proposals and seven review lenses have measurements and limits.",
        "how_to_verify": "Record the observed result for Plan ten experiments and seven audit lenses. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "Ten controlled proposals and seven review lenses have measurements and limits.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Ten controlled proposals and seven review lenses have measurements and limits.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Plan ten experiments and seven audit lenses?",
          "fix": "For Plan ten experiments and seven audit lenses: In experiments.md define hook, tags, overlay, localization, real-experience evidence, series, carousel, companion action, Story loop and full-stack tests. Review human, platform, search, AI, retrieval, agent and trust lenses. Compare the actual output to Ten controlled proposals and seven review lenses have measurements and limits.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "Ten controlled proposals and seven review lenses have measurements and limits."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use experiments.md, metrics.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to plan ten experiments and seven audit lenses. Ten controlled proposals and seven review lenses have measurements and limits.",
        "demo": "In experiments.md define hook, tags, overlay, localization, real-experience evidence, series, carousel, companion action, Story loop and full-stack tests. Review human, platform, search, AI, retrieval, agent and trust lenses.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Plan ten experiments and seven audit lenses, compare your own result with: Ten controlled proposals and seven review lenses have measurements and limits.. In experiments.md define hook, tags, overlay, localization, real-experience evidence, series, carousel, companion action, Story loop and full-stack tests. Review human, platform, search, AI, retrieval, agent and trust lenses."
      },
      "video": {
        "purpose": "Demonstrate plan ten experiments and seven audit lenses",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "In experiments.md define hook, tags, overlay, localization, real-experience evidence, series, carousel, companion action, Story loop and full-stack tests. Review human, platform, search, AI, retrieval, agent and trust lenses. Ten controlled proposals and seven review lenses have measurements and limits.",
        "on_screen_text": [
          "Plan ten experiments and seven audit lenses",
          "Ten controlled proposals and seven review lenses have measurements and limits."
        ],
        "screen_recording_instructions": [
          "In experiments.md define hook, tags, overlay, localization, real-experience evidence, series, carousel, companion action, Story loop and full-stack tests. Review human, platform, search, AI, retrieval, agent and trust lenses.",
          "Ten controlled proposals and seven review lenses have measurements and limits."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "Ten controlled proposals and seven review lenses have measurements and limits."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "In experiments.md define hook, tags, overlay, localization, real-experience evidence, series, carousel, companion action, Story loop and full-stack tests. Review human, platform, search, AI, retrieval, agent and trust lenses.",
          "Ten controlled proposals and seven review lenses have measurements and limits."
        ]
      },
      "step_id": "L20-S01",
      "lesson_id": "L20"
    },
    {
      "title": "Approve a complete visual package",
      "purpose": "This step helps you approve a complete visual package. A publication readiness decision names remaining evidence gaps.",
      "user_action": "Review actual photo permissions, recipe status, caption accuracy and machine-readable companion files. Separate current vision/captions from emerging browsing and speculative SI. No fabricated OCR accuracy or AI citation uplift. Review the primary native AI source in AGENT_OPERATING_MANUAL.md. Record documented inputs/outputs, actual account availability (or NOT VERIFIED), a useful native application and a privacy/failure limit. Use this platform’s CTA chain from agent-training.json, rather than importing another platform’s CTA.",
      "explanation": "This step helps you approve a complete visual package. A publication readiness decision names remaining evidence gaps. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json",
        "AGENT_OPERATING_MANUAL.md",
        "agent-training.json"
      ],
      "expected_result": "A publication readiness decision names remaining evidence gaps.",
      "resources": [
        "native-production.md",
        "native.json",
        "AGENT_OPERATING_MANUAL.md",
        "agent-training.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Approve a complete visual package",
        "success_condition": "A publication readiness decision names remaining evidence gaps.",
        "how_to_verify": "Record the observed result for Approve a complete visual package. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "A publication readiness decision names remaining evidence gaps.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A publication readiness decision names remaining evidence gaps.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Approve a complete visual package?",
          "fix": "For Approve a complete visual package: Review actual photo permissions, recipe status, caption accuracy and machine-readable companion files. Separate current vision/captions from emerging browsing and speculative SI. No fabricated OCR accuracy or AI citation uplift. Review the primary native AI source in AGENT_OPERATING_MANUAL.md. Record documented inputs/outputs, actual account availability (or NOT VERIFIED), a useful native application and a privacy/failure limit. Use this platform’s CTA chain from agent-training.json, rather than importing another platform’s CTA. Compare the actual output to A publication readiness decision names remaining evidence gaps.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "A publication readiness decision names remaining evidence gaps."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use native-production.md, native.json, AGENT_OPERATING_MANUAL.md, agent-training.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to approve a complete visual package. A publication readiness decision names remaining evidence gaps.",
        "demo": "Review actual photo permissions, recipe status, caption accuracy and machine-readable companion files. Separate current vision/captions from emerging browsing and speculative SI. No fabricated OCR accuracy or AI citation uplift. Review the primary native AI source in AGENT_OPERATING_MANUAL.md. Record documented inputs/outputs, actual account availability (or NOT VERIFIED), a useful native application and a privacy/failure limit. Use this platform’s CTA chain from agent-training.json, rather than importing another platform’s CTA.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Approve a complete visual package, compare your own result with: A publication readiness decision names remaining evidence gaps.. Review actual photo permissions, recipe status, caption accuracy and machine-readable companion files. Separate current vision/captions from emerging browsing and speculative SI. No fabricated OCR accuracy or AI citation uplift. Review the primary native AI source in AGENT_OPERATING_MANUAL.md. Record documented inputs/outputs, actual account availability (or NOT VERIFIED), a useful native application and a privacy/failure limit. Use this platform’s CTA chain from agent-training.json, rather than importing another platform’s CTA."
      },
      "video": {
        "purpose": "Demonstrate approve a complete visual package",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Review actual photo permissions, recipe status, caption accuracy and machine-readable companion files. Separate current vision/captions from emerging browsing and speculative SI. No fabricated OCR accuracy or AI citation uplift. Review the primary native AI source in AGENT_OPERATING_MANUAL.md. Record documented inputs/outputs, actual account availability (or NOT VERIFIED), a useful native application and a privacy/failure limit. Use this platform’s CTA chain from agent-training.json, rather than importing another platform’s CTA. A publication readiness decision names remaining evidence gaps.",
        "on_screen_text": [
          "Approve a complete visual package",
          "A publication readiness decision names remaining evidence gaps."
        ],
        "screen_recording_instructions": [
          "Review actual photo permissions, recipe status, caption accuracy and machine-readable companion files. Separate current vision/captions from emerging browsing and speculative SI. No fabricated OCR accuracy or AI citation uplift. Review the primary native AI source in AGENT_OPERATING_MANUAL.md. Record documented inputs/outputs, actual account availability (or NOT VERIFIED), a useful native application and a privacy/failure limit. Use this platform’s CTA chain from agent-training.json, rather than importing another platform’s CTA.",
          "A publication readiness decision names remaining evidence gaps."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "A publication readiness decision names remaining evidence gaps."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Review actual photo permissions, recipe status, caption accuracy and machine-readable companion files. Separate current vision/captions from emerging browsing and speculative SI. No fabricated OCR accuracy or AI citation uplift. Review the primary native AI source in AGENT_OPERATING_MANUAL.md. Record documented inputs/outputs, actual account availability (or NOT VERIFIED), a useful native application and a privacy/failure limit. Use this platform’s CTA chain from agent-training.json, rather than importing another platform’s CTA.",
          "A publication readiness decision names remaining evidence gaps."
        ]
      },
      "step_id": "L21-S01",
      "lesson_id": "L21"
    },
    {
      "title": "Set up the practice folder",
      "purpose": "This step helps you set up the practice folder. Python reports version 3.10 or newer and the terminal is in the extracted resource folder.",
      "user_action": "Download the resource ZIP at the top of this Build. Extract it into a new folder you own (for example C:\\BBBPractice on Windows, or ~/bbb-practice on macOS/Linux). Open a terminal in the extracted folder. Run the version command for your platform. All subsequent commands assume this folder.",
      "explanation": "This step helps you set up the practice folder. Python reports version 3.10 or newer and the terminal is in the extracted resource folder. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "command",
      "commands": {
        "windows": "python --version\nGet-Location\nGet-ChildItem",
        "macos": "python3 --version\npwd\nls",
        "linux": "python3 --version\npwd\nls"
      },
      "command_type": "shell",
      "required_inputs": [],
      "expected_result": "Python reports version 3.10 or newer and the terminal is in the extracted resource folder.",
      "resources": [],
      "checkpoint": {
        "what_is_being_checked": "Set up the practice folder",
        "success_condition": "Python reports version 3.10 or newer and the terminal is in the extracted resource folder.",
        "how_to_verify": "Record the observed result for Set up the practice folder. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "Python is 3.10 or newer.",
          "The listed files match the downloaded resources."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Python reports version 3.10 or newer and the terminal is in the extracted resource folder.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "Python or a file is not found",
          "likely_cause": "The terminal may be outside the extracted ZIP or Python may not be on PATH.",
          "diagnostic_question": "What exact result did you observe during Set up the practice folder?",
          "fix": "For Set up the practice folder: Download the resource ZIP at the top of this Build. Extract it into a new folder you own (for example C:\\BBBPractice on Windows, or ~/bbb-practice on macOS/Linux). Open a terminal in the extracted folder. Run the version command for your platform. All subsequent commands assume this folder. Compare the actual output to Python reports version 3.10 or newer and the terminal is in the extracted resource folder.",
          "alternative_fix": "Use py -3 on Windows if the Python launcher is installed. macOS/Linux commands use python3.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Install Python from python.org with the PATH option; reopen the terminal and change into the extracted folder."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "Python reports version 3.10 or newer and the terminal is in the extracted resource folder."
        },
        {
          "question": "Which files support this action?",
          "answer": "No file is required; record your specific observation."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to set up the practice folder. Python reports version 3.10 or newer and the terminal is in the extracted resource folder.",
        "demo": "Download the resource ZIP at the top of this Build. Extract it into a new folder you own (for example C:\\BBBPractice on Windows, or ~/bbb-practice on macOS/Linux). Open a terminal in the extracted folder. Run the version command for your platform. All subsequent commands assume this folder.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Install Python from python.org with the PATH option; reopen the terminal and change into the extracted folder.",
        "help": "For Set up the practice folder, compare your own result with: Python reports version 3.10 or newer and the terminal is in the extracted resource folder.. Download the resource ZIP at the top of this Build. Extract it into a new folder you own (for example C:\\BBBPractice on Windows, or ~/bbb-practice on macOS/Linux). Open a terminal in the extracted folder. Run the version command for your platform. All subsequent commands assume this folder."
      },
      "video": {
        "purpose": "Demonstrate set up the practice folder",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Download the resource ZIP at the top of this Build. Extract it into a new folder you own (for example C:\\BBBPractice on Windows, or ~/bbb-practice on macOS/Linux). Open a terminal in the extracted folder. Run the version command for your platform. All subsequent commands assume this folder. Python reports version 3.10 or newer and the terminal is in the extracted resource folder.",
        "on_screen_text": [
          "Set up the practice folder",
          "Python reports version 3.10 or newer and the terminal is in the extracted resource folder."
        ],
        "screen_recording_instructions": [
          "Download the resource ZIP at the top of this Build. Extract it into a new folder you own (for example C:\\BBBPractice on Windows, or ~/bbb-practice on macOS/Linux). Open a terminal in the extracted folder. Run the version command for your platform. All subsequent commands assume this folder.",
          "Python reports version 3.10 or newer and the terminal is in the extracted resource folder."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "Python reports version 3.10 or newer and the terminal is in the extracted resource folder."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Download the resource ZIP at the top of this Build. Extract it into a new folder you own (for example C:\\BBBPractice on Windows, or ~/bbb-practice on macOS/Linux). Open a terminal in the extracted folder. Run the version command for your platform. All subsequent commands assume this folder.",
          "Python reports version 3.10 or newer and the terminal is in the extracted resource folder."
        ]
      },
      "step_id": "L22-S01",
      "lesson_id": "L22"
    },
    {
      "title": "Audit the mechanism and claim ledger",
      "purpose": "This step helps you audit the mechanism and claim ledger. The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone.",
      "user_action": "Read mechanisms.md and claims.json. Attach a direct source and date to established claims; distinguish hypothesis from evidence and future SI from deployed features. Edit knowledge.json and rag.jsonl so each answer stands alone with named entities and a source.",
      "explanation": "This step helps you audit the mechanism and claim ledger. The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "mechanisms.md",
        "claims.json",
        "knowledge.json",
        "rag.jsonl"
      ],
      "expected_result": "The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone.",
      "resources": [
        "mechanisms.md",
        "claims.json",
        "knowledge.json",
        "rag.jsonl"
      ],
      "checkpoint": {
        "what_is_being_checked": "Audit the mechanism and claim ledger",
        "success_condition": "The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone.",
        "how_to_verify": "Record the observed result for Audit the mechanism and claim ledger. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Audit the mechanism and claim ledger?",
          "fix": "For Audit the mechanism and claim ledger: Read mechanisms.md and claims.json. Attach a direct source and date to established claims; distinguish hypothesis from evidence and future SI from deployed features. Edit knowledge.json and rag.jsonl so each answer stands alone with named entities and a source. Compare the actual output to The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use mechanisms.md, claims.json, knowledge.json, rag.jsonl."
        }
      ],
      "quiz": {
        "question": "Does a readable public post guarantee model training?",
        "answer_type": "single_choice",
        "choices": [
          "No; access, selection and training decisions are separate from post clarity.",
          "Yes; entity names force weight updates."
        ],
        "correct_answer": 0,
        "explanation": "Retrieval supplies inference context; training changes weights."
      },
      "coach": {
        "intro": "We are going to audit the mechanism and claim ledger. The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone.",
        "demo": "Read mechanisms.md and claims.json. Attach a direct source and date to established claims; distinguish hypothesis from evidence and future SI from deployed features. Edit knowledge.json and rag.jsonl so each answer stands alone with named entities and a source.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Audit the mechanism and claim ledger, compare your own result with: The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone.. Read mechanisms.md and claims.json. Attach a direct source and date to established claims; distinguish hypothesis from evidence and future SI from deployed features. Edit knowledge.json and rag.jsonl so each answer stands alone with named entities and a source."
      },
      "video": {
        "purpose": "Demonstrate audit the mechanism and claim ledger",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Read mechanisms.md and claims.json. Attach a direct source and date to established claims; distinguish hypothesis from evidence and future SI from deployed features. Edit knowledge.json and rag.jsonl so each answer stands alone with named entities and a source. The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone.",
        "on_screen_text": [
          "Audit the mechanism and claim ledger",
          "The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone."
        ],
        "screen_recording_instructions": [
          "Read mechanisms.md and claims.json. Attach a direct source and date to established claims; distinguish hypothesis from evidence and future SI from deployed features. Edit knowledge.json and rag.jsonl so each answer stands alone with named entities and a source.",
          "The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Read mechanisms.md and claims.json. Attach a direct source and date to established claims; distinguish hypothesis from evidence and future SI from deployed features. Edit knowledge.json and rag.jsonl so each answer stands alone with named entities and a source.",
          "The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone."
        ]
      },
      "step_id": "L22-S02",
      "lesson_id": "L22"
    },
    {
      "title": "Use the readiness calculator",
      "purpose": "This step helps you use the readiness calculator. A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit.",
      "user_action": "Open studio.html and score each dimension from 0 to 10 with a written reason. Download versions.json and rubric.json; replace the matching extracted files after reviewing them. Leave metrics.json NOT RUN unless you have actual observations. Use this platform’s displayed dimensions: divide by ten times the dimension count, then multiply by 100.",
      "explanation": "This step helps you use the readiness calculator. A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "studio.html",
        "rubric.json",
        "versions.json",
        "metrics.json"
      ],
      "expected_result": "A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit.",
      "resources": [
        "studio.html",
        "rubric.json",
        "versions.json",
        "metrics.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Use the readiness calculator",
        "success_condition": "A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit.",
        "how_to_verify": "Record the observed result for Use the readiness calculator. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [
          "READINESS"
        ],
        "user_visible_success_message": "Evidence saved. A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Use the readiness calculator?",
          "fix": "For Use the readiness calculator: Open studio.html and score each dimension from 0 to 10 with a written reason. Download versions.json and rubric.json; replace the matching extracted files after reviewing them. Leave metrics.json NOT RUN unless you have actual observations. Instagram uses the dimensions shown in its rubric: divide the total by ten times the dimension count, then multiply by 100. Compare the actual output to A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use studio.html, rubric.json, versions.json, metrics.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to use the readiness calculator. A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit.",
        "demo": "Open studio.html and score each dimension from 0 to 10 with a written reason. Download versions.json and rubric.json; replace the matching extracted files after reviewing them. Leave metrics.json NOT RUN unless you have actual observations. Instagram uses the dimensions shown in its rubric: divide the total by ten times the dimension count, then multiply by 100.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Use the readiness calculator, compare your own result with: A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit.. Open studio.html and score each dimension from 0 to 10 with a written reason. Download versions.json and rubric.json; replace the matching extracted files after reviewing them. Leave metrics.json NOT RUN unless you have actual observations. Instagram uses the dimensions shown in its rubric: divide the total by ten times the dimension count, then multiply by 100."
      },
      "video": {
        "purpose": "Demonstrate use the readiness calculator",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Open studio.html and score each dimension from 0 to 10 with a written reason. Download versions.json and rubric.json; replace the matching extracted files after reviewing them. Leave metrics.json NOT RUN unless you have actual observations. Instagram uses the dimensions shown in its rubric: divide the total by ten times the dimension count, then multiply by 100. A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit.",
        "on_screen_text": [
          "Use the readiness calculator",
          "A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit."
        ],
        "screen_recording_instructions": [
          "Open studio.html and score each dimension from 0 to 10 with a written reason. Download versions.json and rubric.json; replace the matching extracted files after reviewing them. Leave metrics.json NOT RUN unless you have actual observations. Use this platform’s displayed dimensions: divide by ten times the dimension count, then multiply by 100.",
          "A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Open studio.html and score each dimension from 0 to 10 with a written reason. Download versions.json and rubric.json; replace the matching extracted files after reviewing them. Leave metrics.json NOT RUN unless you have actual observations. Instagram uses the dimensions shown in its rubric: divide the total by ten times the dimension count, then multiply by 100.",
          "A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit."
        ]
      },
      "step_id": "L23-S01",
      "lesson_id": "L23"
    },
    {
      "title": "Hash and lint the reviewed files",
      "purpose": "This step helps you hash and lint the reviewed files. HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric.",
      "user_action": "Review your changes first. Run the hash command, then lint and score. Inspect report.json. Commands use the current extracted resource folder; PowerShell runs python, macOS zsh and Linux bash run python3. A missing field must be corrected before hashing again.",
      "explanation": "This step helps you hash and lint the reviewed files. HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "command",
      "commands": {
        "windows": "python media_pack.py hash\npython media_pack.py lint\npython media_pack.py score",
        "macos": "python3 media_pack.py hash\npython3 media_pack.py lint\npython3 media_pack.py score",
        "linux": "python3 media_pack.py hash\npython3 media_pack.py lint\npython3 media_pack.py score"
      },
      "command_type": "shell",
      "required_inputs": [
        "media_pack.py",
        "agent-card.json"
      ],
      "expected_result": "HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric.",
      "resources": [
        "media_pack.py",
        "agent-card.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Hash and lint the reviewed files",
        "success_condition": "HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric.",
        "how_to_verify": "Record the observed result for Hash and lint the reviewed files. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [
          "MEDIA PASS"
        ],
        "user_visible_success_message": "Evidence saved. HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Hash and lint the reviewed files?",
          "fix": "For Hash and lint the reviewed files: Review your changes first. Run the hash command, then lint and score. Inspect report.json. Commands use the current extracted resource folder; PowerShell runs python, macOS zsh and Linux bash run python3. A missing field must be corrected before hashing again. Compare the actual output to HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use media_pack.py, agent-card.json."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to hash and lint the reviewed files. HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric.",
        "demo": "Review your changes first. Run the hash command, then lint and score. Inspect report.json. Commands use the current extracted resource folder; PowerShell runs python, macOS zsh and Linux bash run python3. A missing field must be corrected before hashing again.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Hash and lint the reviewed files, compare your own result with: HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric.. Review your changes first. Run the hash command, then lint and score. Inspect report.json. Commands use the current extracted resource folder; PowerShell runs python, macOS zsh and Linux bash run python3. A missing field must be corrected before hashing again."
      },
      "video": {
        "purpose": "Demonstrate hash and lint the reviewed files",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Review your changes first. Run the hash command, then lint and score. Inspect report.json. Commands use the current extracted resource folder; PowerShell runs python, macOS zsh and Linux bash run python3. A missing field must be corrected before hashing again. HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric.",
        "on_screen_text": [
          "Hash and lint the reviewed files",
          "HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric."
        ],
        "screen_recording_instructions": [
          "Review your changes first. Run the hash command, then lint and score. Inspect report.json. Commands use the current extracted resource folder; PowerShell runs python, macOS zsh and Linux bash run python3. A missing field must be corrected before hashing again.",
          "HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Review your changes first. Run the hash command, then lint and score. Inspect report.json. Commands use the current extracted resource folder; PowerShell runs python, macOS zsh and Linux bash run python3. A missing field must be corrected before hashing again.",
          "HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric."
        ]
      },
      "step_id": "L23-S02",
      "lesson_id": "L23"
    },
    {
      "title": "Prove changed bytes and broken content fail",
      "purpose": "This step helps you prove changed bytes and broken content fail. A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS.",
      "user_action": "First change versions.json B.topic to a different topic and save it. Run lint and retain MEDIA FAIL with exit 1. Restore the original topic, review all changes, run hash, then lint and retain MEDIA PASS with exit 0.",
      "explanation": "This step helps you prove changed bytes and broken content fail. A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "command",
      "commands": {
        "windows": "python media_pack.py lint\n# After correcting and reviewing the topic:\npython media_pack.py hash\npython media_pack.py lint",
        "macos": "python3 media_pack.py lint\n# After correcting and reviewing the topic:\npython3 media_pack.py hash\npython3 media_pack.py lint",
        "linux": "python3 media_pack.py lint\n# After correcting and reviewing the topic:\npython3 media_pack.py hash\npython3 media_pack.py lint"
      },
      "command_type": "shell",
      "required_inputs": [
        "versions.json",
        "media_pack.py"
      ],
      "expected_result": "A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS.",
      "resources": [
        "versions.json",
        "media_pack.py"
      ],
      "checkpoint": {
        "what_is_being_checked": "Prove changed bytes and broken content fail",
        "success_condition": "A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS.",
        "how_to_verify": "Record the observed result for Prove changed bytes and broken content fail. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [
          "MEDIA FAIL",
          "MEDIA PASS"
        ],
        "user_visible_success_message": "Evidence saved. A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Prove changed bytes and broken content fail?",
          "fix": "For Prove changed bytes and broken content fail: Change versions.json B.topic to a different topic. Run lint and retain MEDIA FAIL. Restore the same topic, review the repair, hash and lint again. Do not weaken the checker or present a structural pass as factual/media verification. Compare the actual output to A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use versions.json, media_pack.py."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to prove changed bytes and broken content fail. A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS.",
        "demo": "Change versions.json B.topic to a different topic. Run lint and retain MEDIA FAIL. Restore the same topic, review the repair, hash and lint again. Do not weaken the checker or present a structural pass as factual/media verification.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Prove changed bytes and broken content fail, compare your own result with: A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS.. Change versions.json B.topic to a different topic. Run lint and retain MEDIA FAIL. Restore the same topic, review the repair, hash and lint again. Do not weaken the checker or present a structural pass as factual/media verification."
      },
      "video": {
        "purpose": "Demonstrate prove changed bytes and broken content fail",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Change versions.json B.topic to a different topic. Run lint and retain MEDIA FAIL. Restore the same topic, review the repair, hash and lint again. Do not weaken the checker or present a structural pass as factual/media verification. A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS.",
        "on_screen_text": [
          "Prove changed bytes and broken content fail",
          "A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS."
        ],
        "screen_recording_instructions": [
          "First change versions.json B.topic to a different topic and save it. Run lint and retain MEDIA FAIL with exit 1. Restore the original topic, review all changes, run hash, then lint and retain MEDIA PASS with exit 0.",
          "A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Change versions.json B.topic to a different topic. Run lint and retain MEDIA FAIL. Restore the same topic, review the repair, hash and lint again. Do not weaken the checker or present a structural pass as factual/media verification.",
          "A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS."
        ]
      },
      "step_id": "L23-S03",
      "lesson_id": "L23"
    },
    {
      "title": "Run a source-linked retrieval probe",
      "purpose": "This step helps you run a source-linked retrieval probe. The relevant query returns source-linked chunks; the unrelated query abstains.",
      "user_action": "Run the supplied question, then an unrelated query. Inspect the answer and source. This standard-library demo uses lexical word overlap, not embeddings, a vector database or an AI citation measurement. Save actual OS command/exit/output and mark other OS branches unverified.",
      "explanation": "This step helps you run a source-linked retrieval probe. The relevant query returns source-linked chunks; the unrelated query abstains. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "command",
      "commands": {
        "windows": "python media_pack.py retrieve --query \"How can an overnight oats carousel remain understandable outside its caption?\"\npython media_pack.py retrieve --query \"quasar waffle weather\"",
        "macos": "python3 media_pack.py retrieve --query \"How can an overnight oats carousel remain understandable outside its caption?\"\npython3 media_pack.py retrieve --query \"quasar waffle weather\"",
        "linux": "python3 media_pack.py retrieve --query \"How can an overnight oats carousel remain understandable outside its caption?\"\npython3 media_pack.py retrieve --query \"quasar waffle weather\""
      },
      "command_type": "shell",
      "required_inputs": [
        "media_pack.py",
        "rag.jsonl"
      ],
      "expected_result": "The relevant query returns source-linked chunks; the unrelated query abstains. The source label names the synthetic course draft, not Instagram’s ranking article as a recipe authority.",
      "resources": [
        "media_pack.py",
        "rag.jsonl"
      ],
      "checkpoint": {
        "what_is_being_checked": "Run a source-linked retrieval probe",
        "success_condition": "The relevant query returns source-linked chunks; the unrelated query abstains.",
        "how_to_verify": "Record the observed result for Run a source-linked retrieval probe. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "The relevant query returns source-linked chunks; the unrelated query abstains.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. The relevant query returns source-linked chunks; the unrelated query abstains.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Run a source-linked retrieval probe?",
          "fix": "For Run a source-linked retrieval probe: Run the supplied question, then an unrelated query. Inspect the answer and source. This standard-library demo uses lexical word overlap, not embeddings, a vector database or an AI citation measurement. Save actual OS command/exit/output and mark other OS branches unverified. Compare the actual output to The relevant query returns source-linked chunks; the unrelated query abstains.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "The relevant query returns source-linked chunks; the unrelated query abstains. The source label names the synthetic course draft, not Instagram’s ranking article as a recipe authority."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use media_pack.py, rag.jsonl."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to run a source-linked retrieval probe. The relevant query returns source-linked chunks; the unrelated query abstains.",
        "demo": "Run the supplied question, then an unrelated query. Inspect the answer and source. This standard-library demo uses lexical word overlap, not embeddings, a vector database or an AI citation measurement. Save actual OS command/exit/output and mark other OS branches unverified.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Run a source-linked retrieval probe, compare your own result with: The relevant query returns source-linked chunks; the unrelated query abstains.. Run the supplied question, then an unrelated query. Inspect the answer and source. This standard-library demo uses lexical word overlap, not embeddings, a vector database or an AI citation measurement. Save actual OS command/exit/output and mark other OS branches unverified."
      },
      "video": {
        "purpose": "Demonstrate run a source-linked retrieval probe",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Run the supplied question, then an unrelated query. Inspect the answer and source. This standard-library demo uses lexical word overlap, not embeddings, a vector database or an AI citation measurement. Save actual OS command/exit/output and mark other OS branches unverified. The relevant query returns source-linked chunks; the unrelated query abstains.",
        "on_screen_text": [
          "Run a source-linked retrieval probe",
          "The relevant query returns source-linked chunks; the unrelated query abstains."
        ],
        "screen_recording_instructions": [
          "Run the supplied question, then an unrelated query. Inspect the answer and source. This standard-library demo uses lexical word overlap, not embeddings, a vector database or an AI citation measurement. Save actual OS command/exit/output and mark other OS branches unverified.",
          "The relevant query returns source-linked chunks; the unrelated query abstains. The source label names the synthetic course draft, not Instagram’s ranking article as a recipe authority."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "The relevant query returns source-linked chunks; the unrelated query abstains."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Run the supplied question, then an unrelated query. Inspect the answer and source. This standard-library demo uses lexical word overlap, not embeddings, a vector database or an AI citation measurement. Save actual OS command/exit/output and mark other OS branches unverified.",
          "The relevant query returns source-linked chunks; the unrelated query abstains."
        ]
      },
      "step_id": "L24-S01",
      "lesson_id": "L24"
    },
    {
      "title": "Record provenance and a human approval decision",
      "purpose": "This step helps you record provenance and a human approval decision. The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision.",
      "user_action": "Use provenance-notes.md to record author, capture/source dates, rights, AI assistance and unresolved claims. SHA256 detects byte changes but does not sign the file or prove truth. Read the source/command cards, review the native capstone and export course evidence. Actual publication requires your own account, current rules and a human decision.",
      "explanation": "This step helps you record provenance and a human approval decision. The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "provenance-notes.md",
        "agent-card.json",
        "capstone.md"
      ],
      "expected_result": "The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision.",
      "resources": [
        "provenance-notes.md",
        "agent-card.json",
        "capstone.md"
      ],
      "checkpoint": {
        "what_is_being_checked": "Record provenance and a human approval decision",
        "success_condition": "The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision.",
        "how_to_verify": "Record the observed result for Record provenance and a human approval decision. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Record provenance and a human approval decision?",
          "fix": "For Record provenance and a human approval decision: Use provenance-notes.md to record author, capture/source dates, rights, AI assistance and unresolved claims. SHA256 detects byte changes but does not sign the file or prove truth. Read the source/command cards, review the native capstone and export course evidence. Actual publication requires your own account, current rules and a human decision. Compare the actual output to The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use provenance-notes.md, agent-card.json, capstone.md."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to record provenance and a human approval decision. The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision.",
        "demo": "Use provenance-notes.md to record author, capture/source dates, rights, AI assistance and unresolved claims. SHA256 detects byte changes but does not sign the file or prove truth. Read the source/command cards, review the native capstone and export course evidence. Actual publication requires your own account, current rules and a human decision.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Record provenance and a human approval decision, compare your own result with: The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision.. Use provenance-notes.md to record author, capture/source dates, rights, AI assistance and unresolved claims. SHA256 detects byte changes but does not sign the file or prove truth. Read the source/command cards, review the native capstone and export course evidence. Actual publication requires your own account, current rules and a human decision."
      },
      "video": {
        "purpose": "Demonstrate record provenance and a human approval decision",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Use provenance-notes.md to record author, capture/source dates, rights, AI assistance and unresolved claims. SHA256 detects byte changes but does not sign the file or prove truth. Read the source/command cards, review the native capstone and export course evidence. Actual publication requires your own account, current rules and a human decision. The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision.",
        "on_screen_text": [
          "Record provenance and a human approval decision",
          "The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision."
        ],
        "screen_recording_instructions": [
          "Use provenance-notes.md to record author, capture/source dates, rights, AI assistance and unresolved claims. SHA256 detects byte changes but does not sign the file or prove truth. Read the source/command cards, review the native capstone and export course evidence. Actual publication requires your own account, current rules and a human decision.",
          "The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Use provenance-notes.md to record author, capture/source dates, rights, AI assistance and unresolved claims. SHA256 detects byte changes but does not sign the file or prove truth. Read the source/command cards, review the native capstone and export course evidence. Actual publication requires your own account, current rules and a human decision.",
          "The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision."
        ]
      },
      "step_id": "L24-S02",
      "lesson_id": "L24"
    },
    {
      "title": "Write a repeatable onboarding checklist",
      "purpose": "This step helps you write a repeatable onboarding checklist. The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification.",
      "user_action": "Fill in onboarding-checklist.md for your agent. Record AGENTS.md, the tool’s user settings and memory folder, the assigned workspace, permissions, guard location, backup schedule, and a final proof task. Keep the checklist in your project.",
      "explanation": "This step helps you write a repeatable onboarding checklist. The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "15–25 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "onboarding-checklist.md"
      ],
      "expected_result": "The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification.",
      "resources": [
        "onboarding-checklist.md"
      ],
      "checkpoint": {
        "what_is_being_checked": "Write a repeatable onboarding checklist",
        "success_condition": "The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification.",
        "how_to_verify": "Record the observed result for Write a repeatable onboarding checklist. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Write a repeatable onboarding checklist?",
          "fix": "For Write a repeatable onboarding checklist: Fill in onboarding-checklist.md for your agent. Record AGENTS.md, the tool’s user settings and memory folder, the assigned workspace, permissions, guard location, backup schedule, and a final proof task. Keep the checklist in your project. Compare the actual output to The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use onboarding-checklist.md."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to write a repeatable onboarding checklist. The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification.",
        "demo": "Fill in onboarding-checklist.md for your agent. Record AGENTS.md, the tool’s user settings and memory folder, the assigned workspace, permissions, guard location, backup schedule, and a final proof task. Keep the checklist in your project.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Write a repeatable onboarding checklist, compare your own result with: The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification.. Fill in onboarding-checklist.md for your agent. Record AGENTS.md, the tool’s user settings and memory folder, the assigned workspace, permissions, guard location, backup schedule, and a final proof task. Keep the checklist in your project."
      },
      "video": {
        "purpose": "Demonstrate write a repeatable onboarding checklist",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Fill in onboarding-checklist.md for your agent. Record AGENTS.md, the tool’s user settings and memory folder, the assigned workspace, permissions, guard location, backup schedule, and a final proof task. Keep the checklist in your project. The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification.",
        "on_screen_text": [
          "Write a repeatable onboarding checklist",
          "The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification."
        ],
        "screen_recording_instructions": [
          "Fill in onboarding-checklist.md for your agent. Record AGENTS.md, the tool’s user settings and memory folder, the assigned workspace, permissions, guard location, backup schedule, and a final proof task. Keep the checklist in your project.",
          "The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Fill in onboarding-checklist.md for your agent. Record AGENTS.md, the tool’s user settings and memory folder, the assigned workspace, permissions, guard location, backup schedule, and a final proof task. Keep the checklist in your project.",
          "The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification."
        ]
      },
      "step_id": "L25-S01",
      "lesson_id": "L25"
    },
    {
      "title": "Demonstrate the variable-path limit safely",
      "purpose": "This step helps you demonstrate the variable-path limit safely. GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed.",
      "user_action": "Run workspace_guard.py --self-test. Read the source: the target is resolved before deciding. The variable_target case points at the home folder but performs no filesystem operation. Compare this with a hook that sees only command text.",
      "explanation": "This step helps you demonstrate the variable-path limit safely. GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "command",
      "commands": {
        "windows": "python workspace_guard.py --self-test",
        "macos": "python3 workspace_guard.py --self-test",
        "linux": "python3 workspace_guard.py --self-test"
      },
      "command_type": "shell",
      "required_inputs": [
        "workspace_guard.py"
      ],
      "expected_result": "GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed.",
      "resources": [
        "workspace_guard.py"
      ],
      "checkpoint": {
        "what_is_being_checked": "Demonstrate the variable-path limit safely",
        "success_condition": "GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed.",
        "how_to_verify": "Record the observed result for Demonstrate the variable-path limit safely. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [
          "GUARD PASS"
        ],
        "user_visible_success_message": "Evidence saved. GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Demonstrate the variable-path limit safely?",
          "fix": "For Demonstrate the variable-path limit safely: Run workspace_guard.py --self-test. Read the source: the target is resolved before deciding. The variable_target case points at the home folder but performs no filesystem operation. Compare this with a hook that sees only command text. Compare the actual output to GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use workspace_guard.py."
        }
      ],
      "quiz": {
        "question": "Does a command-text hook guarantee safety for a path computed inside a script?",
        "answer_type": "single_choice",
        "choices": [
          "No; add enforcement at the resolved operation boundary and independent recovery.",
          "Yes, because the command looks harmless."
        ],
        "correct_answer": 0,
        "explanation": "The profile-wipe failure can involve a runtime variable whose value the text hook cannot see."
      },
      "coach": {
        "intro": "We are going to demonstrate the variable-path limit safely. GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed.",
        "demo": "Run workspace_guard.py --self-test. Read the source: the target is resolved before deciding. The variable_target case points at the home folder but performs no filesystem operation. Compare this with a hook that sees only command text.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Demonstrate the variable-path limit safely, compare your own result with: GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed.. Run workspace_guard.py --self-test. Read the source: the target is resolved before deciding. The variable_target case points at the home folder but performs no filesystem operation. Compare this with a hook that sees only command text."
      },
      "video": {
        "purpose": "Demonstrate demonstrate the variable-path limit safely",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Run workspace_guard.py --self-test. Read the source: the target is resolved before deciding. The variable_target case points at the home folder but performs no filesystem operation. Compare this with a hook that sees only command text. GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed.",
        "on_screen_text": [
          "Demonstrate the variable-path limit safely",
          "GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed."
        ],
        "screen_recording_instructions": [
          "Run workspace_guard.py --self-test. Read the source: the target is resolved before deciding. The variable_target case points at the home folder but performs no filesystem operation. Compare this with a hook that sees only command text.",
          "GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Run workspace_guard.py --self-test. Read the source: the target is resolved before deciding. The variable_target case points at the home folder but performs no filesystem operation. Compare this with a hook that sees only command text.",
          "GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed."
        ]
      },
      "step_id": "L25-S02",
      "lesson_id": "L25"
    },
    {
      "title": "Verify the actual protection in your tool",
      "purpose": "This step helps you verify the actual protection in your tool. A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation.",
      "user_action": "For CLI tools, open the hook/permissions screen and confirm the configured guard is active. Use your tool’s documented pre-command hook protocol; inspect workspace_guard.py from the resource pack; it is a demonstration, not an installed CLI hook. Run a harmless directory listing, then a guard dry-run targeting the profile. Do not execute a destructive profile probe. If you use a hosted agent, do not assume a local shell hook protects its remote computer: use project-only tasks and reviewed actions, with backups. If no agent is used in this course, record the demonstration only. A hook is active only after a real tool-specific refusal test; otherwise record NOT INSTALLED with the reason.",
      "explanation": "This step helps you verify the actual protection in your tool. A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "inspect",
      "commands": {
        "all": "",
        "windows": "python workspace_guard.py --self-test\npython workspace_guard.py --target \"$env:USERPROFILE\"",
        "macos": "python3 workspace_guard.py --self-test\npython3 workspace_guard.py --target \"$HOME\"",
        "linux": "python3 workspace_guard.py --self-test\npython3 workspace_guard.py --target \"$HOME\""
      },
      "command_type": "shell",
      "required_inputs": [
        "workspace_guard.py",
        "onboarding-checklist.md"
      ],
      "expected_result": "A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation.",
      "resources": [
        "workspace_guard.py",
        "onboarding-checklist.md"
      ],
      "checkpoint": {
        "what_is_being_checked": "Verify the actual protection in your tool",
        "success_condition": "A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation.",
        "how_to_verify": "Record the observed result for Verify the actual protection in your tool. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "The harmless command succeeds.",
          "The boundary dry-run denies a profile target.",
          "I recorded the tool’s active hook state, or explicitly recorded that this tool has no working local guard."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true,
        "tokens_any": [
          [
            "DENY"
          ],
          [
            "NOT INSTALLED"
          ]
        ]
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Verify the actual protection in your tool?",
          "fix": "For Verify the actual protection in your tool: For CLI tools, open the hook/permissions screen and confirm the configured guard is active. Use your tool’s documented pre-command hook protocol; the BBB working reference is linked in Sources. Run a harmless directory listing, then a guard dry-run targeting the profile. Do not execute a destructive profile probe. Grok Bot has no proven local shell guard here: use project-only tasks and reviewed actions, with backups. Compare the actual output to A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use workspace_guard.py, onboarding-checklist.md."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to verify the actual protection in your tool. A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation.",
        "demo": "For CLI tools, open the hook/permissions screen and confirm the configured guard is active. Use your tool’s documented pre-command hook protocol; the BBB working reference is linked in Sources. Run a harmless directory listing, then a guard dry-run targeting the profile. Do not execute a destructive profile probe. Grok Bot has no proven local shell guard here: use project-only tasks and reviewed actions, with backups.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Verify the actual protection in your tool, compare your own result with: A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation.. For CLI tools, open the hook/permissions screen and confirm the configured guard is active. Use your tool’s documented pre-command hook protocol; the BBB working reference is linked in Sources. Run a harmless directory listing, then a guard dry-run targeting the profile. Do not execute a destructive profile probe. Grok Bot has no proven local shell guard here: use project-only tasks and reviewed actions, with backups."
      },
      "video": {
        "purpose": "Demonstrate verify the actual protection in your tool",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "For CLI tools, open the hook/permissions screen and confirm the configured guard is active. Use your tool’s documented pre-command hook protocol; the BBB working reference is linked in Sources. Run a harmless directory listing, then a guard dry-run targeting the profile. Do not execute a destructive profile probe. Grok Bot has no proven local shell guard here: use project-only tasks and reviewed actions, with backups. A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation.",
        "on_screen_text": [
          "Verify the actual protection in your tool",
          "A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation."
        ],
        "screen_recording_instructions": [
          "For CLI tools, open the hook/permissions screen and confirm the configured guard is active. Use your tool’s documented pre-command hook protocol; inspect workspace_guard.py from the resource pack; it is a demonstration, not an installed CLI hook. Run a harmless directory listing, then a guard dry-run targeting the profile. Do not execute a destructive profile probe. If you use a hosted agent, do not assume a local shell hook protects its remote computer: use project-only tasks and reviewed actions, with backups. If no agent is used in this course, record the demonstration only. A hook is active only after a real tool-specific refusal test; otherwise record NOT INSTALLED with the reason.",
          "A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "For CLI tools, open the hook/permissions screen and confirm the configured guard is active. Use your tool’s documented pre-command hook protocol; the BBB working reference is linked in Sources. Run a harmless directory listing, then a guard dry-run targeting the profile. Do not execute a destructive profile probe. Grok Bot has no proven local shell guard here: use project-only tasks and reviewed actions, with backups.",
          "A harmless command runs, the guard dry-run returns DENY, and the checklist records the actual hook protocol and active state or the Grok Bot limitation."
        ]
      },
      "step_id": "L25-S03",
      "lesson_id": "L25"
    },
    {
      "title": "Enable a real backup of memory and project files",
      "purpose": "This step helps you enable a real backup of memory and project files. A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded.",
      "user_action": "Connect a second backup drive. Windows: configure System Protection as additional recovery and use a scheduled copy/File History that explicitly includes hidden agent folders. macOS: configure Time Machine and verify dot folders are included. Linux: use a home backup such as restic/Deja Dup; Timeshift omits /home by default. Download the copy-only profile backup script for your platform, inspect it, and adapt the folder list to your tool. Record the last successful scheduled run; protect backup access because it may contain credentials. On Windows, review the script, unblock only that downloaded file, then run it with the shown process-only RemoteSigned policy. Group Policy can still refuse it; report that limitation without changing machine policy.",
      "explanation": "This step helps you enable a real backup of memory and project files. A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "15–25 min",
      "action_type": "command",
      "commands": {
        "windows": "# Read the extracted script before unblocking this single file.\nGet-Content .\\profile-backup.ps1\nUnblock-File -LiteralPath .\\profile-backup.ps1\npowershell.exe -NoProfile -ExecutionPolicy RemoteSigned -File .\\profile-backup.ps1 -Destination D:\\Backups\\llm-profiles",
        "macos": "bash profile-backup.sh /Volumes/YourBackup/llm-profiles",
        "linux": "bash profile-backup.sh /media/YourBackup/llm-profiles"
      },
      "command_type": "shell",
      "required_inputs": [
        "profile-backup.ps1",
        "profile-backup.sh",
        "onboarding-checklist.md"
      ],
      "expected_result": "A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded.",
      "resources": [
        "profile-backup.ps1",
        "profile-backup.sh",
        "onboarding-checklist.md"
      ],
      "checkpoint": {
        "what_is_being_checked": "Enable a real backup of memory and project files",
        "success_condition": "A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded.",
        "how_to_verify": "Record the observed result for Enable a real backup of memory and project files. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "The destination is a mounted second drive.",
          "The hidden memory/settings folders and project files are included.",
          "An automated backup is enabled and its latest successful run is recorded."
        ],
        "tokens": [
          "PROFILE BACKUP PASS"
        ],
        "user_visible_success_message": "Evidence saved. A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The backup drive is missing or the script reports a failure",
          "likely_cause": "The destination may be on the same volume, unmounted, or unwritable.",
          "diagnostic_question": "What exact result did you observe during Enable a real backup of memory and project files?",
          "fix": "For Enable a real backup of memory and project files: Connect a second backup drive. Windows: configure System Protection as additional recovery and use a scheduled copy/File History that explicitly includes hidden agent folders. macOS: configure Time Machine and verify dot folders are included. Linux: use a home backup such as restic/Deja Dup; Timeshift omits /home by default. Download the copy-only profile backup script for your platform, inspect it, and adapt the folder list to your tool. Record the last successful scheduled run; protect backup access because it may contain credentials. Compare the actual output to A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded.",
          "alternative_fix": "Use the operating system backup application and verify the same folder coverage and successful run.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Mount the drive and choose an accessible backup directory. Inspect every error; robocopy codes 8 and higher are failures."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use profile-backup.ps1, profile-backup.sh, onboarding-checklist.md."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to enable a real backup of memory and project files. A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded.",
        "demo": "Connect a second backup drive. Windows: configure System Protection as additional recovery and use a scheduled copy/File History that explicitly includes hidden agent folders. macOS: configure Time Machine and verify dot folders are included. Linux: use a home backup such as restic/Deja Dup; Timeshift omits /home by default. Download the copy-only profile backup script for your platform, inspect it, and adapt the folder list to your tool. Record the last successful scheduled run; protect backup access because it may contain credentials.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Mount the drive and choose an accessible backup directory. Inspect every error; robocopy codes 8 and higher are failures.",
        "help": "For Enable a real backup of memory and project files, compare your own result with: A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded.. Connect a second backup drive. Windows: configure System Protection as additional recovery and use a scheduled copy/File History that explicitly includes hidden agent folders. macOS: configure Time Machine and verify dot folders are included. Linux: use a home backup such as restic/Deja Dup; Timeshift omits /home by default. Download the copy-only profile backup script for your platform, inspect it, and adapt the folder list to your tool. Record the last successful scheduled run; protect backup access because it may contain credentials."
      },
      "video": {
        "purpose": "Demonstrate enable a real backup of memory and project files",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Connect a second backup drive. Windows: configure System Protection as additional recovery and use a scheduled copy/File History that explicitly includes hidden agent folders. macOS: configure Time Machine and verify dot folders are included. Linux: use a home backup such as restic/Deja Dup; Timeshift omits /home by default. Download the copy-only profile backup script for your platform, inspect it, and adapt the folder list to your tool. Record the last successful scheduled run; protect backup access because it may contain credentials. A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded.",
        "on_screen_text": [
          "Enable a real backup of memory and project files",
          "A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded."
        ],
        "screen_recording_instructions": [
          "Connect a second backup drive. Windows: configure System Protection as additional recovery and use a scheduled copy/File History that explicitly includes hidden agent folders. macOS: configure Time Machine and verify dot folders are included. Linux: use a home backup such as restic/Deja Dup; Timeshift omits /home by default. Download the copy-only profile backup script for your platform, inspect it, and adapt the folder list to your tool. Record the last successful scheduled run; protect backup access because it may contain credentials. On Windows, review the script, unblock only that downloaded file, then run it with the shown process-only RemoteSigned policy. Group Policy can still refuse it; report that limitation without changing machine policy.",
          "A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Connect a second backup drive. Windows: configure System Protection as additional recovery and use a scheduled copy/File History that explicitly includes hidden agent folders. macOS: configure Time Machine and verify dot folders are included. Linux: use a home backup such as restic/Deja Dup; Timeshift omits /home by default. Download the copy-only profile backup script for your platform, inspect it, and adapt the folder list to your tool. Record the last successful scheduled run; protect backup access because it may contain credentials.",
          "A backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded."
        ]
      },
      "step_id": "L25-S04",
      "lesson_id": "L25"
    },
    {
      "title": "Practice a hash-verified restore",
      "purpose": "This step helps you practice a hash-verified restore. RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch.",
      "user_action": "Run restore_drill.py with a separate backup directory. The script creates a new proof file, copies it, restores a second copy, and compares SHA256 hashes. Then restore one non-secret file from your actual agent memory backup into a separate scratch directory and open it; do not overwrite the live profile.",
      "explanation": "This step helps you practice a hash-verified restore. RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch. Treat this as local practice until you have actual source and execution evidence.",
      "estimated_time": "5–10 min",
      "action_type": "command",
      "commands": {
        "windows": "python restore_drill.py --backup-root D:\\Backups\\bbb-practice --work-root practice",
        "macos": "python3 restore_drill.py --backup-root /Volumes/YourBackup/bbb-practice --work-root practice",
        "linux": "python3 restore_drill.py --backup-root /media/YourBackup/bbb-practice --work-root practice"
      },
      "command_type": "shell",
      "required_inputs": [
        "restore_drill.py"
      ],
      "expected_result": "RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch.",
      "resources": [
        "restore_drill.py"
      ],
      "checkpoint": {
        "what_is_being_checked": "Practice a hash-verified restore",
        "success_condition": "RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch.",
        "how_to_verify": "Record the observed result for Practice a hash-verified restore. Use three lines: Result: (what happened); Evidence: (actual output or file and specific observation); Limit: (what you did not verify). Include required output tokens. The page checks structure only, not truth.",
        "criteria": [
          "The proof file SHA256 hashes match.",
          "I restored and opened a non-secret memory/settings file from my real backup.",
          "The restored file is in scratch; the live profile was not overwritten."
        ],
        "tokens": [
          "RESTORE PASS"
        ],
        "user_visible_success_message": "Evidence saved. RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step.",
        "structured": true
      },
      "troubleshooting": [
        {
          "problem": "The result differs from the checkpoint",
          "likely_cause": "You may be in a different folder or using a different input/version.",
          "diagnostic_question": "What exact result did you observe during Practice a hash-verified restore?",
          "fix": "For Practice a hash-verified restore: Run restore_drill.py with a separate backup directory. The script creates a new proof file, copies it, restores a second copy, and compares SHA256 hashes. Then restore one non-secret file from your actual agent memory backup into a separate scratch directory and open it; do not overwrite the live profile. Compare the actual output to RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch.",
          "alternative_fix": "Open the supplied resource and inspect the input manually; use the expected-result example to narrow the difference.",
          "when_to_escalate": "Stop after two explained attempts if the problem needs account access, permissions or changes outside this workspace. Share redacted evidence.",
          "bot_coach_response": "Compare the input filename and working directory with this step. Rerun only after correcting that difference."
        }
      ],
      "faqs": [
        {
          "question": "What result should I verify for this step?",
          "answer": "RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch."
        },
        {
          "question": "Which files support this action?",
          "answer": "Use restore_drill.py."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to practice a hash-verified restore. RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch.",
        "demo": "Run restore_drill.py with a separate backup directory. The script creates a new proof file, copies it, restores a second copy, and compares SHA256 hashes. Then restore one non-secret file from your actual agent memory backup into a separate scratch directory and open it; do not overwrite the live profile.",
        "handoff": "Try this in your own practice workspace, then compare the result.",
        "success": "Keep that result with your evidence.",
        "failure": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
        "help": "For Practice a hash-verified restore, compare your own result with: RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch.. Run restore_drill.py with a separate backup directory. The script creates a new proof file, copies it, restores a second copy, and compares SHA256 hashes. Then restore one non-secret file from your actual agent memory backup into a separate scratch directory and open it; do not overwrite the live profile."
      },
      "video": {
        "purpose": "Demonstrate practice a hash-verified restore",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Run restore_drill.py with a separate backup directory. The script creates a new proof file, copies it, restores a second copy, and compares SHA256 hashes. Then restore one non-secret file from your actual agent memory backup into a separate scratch directory and open it; do not overwrite the live profile. RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch.",
        "on_screen_text": [
          "Practice a hash-verified restore",
          "RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch."
        ],
        "screen_recording_instructions": [
          "Run restore_drill.py with a separate backup directory. The script creates a new proof file, copies it, restores a second copy, and compares SHA256 hashes. Then restore one non-secret file from your actual agent memory backup into a separate scratch directory and open it; do not overwrite the live profile.",
          "RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch."
        ],
        "animation_instructions": "Highlight the action, then the corresponding result; avoid motion during command copying.",
        "cursor_instructions": "Point to the exact input and checkpoint; do not hide errors.",
        "important_visuals": [
          "RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Run restore_drill.py with a separate backup directory. The script creates a new proof file, copies it, restores a second copy, and compares SHA256 hashes. Then restore one non-secret file from your actual agent memory backup into a separate scratch directory and open it; do not overwrite the live profile.",
          "RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch."
        ]
      },
      "step_id": "L25-S05",
      "lesson_id": "L25"
    }
  ],
  "resources": [
    {
      "resource_id": "R001",
      "name": "workspace_guard.py",
      "type": "py",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "# VERSION HISTORY\n# 2026-10-05 EDT | chatgpt_codex | overnight-catalog | v1: learner resource.\n\"\"\"Dry-run resolved-path boundary demonstration. This script never deletes anything.\"\"\"\nimport argparse\nfrom pathlib import Path\n\ndef permitted(target, workspace):\n    root = Path(workspace).resolve()\n    candidate = Path(target).resolve()\n    home = Path.home().resolve()\n    if root == home or root == root.anchor or root in home.parents:\n        return False\n    return candidate != root and root in candidate.parents and candidate != home and candidate not in home.parents\n\ndef main():\n    p=argparse.ArgumentParser(description=__doc__)\n    p.add_argument('--workspace',default='practice')\n    p.add_argument('--target')\n    p.add_argument('--self-test',action='store_true')\n    a=p.parse_args()\n    root=Path(a.workspace).resolve()\n    if a.self_test:\n        assert permitted(root/'proof.txt',root)\n        assert not permitted(Path.home(),root)\n        assert not permitted(root.parent/'outside.txt',root)\n        assert not permitted(root,root)\n        variable_target=Path.home()\n        assert not permitted(variable_target,root)\n        print('GUARD PASS: inside allowed; profile, variable-derived profile, outside, workspace root denied; no deletion executed')\n    else:\n        if not a.target:p.error('--target required')\n        allowed=permitted(a.target,a.workspace)\n        print(('ALLOW' if allowed else 'DENY')+': resolved boundary; dry-run only')\n        raise SystemExit(0 if allowed else 2)\nif __name__=='__main__':main()\n",
      "filename": "workspace_guard.py",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R002",
      "name": "restore_drill.py",
      "type": "py",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "# VERSION HISTORY\n# 2026-10-05 EDT | chatgpt_codex | overnight-catalog | v1: learner resource.\n\"\"\"Backup and restore a new proof file only; never edits an existing file or profile.\"\"\"\nimport argparse,hashlib,json,logging\nfrom datetime import datetime,timezone\nfrom pathlib import Path\nimport shutil\ndef digest(p):return hashlib.sha256(p.read_bytes()).hexdigest()\ndef main():\n    a=argparse.ArgumentParser(description=__doc__)\n    a.add_argument('--backup-root',required=True)\n    a.add_argument('--work-root',default='practice')\n    x=a.parse_args()\n    run=datetime.now(timezone.utc).strftime('%Y%m%dT%H%M%S%fZ')\n    work=Path(x.work_root).resolve()/('restore-'+run)\n    backup=Path(x.backup_root).resolve()/('restore-'+run)\n    if work==backup or work in backup.parents or backup in work.parents:raise SystemExit('Use separate, non-overlapping work and backup roots')\n    work.mkdir(parents=True,exist_ok=False);backup.mkdir(parents=True,exist_ok=False)\n    logging.basicConfig(filename=work/'drill.log',encoding='utf-8',level=logging.INFO)\n    source=work/'proof.txt';source.write_text('BuildBotsBetter restore proof '+run,encoding='utf-8')\n    shutil.copy2(source,backup/'proof.txt')\n    restored=work/'restored.txt';shutil.copy2(backup/'proof.txt',restored)\n    assert digest(source)==digest(restored)\n    receipt={'result':'RESTORE PASS','source_sha256':digest(source),'restored_sha256':digest(restored),'backup_root':str(backup),'off_volume':work.anchor.lower()!=backup.anchor.lower(),'scope':'new proof file only; does not establish a scheduled profile backup'}\n    (work/'receipt.json').write_text(json.dumps(receipt,indent=2),encoding='utf-8')\n    logging.info('Proof backup and hash-verified restore completed')\n    print(json.dumps(receipt,indent=2))\n    if not receipt['off_volume']:print('SAME VOLUME: practice passed; configure a second drive for disaster recovery')\nif __name__=='__main__':main()\n",
      "filename": "restore_drill.py",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R003",
      "name": "onboarding-checklist.md",
      "type": "md",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "# Repeatable agent onboarding\nagent:\ntool version:\nrules file:\nmemory/settings location:\nassigned workspace:\npermissions / actions needing approval:\nhook location and protocol:\nguard active (harmless command + denied dry-run):\nvariable-derived path limit understood:\nbackup destination (second drive):\nbackup schedule / last successful run:\nrestored memory file / matching SHA256:\nfinal task / evidence / reviewer:\n\nProtect memory/settings and project files. A prompt rule is not an operating-system boundary.\nA command-text hook can miss a path computed in a script or variable. Resolve paths at the\noperation boundary and fail closed; keep independent backups and monitoring.\nWindows System Restore reverts system components, not a reliable personal-file backup.\nOneDrive folder backup does not automatically include hidden agent folders.\nmacOS: check Time Machine includes hidden agent folders. Linux: Timeshift excludes /home by\ndefault; use a separate home backup or explicitly include it.\n",
      "filename": "onboarding-checklist.md",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R004",
      "name": "profile-backup.ps1",
      "type": "ps1",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "# VERSION HISTORY\n# 2026-10-05 EDT | chatgpt_codex | overnight-catalog | v1: copy-only explicit profile backup.\nparam([Parameter(Mandatory=$true)][string]$Destination,[string]$ProjectPath=(Get-Location).Path)\n$ErrorActionPreference='Stop'\n$destRoot=[IO.Path]::GetFullPath($Destination)\n$profileRoot=[IO.Path]::GetFullPath($env:USERPROFILE)\nif ([IO.Path]::GetPathRoot($destRoot) -eq [IO.Path]::GetPathRoot($profileRoot)) { throw 'Choose a backup destination on a second drive.' }\nif (-not (Test-Path -LiteralPath ([IO.Path]::GetPathRoot($destRoot)))) { throw 'Backup drive is unavailable.' }\n$runDir=Join-Path $destRoot (Get-Date -Format 'yyyyMMdd-HHmmss-fff')\nNew-Item -ItemType Directory -Path $runDir -ErrorAction Stop | Out-Null\nforeach ($folderName in @('.codex','.claude','.grok','.qwen','.gemini')) {\n  $sourceDir=Join-Path $profileRoot $folderName\n  if (Test-Path -LiteralPath $sourceDir) {\n    $copyDir=Join-Path $runDir $folderName\n    & robocopy $sourceDir $copyDir /E /XJ /R:1 /W:1 /COPY:DAT /DCOPY:DAT /NP\n    if ($LASTEXITCODE -ge 8) { throw \"Backup failed for $folderName (robocopy $LASTEXITCODE).\" }\n  }\n}\n$projectSource=[IO.Path]::GetFullPath($ProjectPath)\nif (-not (Test-Path -LiteralPath $projectSource -PathType Container)) { throw 'Project directory is unavailable.' }\n& robocopy $projectSource (Join-Path $runDir 'project') /E /XJ /R:1 /W:1 /COPY:DAT /DCOPY:DAT /NP\nif ($LASTEXITCODE -ge 8) { throw \"Project backup failed (robocopy $LASTEXITCODE).\" }\n\"PROFILE BACKUP PASS: $runDir\"\n# Copy-only: no /MIR, /PURGE or deletion. Backup may contain credentials; protect the drive.\n# Add the Grok Bot profile and project path explicitly after finding them in your own installation.\n",
      "filename": "profile-backup.ps1",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R005",
      "name": "profile-backup.sh",
      "type": "sh",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "#!/usr/bin/env bash\n# VERSION HISTORY\n# 2026-10-16 EDT | chatgpt_codex / Codex | peer finding repairs\n# 2026-10-05 EDT | chatgpt_codex | overnight-catalog | v1: copy-only explicit profile backup.\nset -euo pipefail\ndest=${1:?Pass a mounted external-drive backup directory}\nproject=${2:-$PWD}\nif [ ! -d \"$dest\" ]; then echo \"Destination must already exist on a mounted external filesystem.\" >&2; exit 2; fi\nif [ \"$(df -P \"$HOME\" | tail -1 | awk '{print $1}')\" = \"$(df -P \"$dest\" | tail -1 | awk '{print $1}')\" ]; then\n  echo 'Choose a destination on another mounted filesystem.' >&2; exit 2\nfi\nrun=\"$dest/$(date -u +%Y%m%dT%H%M%SZ)-$$\"\nmkdir \"$run\"\nfor name in .codex .claude .grok .qwen .gemini; do\n  if [ -d \"$HOME/$name\" ]; then cp -pR \"$HOME/$name\" \"$run/$name\"; fi\ndone\nif [ ! -d \"$project\" ]; then echo 'Project directory is unavailable.' >&2; exit 2; fi\ncp -pR \"$project\" \"$run/project\"\necho \"PROFILE BACKUP PASS: $run\"\n# This backup can contain credentials; protect access to the backup drive.\n",
      "filename": "profile-backup.sh",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R006",
      "name": "media_pack.py",
      "type": "py",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "# 2026-10-16 EDT | chatgpt_codex / Codex | peer finding repairs\n# VERSION HISTORY\n# 2026-10-06 EDT | chatgpt_codex | media-catchup | v1: created structural draft checks, normalized scoring and lexical retrieval.\n\"\"\"Check local draft structure, provenance and retrieval. Never publishes content.\"\"\"\nimport argparse, hashlib, json, logging, math, re\nfrom datetime import datetime, timezone\nfrom pathlib import Path\n\nROOT=Path(__file__).resolve().parent\ndef read(name):return json.loads((ROOT/name).read_text(encoding='utf-8'))\ndef digest(p):return hashlib.sha256(p.read_bytes()).hexdigest()\ndef payloads():return sorted(p for p in ROOT.iterdir() if p.is_file() and p.name not in ['provenance.json','report.json','media-pack.log'] and not p.name.endswith(('.zip','.VERSION_HISTORY.txt')))\ndef issues():\n    problems=[]\n    try:\n        k=read('knowledge.json');versions=read('versions.json');cards=read('agent-card.json');rubric=read('rubric.json')\n        for field in ['topic','question','answer','context','entities','sources','author','date','next_action']:\n            if not k.get(field):problems.append('Missing knowledge field: '+field)\n        if not all(re.match(r'^https://[^/]+/.+',s) for s in k.get('sources',[])):problems.append('Source must be a direct HTTPS page')\n        if not all(e.casefold() in k['answer'].casefold() for e in k['entities']):problems.append('Answer lacks a named entity')\n        for entity in k['entities']:\n            if entity.casefold() not in versions['B']['text'].casefold():problems.append('Version B lacks entity '+entity)\n        if versions['A']['topic']!=versions['B']['topic'] or versions['A']['topic']!=k['topic']:problems.append('Comparison topic changed')\n        if versions['A']['format']!=versions['B']['format']:problems.append('Comparison format changed')\n        for version in versions.values():\n            if re.search(r'guarantee[sd]? (?:AI training|viral|ranking)',version['text'],re.I):problems.append('Unjustified outcome guarantee')\n            if not version['text'].strip():problems.append('Empty comparison')\n        if k['platform']=='threads' and any(len(v['text'])>500 for v in versions.values()):problems.append('Threads root draft exceeds 500 characters')\n        if k['platform']=='xai-xsi' and any(len(v['text'])>280 for v in versions.values()):problems.append('X practice root draft exceeds 280 characters')\n        if k['platform']=='pinterest':\n            pin=read('native.json')\n            if len(pin['title'])>100 or len(pin['description'])>500:problems.append('Pin practice metadata exceeds title/description limit')\n            if pin['ratio']!='2:3' or not pin['board'] or not pin['alt']:problems.append('Incomplete static Pin card')\n        for osname in ['windows','macos','linux']:\n            card=cards.get(osname,{})\n            if not all(card.get(f) is not None for f in ['shell','cwd','prerequisites','command','expected_exit','expected_output','failure','scope']):problems.append('Incomplete command card '+osname)\n            if card.get('expected_exit')!=0:problems.append('Unexpected success exit '+osname)\n        rows=[json.loads(line) for line in (ROOT/'rag.jsonl').read_text(encoding='utf-8').splitlines() if line.strip()]\n        if len({r['id'] for r in rows})!=len(rows) or len(rows)<2:problems.append('RAG IDs duplicate or too few rows')\n        for r in rows:\n            if not all(r.get(f) for f in ['id','entity','question','answer','source']):problems.append('Incomplete retrieval row')\n            if r['entity'].casefold() not in r['answer'].casefold():problems.append('Retrieval answer not standalone')\n        score(rubric)\n        manifest=read('provenance.json')\n        actual={p.name:digest(p) for p in payloads()}\n        if manifest['sha256']!=actual:problems.append('Changed bytes or missing provenance entries; review before hash')\n    except (KeyError,ValueError,TypeError,OSError) as e:problems.append('Invalid input: '+str(e))\n    return problems\ndef score(rubric):\n    values=rubric['values'];names=rubric['dimensions']\n    if len(values)!=len(names) or not values:raise ValueError('Rubric dimensions/values mismatch')\n    if any(isinstance(v,bool) or not isinstance(v,(int,float)) or not math.isfinite(v) or not 0<=v<=10 for v in values):raise ValueError('Scores must be finite numbers from 0 to 10')\n    return round(100*sum(values)/(10*len(values)),2)\ndef main():\n    logging.basicConfig(filename=ROOT/'media-pack.log',encoding='utf-8',level=logging.INFO)\n    parser=argparse.ArgumentParser(description=__doc__);parser.add_argument('action',choices=['lint','hash','score','retrieve']);parser.add_argument('--query',default='');a=parser.parse_args()\n    if a.action=='hash':\n        data={'at':datetime.now(timezone.utc).isoformat(),'author':'learner draft','kind':'unsigned SHA256 integrity manifest; not C2PA or proof of truth','sha256':{p.name:digest(p) for p in payloads()}}\n        (ROOT/'provenance.json').write_text(json.dumps(data,indent=2),encoding='utf-8');print('HASH PASS: unsigned reviewed bytes')\n    elif a.action=='lint':\n        errors=issues();report={'result':'MEDIA FAIL' if errors else 'MEDIA PASS','issues':errors,'scope':'Structural local draft checks; no factual, publication, ranking, OCR/ASR or AI-training certification'}\n        (ROOT/'report.json').write_text(json.dumps(report,indent=2),encoding='utf-8');print(json.dumps(report,indent=2));logging.info('%s issues=%d',report['result'],len(errors));raise SystemExit(1 if errors else 0)\n    elif a.action=='score':print('READINESS '+str(score(read('rubric.json')))+' /100: subjective rubric; no distribution prediction')\n    else:\n        stop=set('what is the a an how can does do to of for and in on its remain understandable outside caption'.split());query=set(re.findall(r'\\w+',a.query.casefold()))-stop;rows=[json.loads(s) for s in (ROOT/'rag.jsonl').read_text(encoding='utf-8').splitlines() if s.strip()]\n        ranked=sorted([(len(query & set(re.findall(r'\\w+',r['question'].casefold()))),r) for r in rows],key=lambda x:x[0],reverse=True)\n        hits=[r for n,r in ranked if n>=2][:2];print(json.dumps({'retrieval':'lexical demonstration, not vector embeddings','matches':hits,'abstained':not bool(hits)},indent=2))\nif __name__=='__main__':\n    try:main()\n    except Exception:logging.exception('Media pack failed');raise\n",
      "filename": "media_pack.py",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R007",
      "name": "studio.html",
      "type": "html",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "<!doctype html>\n<!-- VERSION HISTORY\n2026-10-16 EDT | chatgpt_codex / Codex | peer finding repairs\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original local native draft editor and score calculator.\n-->\n<html lang=\"en\"><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>Native draft studio</title>\n<style>body{font:17px system-ui,sans-serif;background:#10151d;color:#f4f6fb;margin:0;padding:24px;max-width:1000px}textarea,input{font:inherit;background:#202a38;color:inherit;border:1px solid #687789;border-radius:5px;box-sizing:border-box;width:100%;padding:12px}textarea{min-height:160px}section{padding:18px;border:1px solid #687789;border-radius:8px;margin:16px 0}button{padding:12px;margin:8px;background:#b7f48a;border:0;border-radius:5px;color:#10151d}label{display:block;margin:12px 0}h1{font-size:clamp(26px,6vw,42px)}.pair{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr));gap:16px}small{display:block;color:#bac8d7}output{font-weight:bold}a{color:#b7f48a}</style>\n<h1>Instagram draft studio</h1><p>A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims.</p><p>One topic, one format, two versions. Keep the audience and promise fixed. These drafts are synthetic practice examples.</p>\n<label>Topic <input id=\"topic\"></label><label>Native format <input id=\"format\"></label>\n<div class=\"pair\"><section><h2>A · Human baseline</h2><textarea id=\"a\"></textarea><small id=\"ac\"></small></section><section><h2>B · Human and machine clarity</h2><textarea id=\"b\"></textarea><small id=\"bc\"></small></section></div>\n<p id=\"difference\"></p><button id=\"export\">Download versions.json</button><p id=\"status\" role=\"status\"></p>\n<section><h2>Readiness self-assessment</h2><p>Rate each dimension from 0 to 10 using your saved evidence. The result measures this rubric, not the chance of virality or AI citation. The displayed dimensions are normalized by their count to100; this is a subjective review.</p><label>Written reasons for these scores<textarea id=\"reasons\"></textarea></label><div id=\"scores\"></div><output id=\"total\"></output><button id=\"rubric-export\">Download rubric.json</button></section>\n<section><h2>Review before publication</h2><p>Check factual claims, media consent, community rules, current format limits and destination links. A readable draft does not guarantee model training, indexing or recommendation. This page saves downloads only; it sends nothing to a platform. Return to the course in your other browser tab after downloading your drafts.</p></section>\n<script>\n// VERSION HISTORY\n// 2026-10-06 EDT | chatgpt_codex | media-catchup | v1: local-only editor; no API or storage.\nconst initial={\"A\": {\"topic\": \"Overnight oats assembly\", \"format\": \"ten-slide food carousel\", \"text\": \"Breakfast sorted! My favorite oats hack. Swipe for the cutest jars and save this for later.\"}, \"B\": {\"topic\": \"Overnight oats assembly\", \"format\": \"ten-slide food carousel\", \"text\": \"Overnight oats assembly with rolled oats: label the dry ingredients, add the liquid shown in the recipe draft, mix and show the finished jar. The ingredient list belongs in the caption as well as the slides. Swipe through the same breakfast sequence and tell me which assembly step needs a closer view.\"}}, dimensions=[\"Semantic hook\", \"Entity grounding\", \"Visual audio text alignment\", \"Caption depth\", \"Standalone clarity\", \"Knowledge object\", \"Agent actionability\", \"Human evidence\", \"Provenance\", \"Multilingual accessibility\"];\nconst $=id=>document.getElementById(id);\n$('topic').value=initial.A.topic;$('format').value=initial.A.format;$('a').value=initial.A.text;$('b').value=initial.B.text;\nfunction update(){for(const id of ['a','b'])$(id+'c').textContent=$(id).value.length+' characters';const entities=[\"overnight oats\", \"rolled oats\"];const missing=entities.filter(e=>!$('b').value.toLowerCase().includes(e.toLowerCase()));$('difference').textContent=missing.length?'B is missing named entities: '+missing.join(', '):'B contains the named entities. Review human tone, factual claims and context manually.';const inputs=[...document.querySelectorAll('#scores input')];$('total').textContent='READINESS '+(100*inputs.reduce((sum,x)=>sum+Number(x.value),0)/(10*dimensions.length)).toFixed(2)+' /100 · self-assessment';}\ndimensions.forEach((name,i)=>{const label=document.createElement('label');label.textContent=name;const input=document.createElement('input');input.type='range';input.min=0;input.max=10;input.value=0;input.setAttribute('aria-label',name);const out=document.createElement('output');out.textContent='0';input.addEventListener('input',()=>{out.textContent=input.value;update()});label.append(input,out);$('scores').append(label)});\nfunction download(name,data){const link=document.createElement('a');const url=URL.createObjectURL(new Blob([JSON.stringify(data,null,2)+'\\n'],{type:'application/json'}));link.href=url;link.download=name;link.click();setTimeout(()=>URL.revokeObjectURL(url),1000);$('status').textContent='Downloaded '+name+'. Review and replace the matching file in the extracted resource folder.';}\n$('export').onclick=()=>download('versions.json',Object.fromEntries(['A','B'].map((v,i)=>[v,{topic:$('topic').value,format:$('format').value,text:$(i?'b':'a').value}])));\n$('rubric-export').onclick=()=>download('rubric.json',{reasons:$('reasons').value,dimensions,values:[...document.querySelectorAll('#scores input')].map(x=>Number(x.value)),kind:'self-assessment; review evidence before interpreting'});\nfor(const id of ['a','b'])$(id).addEventListener('input',update);update();\n</script></html>",
      "filename": "studio.html",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R008",
      "name": "versions.json",
      "type": "json",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "{\n  \"A\": {\n    \"topic\": \"Overnight oats assembly\",\n    \"format\": \"ten-slide food carousel\",\n    \"text\": \"Breakfast sorted! My favorite oats hack. Swipe for the cutest jars and save this for later.\"\n  },\n  \"B\": {\n    \"topic\": \"Overnight oats assembly\",\n    \"format\": \"ten-slide food carousel\",\n    \"text\": \"Overnight oats assembly with rolled oats: label the dry ingredients, add the liquid shown in the recipe draft, mix and show the finished jar. The ingredient list belongs in the caption as well as the slides. Swipe through the same breakfast sequence and tell me which assembly step needs a closer view.\"\n  }\n}\n",
      "filename": "versions.json",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R009",
      "name": "knowledge.json",
      "type": "json",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "{\n  \"platform\": \"instagram\",\n  \"topic\": \"Overnight oats assembly\",\n  \"question\": \"How can an overnight oats carousel remain understandable outside its caption?\",\n  \"answer\": \"An overnight oats carousel should name rolled oats on the ingredient slide, label each assembly step and provide a readable ingredient list in the caption. Quantities in this example are a draft recipe, not tested nutrition or storage advice.\",\n  \"context\": \"A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims.\",\n  \"example\": \"Synthetic teaching example; replace with a checked observation before public use.\",\n  \"entities\": [\n    \"overnight oats\",\n    \"rolled oats\"\n  ],\n  \"sources\": [\n    \"https://about.instagram.com/blog/announcements/instagram-ranking-explained\"\n  ],\n  \"related_topics\": [\n    \"food photography\",\n    \"meal preparation\"\n  ],\n  \"keywords\": [\n    \"overnight oats\",\n    \"rolled oats\"\n  ],\n  \"language\": \"en\",\n  \"author\": \"chatgpt_codex teaching fixture\",\n  \"date\": \"2026-10-06\",\n  \"next_action\": \"Test your own recipe and photograph the real assembly sequence before approving the carousel.\"\n}\n",
      "filename": "knowledge.json",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R010",
      "name": "agent-card.json",
      "type": "json",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "{\n  \"windows\": {\n    \"shell\": \"PowerShell\",\n    \"cwd\": \"extracted course resource folder\",\n    \"prerequisites\": [\n      \"Python 3.10+\",\n      \"Reviewed local resource files\"\n    ],\n    \"command\": \"python media_pack.py lint\",\n    \"expected_exit\": 0,\n    \"expected_output\": \"MEDIA PASS\",\n    \"failure\": \"Read report.json. Restore a broken field; review the correction before running media_pack.py hash. Do not hash an unexplained change.\",\n    \"scope\": \"Validate draft metadata locally; never publish or change accounts.\"\n  },\n  \"macos\": {\n    \"shell\": \"zsh\",\n    \"cwd\": \"extracted course resource folder\",\n    \"prerequisites\": [\n      \"Python 3.10+\",\n      \"Reviewed local resource files\"\n    ],\n    \"command\": \"python3 media_pack.py lint\",\n    \"expected_exit\": 0,\n    \"expected_output\": \"MEDIA PASS\",\n    \"failure\": \"Read report.json. Restore a broken field; review the correction before running media_pack.py hash. Do not hash an unexplained change.\",\n    \"scope\": \"Validate draft metadata locally; never publish or change accounts.\"\n  },\n  \"linux\": {\n    \"shell\": \"bash\",\n    \"cwd\": \"extracted course resource folder\",\n    \"prerequisites\": [\n      \"Python 3.10+\",\n      \"Reviewed local resource files\"\n    ],\n    \"command\": \"python3 media_pack.py lint\",\n    \"expected_exit\": 0,\n    \"expected_output\": \"MEDIA PASS\",\n    \"failure\": \"Read report.json. Restore a broken field; review the correction before running media_pack.py hash. Do not hash an unexplained change.\",\n    \"scope\": \"Validate draft metadata locally; never publish or change accounts.\"\n  }\n}\n",
      "filename": "agent-card.json",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R011",
      "name": "rag.jsonl",
      "type": "jsonl",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "{\"id\": \"instagram-1\", \"entity\": \"overnight oats\", \"question\": \"How can an overnight oats carousel remain understandable outside its caption?\", \"answer\": \"An overnight oats carousel should name rolled oats on the ingredient slide, label each assembly step and provide a readable ingredient list in the caption. Quantities in this example are a draft recipe, not tested nutrition or storage advice.\", \"source\": \"Synthetic course draft: versions.json B; not a recipe or nutritional authority.\"}\n{\"id\": \"instagram-2\", \"entity\": \"overnight oats\", \"question\": \"What should the overnight oats audience do next?\", \"answer\": \"overnight oats: Test your own recipe and photograph the real assembly sequence before approving the carousel.\", \"source\": \"Synthetic course draft: versions.json B; not a recipe or nutritional authority.\"}\n",
      "filename": "rag.jsonl",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R012",
      "name": "rubric.json",
      "type": "json",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "{\n  \"dimensions\": [\n    \"Semantic hook\",\n    \"Entity grounding\",\n    \"Visual audio text alignment\",\n    \"Caption depth\",\n    \"Standalone clarity\",\n    \"Knowledge object\",\n    \"Agent actionability\",\n    \"Human evidence\",\n    \"Provenance\",\n    \"Multilingual accessibility\"\n  ],\n  \"values\": [\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0,\n    0\n  ],\n  \"kind\": \"unscored draft; score only after reviewing evidence\"\n}\n",
      "filename": "rubric.json",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R013",
      "name": "native.json",
      "type": "json",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "{\n  \"ratio\": \"4:5\",\n  \"slides\": 10,\n  \"topic\": \"overnight oats\",\n  \"caption_status\": \"draft\",\n  \"alt\": \"Ten illustrated ingredient and assembly cards, with rolled oats named\"\n}\n",
      "filename": "native.json",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R014",
      "name": "claims.json",
      "type": "json",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "{\n  \"taxonomy\": [\n    \"ESTABLISHED\",\n    \"EVIDENCE-SUPPORTED\",\n    \"EMERGING\",\n    \"HYPOTHESIS\",\n    \"SPECULATION\"\n  ],\n  \"claims\": [\n    {\n      \"claim\": \"Instagram describes different ranking approaches for Feed, Stories, Explore and Reels.\",\n      \"label\": \"ESTABLISHED\",\n      \"source\": \"https://about.instagram.com/blog/announcements/instagram-ranking-explained\",\n      \"checked\": \"2026-10-06\"\n    },\n    {\n      \"claim\": \"Explicit ingredient overlays will improve comprehension in a muted viewing test.\",\n      \"label\": \"HYPOTHESIS\",\n      \"source\": \"Local experiment proposal; no result claimed\"\n    },\n    {\n      \"claim\": \"Future SI may coordinate knowledge across platforms\",\n      \"label\": \"SPECULATION\",\n      \"source\": \"Design possibility; no accepted forecast or training guarantee\"\n    }\n  ]\n}\n",
      "filename": "claims.json",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R015",
      "name": "metrics.json",
      "type": "json",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "{\n  \"status\": \"NOT RUN\",\n  \"topic\": \"Overnight oats assembly\",\n  \"format\": \"ten-slide food carousel\",\n  \"primary_metric\": \"saves per reached account\",\n  \"exposures\": null,\n  \"outcomes\": null,\n  \"rate\": null,\n  \"confounders\": [\n    \"audience mix\",\n    \"time of day\",\n    \"distribution\",\n    \"prior exposure\"\n  ],\n  \"stop_rule\": \"Set a observation window and minimum exposure count before starting. Report inconclusive when underpowered.\",\n  \"ai_citations\": [],\n  \"agent_execution\": {\n    \"attempts\": 0,\n    \"successes\": 0,\n    \"os_evidence\": []\n  }\n}\n",
      "filename": "metrics.json",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R016",
      "name": "provenance-notes.md",
      "type": "md",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n\nRecord author, real capture date, source URLs, permissions, AI assistance, changes and reviewed evidence. SHA256 detects changes to bytes. A C2PA signed manifest requires separate credentials and verification; no signature is supplied.\nPublic status does not grant universal crawler/API access or guarantee pretraining, fine-tuning, retrieval or AI citation. Superintelligence (SI) is a speculative course term; semantic indexing is a separate concept.\n",
      "filename": "provenance-notes.md",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R017",
      "name": "versions.json.VERSION_HISTORY.txt",
      "type": "txt",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n",
      "filename": "versions.json.VERSION_HISTORY.txt",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R018",
      "name": "knowledge.json.VERSION_HISTORY.txt",
      "type": "txt",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n",
      "filename": "knowledge.json.VERSION_HISTORY.txt",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R019",
      "name": "agent-card.json.VERSION_HISTORY.txt",
      "type": "txt",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n",
      "filename": "agent-card.json.VERSION_HISTORY.txt",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R020",
      "name": "rag.jsonl.VERSION_HISTORY.txt",
      "type": "txt",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n",
      "filename": "rag.jsonl.VERSION_HISTORY.txt",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R021",
      "name": "rubric.json.VERSION_HISTORY.txt",
      "type": "txt",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n",
      "filename": "rubric.json.VERSION_HISTORY.txt",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R022",
      "name": "native.json.VERSION_HISTORY.txt",
      "type": "txt",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n",
      "filename": "native.json.VERSION_HISTORY.txt",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R023",
      "name": "claims.json.VERSION_HISTORY.txt",
      "type": "txt",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n",
      "filename": "claims.json.VERSION_HISTORY.txt",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R024",
      "name": "metrics.json.VERSION_HISTORY.txt",
      "type": "txt",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n",
      "filename": "metrics.json.VERSION_HISTORY.txt",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R025",
      "name": "agent-training.json",
      "type": "json",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "{\n  \"schema_version\": 1,\n  \"agent_role\": \"Instagram Content Agent\",\n  \"topic\": \"Overnight oats assembly\",\n  \"operating_points\": {\n    \"01_platform_identity\": \"Instagram Content Agent; create native ten-slide food carousel drafts rather than swapping platform labels.\",\n    \"02_audience\": \"A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims.\",\n    \"03_content_graph\": {\n      \"format\": \"ten-slide food carousel\",\n      \"topic\": \"Overnight oats assembly\",\n      \"alternatives\": \"First native surface/format exercises and native.json.\"\n    },\n    \"04_distribution_graph\": \"Follower Feed/Stories and unconnected Explore/Reels discovery; carousel navigation and saves support return visits.\",\n    \"05_algorithm\": {\n      \"source\": \"https://about.instagram.com/blog/announcements/instagram-ranking-explained\",\n      \"documented_claim\": \"Instagram describes different ranking approaches for Feed, Stories, Explore and Reels.\",\n      \"private_weights\": \"UNKNOWN; never fabricate weights, thresholds or penalties.\"\n    },\n    \"06_engagement_graph\": {\n      \"actions\": [\n        \"Save the ingredient sequence\",\n        \"Share with a cooking friend\",\n        \"Follow tested recipes\",\n        \"Comment with an assembly question\"\n      ],\n      \"useful_metric\": \"saves per reached account\",\n      \"valuation\": \"Predeclare useful outcomes and denominators; no fabricated platform point values.\"\n    },\n    \"07_native_formats\": {\n      \"ratio\": \"4:5\",\n      \"slides\": 10,\n      \"topic\": \"overnight oats\",\n      \"caption_status\": \"draft\",\n      \"alt\": \"Ten illustrated ingredient and assembly cards, with rolled oats named\"\n    },\n    \"08_creative_language\": \"Attractive, visual and useful; large labels, no invented nutrition claims or fake recipe footage.\",\n    \"09_cta_system\": [\n      \"Save the ingredient sequence\",\n      \"Share with a cooking friend\",\n      \"Follow tested recipes\",\n      \"Comment with an assembly question\"\n    ],\n    \"10_search\": {\n      \"entities\": [\n        \"overnight oats\",\n        \"rolled oats\"\n      ],\n      \"query\": \"How can an overnight oats carousel remain understandable outside its caption?\",\n      \"task\": \"Observe current queries and record date/access limits before writing metadata.\"\n    },\n    \"11_platform_ai\": {\n      \"description\": \"Meta documents AI video editing in Edits and Meta AI. Creative restyling is separate from demonstrating a real recipe. Account availability and export behavior need checks.\",\n      \"source\": \"https://about.fb.com/news/2025/06/edit-videos-with-meta-ai/\",\n      \"checked\": \"2026-10-06\",\n      \"status\": \"Documented description; actual account availability/execution UNVERIFIED.\"\n    },\n    \"12_ai_discovery\": {\n      \"input_output\": \"Creator video and editing instructions → edited creative media; manually inspect whether ingredient meaning changed.\",\n      \"rule\": \"Do not promise a private model will parse, recommend, cite or train on the object.\"\n    },\n    \"13_multimodal\": {\n      \"entities\": [\n        \"overnight oats\",\n        \"rolled oats\"\n      ],\n      \"task\": \"Match visual labels, speech and captions; retain a text equivalent. Check actual media manually. No invented OCR/ASR results.\"\n    },\n    \"14_community\": {\n      \"task\": \"Review two public examples and current rules; obtain permission for private quotes.\",\n      \"fixture_status\": \"A/B and practice replies are synthetic, not real member observations.\"\n    },\n    \"15_native_patterns\": {\n      \"format\": \"ten-slide food carousel\",\n      \"hypothesis\": \"Explicit ingredient overlays will improve comprehension in a muted viewing test.\",\n      \"status\": \"UNTESTED for this draft; empirical superiority not claimed.\"\n    },\n    \"16_failure_modes\": \"Attractive, visual and useful; large labels, no invented nutrition claims or fake recipe footage. Also refuse unsupported source/rights claims and never invent algorithmic penalties.\",\n    \"17_experiments\": {\n      \"controls\": [\n        \"same topic\",\n        \"same audience\",\n        \"same format\",\n        \"same promise\"\n      ],\n      \"protocol\": \"Change one factor; predeclare metric, time window and minimum exposure. Log confounders and inconclusive results.\"\n    },\n    \"18_analytics\": {\n      \"primary_metric\": \"saves per reached account\",\n      \"observations\": \"NOT RUN; metrics.json uses nulls, not fabricated counts.\"\n    },\n    \"19_generation_rules\": {\n      \"inputs\": [\n        \"knowledge.json\",\n        \"actual audience observations\",\n        \"current rules\",\n        \"format limits\",\n        \"rights/permissions\",\n        \"source dates\"\n      ],\n      \"outputs\": [\n        \"native draft\",\n        \"controlled A/B\",\n        \"media/caption plan\",\n        \"sources and factual review\",\n        \"rubric with reasons\",\n        \"approval request\",\n        \"measurement plan\"\n      ],\n      \"state_machine\": [\n        \"DRAFT\",\n        \"REVIEW_REQUESTED\",\n        \"APPROVED_BY_AUTHORIZED_HUMAN\",\n        \"PUBLISHED_BY_AUTHORIZED_HUMAN\",\n        \"MEASURED\",\n        \"CORRECTED\"\n      ],\n      \"stop_conditions\": [\n        \"Missing audience/source\",\n        \"Unknown media rights\",\n        \"Unsupported claim\",\n        \"Unverified current publishing limit\",\n        \"No publication authorization\"\n      ],\n      \"scope\": \"Offline authoring and local validation only; no account connection or publishing tool provided.\"\n    },\n    \"20_b3_knowledge_layer\": {\n      \"artifacts\": [\n        \"knowledge.json\",\n        \"rag.jsonl\",\n        \"claims.json\",\n        \"agent-card.json\",\n        \"provenance-notes.md\"\n      ],\n      \"limits\": \"Lexical demonstration, unsigned integrity hashes, no guaranteed model training or future SI coordination.\"\n    }\n  },\n  \"source_scope\": \"Primary documentation and original editorial design. Feature description is not account-execution evidence.\"\n}\n",
      "filename": "agent-training.json",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R026",
      "name": "agent-training.json.VERSION_HISTORY.txt",
      "type": "txt",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n",
      "filename": "agent-training.json.VERSION_HISTORY.txt",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R027",
      "name": "AGENT_OPERATING_MANUAL.md",
      "type": "md",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n\n# Instagram Content Agent operating manual\n\nAudience: A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims.\n\nRead all twenty points in agent-training.json before drafting. Preserve concrete inputs, native output, actual evidence and a review request. This pack has no publishing integration.\n\nNative action chain: Save the ingredient sequence → Share with a cooking friend → Follow tested recipes → Comment with an assembly question\n\nNative AI: Meta documents AI video editing in Edits and Meta AI. Creative restyling is separate from demonstrating a real recipe. Account availability and export behavior need checks.\nPrimary source: https://about.fb.com/news/2025/06/edit-videos-with-meta-ai/\n\nReview actual account availability, documented inputs/outputs and a privacy/failure limit. Keep NOT VERIFIED when access is absent. Generate a native draft, not an invented performance report. Submit source, rights and preflight evidence before publication; log real outcomes only after authorized use.\n",
      "filename": "AGENT_OPERATING_MANUAL.md",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R028",
      "name": "audience.md",
      "type": "md",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n\n# Instagram audience\n\nTopic: Overnight oats assembly\nAudience: A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims.\n\nThe worksheet is a production draft. Save specific decisions, source URLs, dates and observed results. Never fill a result with imagined analytics.\n\n## Map the visual platform\nList Feed, Reels, Stories, carousel, Live, Notes, bio, Highlights, comments, DMs and broadcast channels. Compare personal, creator and business needs; select a food carousel for saveable assembly steps.\n\nYour artifact / evidence:\n\n## Observe the audience and distribution\nReview two public food posts and current official guidance. Note follower distribution versus Explore/Reels discovery, readable text and a meaningful save use case without inventing universal signal weights.\n\nYour artifact / evidence:\n\n## Set a recognizable visual identity\nChoose education, demonstration, commentary and culture pillars for the food account. Sketch a palette, type hierarchy and repeatable jar framing that stays readable at 390px.\n\nYour artifact / evidence:\n\n## Write a semantic visual hook\nDraft WHO + WHAT + WHY + VALUE in the first frame: busy home cook, overnight oats, assembly friction, clear prep sequence. Compare a visual movement hook, a question hook and a before/after hook.\n\nYour artifact / evidence:\n\n## Research a real search intent\nWrite informational, navigational and commercial query examples. Draft a display name, bio and first caption line related to the food topic; observe actual suggestions when available.\n\nYour artifact / evidence:\n\n## Build the ten-layer keyword stack\nMap speech, overlays, caption, relevant hashtags, profile, comments, bio link, canonical page, source recipe and structured object. Use only available relevant hashtag capacity after checking the current composer.\n\nYour artifact / evidence:\n\n",
      "filename": "audience.md",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R029",
      "name": "native-production.md",
      "type": "md",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n\n# Instagram native-production\n\nTopic: Overnight oats assembly\nAudience: A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims.\n\nThe worksheet is a production draft. Save specific decisions, source URLs, dates and observed results. Never fill a result with imagined analytics.\n\n## Map the visual platform\nList Feed, Reels, Stories, carousel, Live, Notes, bio, Highlights, comments, DMs and broadcast channels. Compare personal, creator and business needs; select a food carousel for saveable assembly steps.\n\nYour artifact / evidence:\n\n## Observe the audience and distribution\nReview two public food posts and current official guidance. Note follower distribution versus Explore/Reels discovery, readable text and a meaningful save use case without inventing universal signal weights.\n\nYour artifact / evidence:\n\n## Set a recognizable visual identity\nChoose education, demonstration, commentary and culture pillars for the food account. Sketch a palette, type hierarchy and repeatable jar framing that stays readable at 390px.\n\nYour artifact / evidence:\n\n## Write a semantic visual hook\nDraft WHO + WHAT + WHY + VALUE in the first frame: busy home cook, overnight oats, assembly friction, clear prep sequence. Compare a visual movement hook, a question hook and a before/after hook.\n\nYour artifact / evidence:\n\n## Research a real search intent\nWrite informational, navigational and commercial query examples. Draft a display name, bio and first caption line related to the food topic; observe actual suggestions when available.\n\nYour artifact / evidence:\n\n## Build the ten-layer keyword stack\nMap speech, overlays, caption, relevant hashtags, profile, comments, bio link, canonical page, source recipe and structured object. Use only available relevant hashtag capacity after checking the current composer.\n\nYour artifact / evidence:\n\n## Compare the same carousel\nOpen studio.html and compare A/B caption drafts for the same ten-slide carousel. Keep visual promise fixed; add rolled oats, clear sequence and a real question while preserving warmth.\n\nYour artifact / evidence:\n\n## Draft the knowledge-layer caption\nWrite topic, assembly problem, method, ingredients, steps, caveats and source attribution in caption.md. Do not claim calories or storage duration without checked support.\n\nYour artifact / evidence:\n\n## Plan OCR-readable overlays\nCreate a slide text list with large labels, high contrast and margins clear of UI overlays. View a draft at phone width and ask someone to identify the ingredients without the caption.\n\nYour artifact / evidence:\n\n## Build the ten-slide carousel\nOutline hook, problem, concept, method, diagram, common mistake, corrected approach, checklist, companion action and next step. Keep the public recipe sequence native; place pack validation commands in the companion resource.\n\nYour artifact / evidence:\n\n## Make a standalone Reel\nStoryboard question → answer → explanation → demonstration → next step in 30–60 seconds. Align jar footage, spoken ingredient names and captions; deliver one full answer rather than withholding a payoff.\n\nYour artifact / evidence:\n\n## Connect the knowledge chain\nPlan five independent food Reels and link them to the carousel, Highlight and full recipe page. Check each can be understood without earlier clips.\n\nYour artifact / evidence:\n\n## Use Stories as a living lab\nDraft a poll, a behind-the-scenes assembly image and a question sticker. Explain the 24-hour Story lifecycle and route a useful question to a permanent Highlight or corrected carousel.\n\nYour artifact / evidence:\n\n## Respond and verify community claims\nWrite replies to ingredient-substitution, missing-step and evidence questions. Classify opinion, anecdote, first-hand test, documented evidence, expert explanation and independently verified result.\n\nYour artifact / evidence:\n\n## Localize and define the food entities\nTranslate a caption cue or prepare a fluent-review brief. Define rolled oats and overnight oats consistently and retain ingredient names across slide, transcript and glossary.\n\nYour artifact / evidence:\n\n## Build a food knowledge graph\nConnect ingredient → used in → breakfast jar and step → precedes → mixing. Include source recipe and creator attribution; distinguish the method from claimed health benefits.\n\nYour artifact / evidence:\n\n## Plan the content factory\nDerive Reel, carousel, Stories, YouTube explanation, TikTok demo, LinkedIn production case study, X observation and canonical recipe from one source. Show how a nightly B3 segment could supply original footage and questions.\n\nYour artifact / evidence:\n\n## Design the six-version capstone\nDraft social, search, explicit-entity, retrieval, agent-card and provenance versions. Keep the recipe topic and audience fixed. Public visuals remain a food sequence; machine cards stay in a companion layer.\n\nYour artifact / evidence:\n\n## Plan ten experiments and seven audit lenses\nIn experiments.md define hook, tags, overlay, localization, real-experience evidence, series, carousel, companion action, Story loop and full-stack tests. Review human, platform, search, AI, retrieval, agent and trust lenses.\n\nYour artifact / evidence:\n\n## Approve a complete visual package\nReview actual photo permissions, recipe status, caption accuracy and machine-readable companion files. Separate current vision/captions from emerging browsing and speculative SI. No fabricated OCR accuracy or AI citation uplift.\n\nYour artifact / evidence:\n\n",
      "filename": "native-production.md",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R030",
      "name": "caption.md",
      "type": "md",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n\n# Instagram caption\n\nTopic: Overnight oats assembly\nAudience: A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims.\n\nThe worksheet is a production draft. Save specific decisions, source URLs, dates and observed results. Never fill a result with imagined analytics.\n\n## Write a semantic visual hook\nDraft WHO + WHAT + WHY + VALUE in the first frame: busy home cook, overnight oats, assembly friction, clear prep sequence. Compare a visual movement hook, a question hook and a before/after hook.\n\nYour artifact / evidence:\n\n## Compare the same carousel\nOpen studio.html and compare A/B caption drafts for the same ten-slide carousel. Keep visual promise fixed; add rolled oats, clear sequence and a real question while preserving warmth.\n\nYour artifact / evidence:\n\n## Draft the knowledge-layer caption\nWrite topic, assembly problem, method, ingredients, steps, caveats and source attribution in caption.md. Do not claim calories or storage duration without checked support.\n\nYour artifact / evidence:\n\n## Plan OCR-readable overlays\nCreate a slide text list with large labels, high contrast and margins clear of UI overlays. View a draft at phone width and ask someone to identify the ingredients without the caption.\n\nYour artifact / evidence:\n\n## Build the ten-slide carousel\nOutline hook, problem, concept, method, diagram, common mistake, corrected approach, checklist, companion action and next step. Keep the public recipe sequence native; place pack validation commands in the companion resource.\n\nYour artifact / evidence:\n\n",
      "filename": "caption.md",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R031",
      "name": "diagnostic-log.md",
      "type": "md",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n\n# Instagram diagnostic-log\n\nTopic: Overnight oats assembly\nAudience: A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims.\n\nThe worksheet is a production draft. Save specific decisions, source URLs, dates and observed results. Never fill a result with imagined analytics.\n\n## Observe the audience and distribution\nReview two public food posts and current official guidance. Note follower distribution versus Explore/Reels discovery, readable text and a meaningful save use case without inventing universal signal weights.\n\nYour artifact / evidence:\n\n## Respond and verify community claims\nWrite replies to ingredient-substitution, missing-step and evidence questions. Classify opinion, anecdote, first-hand test, documented evidence, expert explanation and independently verified result.\n\nYour artifact / evidence:\n\n",
      "filename": "diagnostic-log.md",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R032",
      "name": "capstone.md",
      "type": "md",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n\n# Instagram capstone\n\nTopic: Overnight oats assembly\nAudience: A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims.\n\nThe worksheet is a production draft. Save specific decisions, source URLs, dates and observed results. Never fill a result with imagined analytics.\n\n## Plan the content factory\nDerive Reel, carousel, Stories, YouTube explanation, TikTok demo, LinkedIn production case study, X observation and canonical recipe from one source. Show how a nightly B3 segment could supply original footage and questions.\n\nYour artifact / evidence:\n\n## Design the six-version capstone\nDraft social, search, explicit-entity, retrieval, agent-card and provenance versions. Keep the recipe topic and audience fixed. Public visuals remain a food sequence; machine cards stay in a companion layer.\n\nYour artifact / evidence:\n\n## Plan ten experiments and seven audit lenses\nIn experiments.md define hook, tags, overlay, localization, real-experience evidence, series, carousel, companion action, Story loop and full-stack tests. Review human, platform, search, AI, retrieval, agent and trust lenses.\n\nYour artifact / evidence:\n\n## Approve a complete visual package\nReview actual photo permissions, recipe status, caption accuracy and machine-readable companion files. Separate current vision/captions from emerging browsing and speculative SI. No fabricated OCR accuracy or AI citation uplift.\n\nYour artifact / evidence:\n\n",
      "filename": "capstone.md",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R033",
      "name": "experiments.md",
      "type": "md",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n\n# Instagram experiments\n\nTopic: Overnight oats assembly\nAudience: A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims.\n\nThe worksheet is a production draft. Save specific decisions, source URLs, dates and observed results. Never fill a result with imagined analytics.\n\n## Plan ten experiments and seven audit lenses\nIn experiments.md define hook, tags, overlay, localization, real-experience evidence, series, carousel, companion action, Story loop and full-stack tests. Review human, platform, search, AI, retrieval, agent and trust lenses.\n\nYour artifact / evidence:\n\n",
      "filename": "experiments.md",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R034",
      "name": "requirements-map.md",
      "type": "md",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n\n# Shared-brief coverage\n\n### PART 1 — Instagram Fundamentals\nOwn exercise: Map the visual platform\n\n### PART 2 — The Instagram Content Ecosystem\nOwn exercise: Observe the audience and distribution\n\n### PART 3 — Creating Great Instagram Content\nOwn exercise: Set a recognizable visual identity\n\n### PART 4 — Instagram Hooks & The Semantic Hook\nOwn exercise: Write a semantic visual hook\n\n### PART 5 — Instagram SEO (Search Engine Optimization)\nOwn exercise: Research a real search intent\n\n### PART 6 — The Instagram Keyword Stack\nOwn exercise: Build the ten-layer keyword stack\n\n### PART 7 — Instagram as Multimodal Content\nOwn exercise: Make a standalone Reel\n\n### PART 8 — Instagram Captions as a Knowledge Layer\nOwn exercise: Draft the knowledge-layer caption\n\n### PART 9 — On-Screen Text as Semantic Data\nOwn exercise: Plan OCR-readable overlays\n\n### PART 10 — Instagram Reels as Micro-Knowledge Objects\nOwn exercise: Build the ten-slide carousel\n\n### PART 11 — The Instagram Knowledge Chain\nOwn exercise: Connect the knowledge chain\n\n### PART 12 — Instagram Carousels as Structured Knowledge\nOwn exercise: Build the ten-slide carousel\n\n### PART 13 — Instagram Stories as Context & Living Lab\nOwn exercise: Use Stories as a living lab\n\n### PART 14 — Comments as Community Knowledge\nOwn exercise: Respond and verify community claims\n\n### PART 15 — Instagram Communities & Human Knowledge Verification\nOwn exercise: Respond and verify community claims\n\n### PART 16 — Multilingual Instagram Content\nOwn exercise: Localize and define the food entities\n\n### PART 17 — Entity-First Instagram\nOwn exercise: Localize and define the food entities\n\n### PART 18 — Knowledge Graph Thinking\nOwn exercise: Build a food knowledge graph\n\n### PART 19 — RAG-Ready Instagram Content\nOwn exercise: Companion knowledge and truthful claims: mechanisms.md, claims.json, knowledge.json, rag.jsonl\n\n### PART 20 — Agent-Ready Instagram Content\nOwn exercise: Hash and lint the reviewed files; agent-card.json (three operating systems)\n\n### PART 21 — Instagram → AI Answer\nOwn exercise: Run a source-linked retrieval probe; media_pack.py retrieve\n\n### PART 22 — Instagram → Agent Action\nOwn exercise: Hash and lint the reviewed files; agent-card.json (three operating systems)\n\n### PART 23 — Content Provenance & Authenticity Ledgers\nOwn exercise: Record provenance and a human approval decision; provenance-notes.md\n\n### PART 24 — Human Knowledge vs Synthetic Content\nOwn exercise: Respond and verify community claims\n\n### PART 25 — The Instagram Algorithm vs The Knowledge Algorithm\nOwn exercise: Approve a complete visual package\n\n### PART 26 — The B3 Instagram Content Stack\nOwn exercise: Plan the content factory\n\n### PART 27 — The B3 AI Readiness Score (0–100)\nOwn exercise: Use the readiness calculator; studio.html and rubric.json\n\n### PART 28 — Instagram Content Factory\nOwn exercise: Plan the content factory\n\n### PART 29 — Instagram → Multi-Platform Knowledge\nOwn exercise: Plan the content factory\n\n### PART 30 — Late Night with Build Bots Better\nOwn exercise: Plan the content factory\n\n### PART 31 — The B3 Content Flywheel\nOwn exercise: Respond and verify community claims\n\n### PART 32 — Content for Humans + AI + Agents\nOwn exercise: Plan ten experiments and seven audit lenses\n\n### PART 33 — Beyond the Algorithm\nOwn exercise: Approve a complete visual package\n\n### PART 34 — The Future Instagram Creator\nOwn exercise: Approve a complete visual package\n\n### PART 35 — Build Bots Better Empirical Experiments (1–10)\nOwn exercise: Plan ten experiments and seven audit lenses\n\n### PART 36 — The B3 Instagram Content Audit Checklist\nOwn exercise: Plan ten experiments and seven audit lenses\n\n### PART 37 — The Future of Instagram & Social Computing\nOwn exercise: Approve a complete visual package\n\n### PART 38 — The Evolution of Social Media Optimization\nOwn exercise: Approve a complete visual package\n\n",
      "filename": "requirements-map.md",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R035",
      "name": "strategy.json",
      "type": "json",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "{\n  \"platform\": \"Instagram\",\n  \"progression\": [\n    \"Traditional social\",\n    \"Instagram optimization\",\n    \"Search\",\n    \"AI discoverability\",\n    \"Retrieval\",\n    \"Agentic discovery\",\n    \"Future intelligence (speculative)\"\n  ],\n  \"epistemic_status\": \"Editorial framework; optimization stages do not guarantee distribution or learning\",\n  \"audiences\": [\n    \"human\",\n    \"platform\",\n    \"search/retrieval\",\n    \"authorized agent\"\n  ],\n  \"human_utility\": \"A home cook wants attractive, saveable meal-prep ideas and a clear visual sequence. The worked example is an overnight-oats assembly carousel, with no invented nutrition claims.\",\n  \"measurement\": \"Compare the same topic, format, audience and promise. Change one independent variable per audience test.\"\n}\n",
      "filename": "strategy.json",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R036",
      "name": "strategy.json.VERSION_HISTORY.txt",
      "type": "txt",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n",
      "filename": "strategy.json.VERSION_HISTORY.txt",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R037",
      "name": "mechanisms.md",
      "type": "md",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n\n# Discovery mechanisms and truth labels\n\nTraining and fine-tuning alter model weights; publishing a post cannot force either. RLHF/RLAIF uses preference data and is separate from inference. Crawling and public/in-app search build accessible indexes; private posts, robots rules, terms and APIs constrain access. Embeddings represent semantic similarity; vector databases retrieve vectors. RAG retrieves external chunks into context, while context windows are temporary inference inputs. Graphs encode named relationships. Recommendation systems rank candidate content for an audience. AI answers and citations may summarize accessible sources; citations are observed, not guaranteed. Provenance records origin and byte changes. Machine-readable schemas describe content but do not force rich results. Multimodal OCR/ASR interprets image/audio and requires human correction. Agent browsing/retrieval adds goal-driven tool actions. Licensed and enterprise repositories have explicit access contracts. Platform-specific AI features must be checked for account/region/version availability. Future SI learning and coordination is speculative.\n\nTaxonomy: ESTABLISHED requires a direct source; EVIDENCE-SUPPORTED requires reproducible observations; EMERGING describes a dated deployment; HYPOTHESIS is a proposed test; SPECULATION is a future possibility. The shared briefs use different counts/groupings (13,16,18); retain distinctions rather than inventing a uniform number. SI is not a promise of permanent model learning or a synonym for semantic indexing.\n",
      "filename": "mechanisms.md",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "filename": "source-instagram-content-ai-si-agentic-era.md",
      "contents": "# BuildBotsBetter Specification: Creating Instagram Content for the AI, SI, and Agentic Era\n\n## Course Metadata\n- **Task Key**: `instagram-content-ai-si-agentic-era`\n- **Course Title**: Creating Instagram Content for the AI, SI, and Agentic Era\n- **Subtitle**: Beyond Likes, Reach, and the Feed — Architecting Visual, Carousel, and Video Knowledge Humans Value, Instagram Recommends, AI Interprets, and Autonomous Agents Can Act Upon\n- **Category**: Social Media Engineering & Future Intelligence\n- **Target Audience**: Creators, technical founders, marketers, educators, community leaders, and autonomous agent developers\n- **Course Mission**: Create a comprehensive, practical, forward-looking Build Bots Better course that teaches how to create Instagram content that succeeds in today's Instagram ecosystem while also becoming increasingly understandable, discoverable, retrievable, contextual, and useful within the emerging AI, Superintelligence (SI), and Agentic Era.\n\n---\n\n## The Central Thesis\n> **\"Don't just create Instagram content that gets seen today. Create knowledge that can still be discovered, understood, trusted, retrieved, and used tomorrow.\"**\n\nMost social-media education asks:\n- How do I get more followers?\n- How do I get more likes?\n- How do I get more comments?\n- How do I go viral?\n- How do I beat the Instagram algorithm?\n\nThis course evolves those questions across **The Seven Stages of Information Maturity**:\n1. **Stage 1 — Traditional Social Media**: How do I create content people want to see?\n2. **Stage 2 — Instagram Optimization**: How do I create content Instagram can discover and recommend?\n3. **Stage 3 — Search Optimization**: How do I create content people can find when they search?\n4. **Stage 4 — AI Discoverability**: How do I create content AI systems can understand?\n5. **Stage 5 — AI Retrieval**: How do I structure content so relevant information can be retrieved from it?\n6. **Stage 6 — Agentic Discovery**: How do I create content that AI agents can discover, interpret, evaluate, and potentially use as part of completing tasks?\n7. **Stage 7 — Future Intelligence**: How do I create content that contributes to the emerging global information ecosystem?\n\n---\n\n## Epistemic Rigor & The AI Training Data Boundary\n\n### Crucial Distinction\nCreators CANNOT simply add keywords, captions, hashtags, or metadata and magically force a foundational AI model to train on their content. Base model pre-training corpora are proprietary, heavily filtered, deduplicated, and temporally frozen.\n\nInstead, creators must clearly distinguish between 18 distinct machine-interaction mechanisms:\n1. Model Pretraining Datasets\n2. Supervised Fine-Tuning (SFT) & Instruction Datasets\n3. Reinforcement Learning from Human/AI Feedback (RLHF/RLAIF)\n4. Search Engine Crawling & Web Indexing\n5. Social Platform In-App Search Indexing\n6. Vector Embedding Projections & Dense Semantic Search\n7. Retrieval-Augmented Generation (RAG)\n8. In-Context Window Retrieval & Chunk Selection\n9. Knowledge Graphs & Entity-Relationship Triples\n10. Social Recommendation Systems (Graph Neural Networks & Two-Tower Embeddings)\n11. Generative Engine Optimization (GEO) & AI Answer Summaries\n12. LLM Source Attribution & Web Citations\n13. Content Provenance, Cryptographic Signatures (C2PA) & Authenticity Ledgers\n14. Autonomous AI Agent Web Browsing & Tool Use\n15. Machine-Readable Structured Data (Schema.org, JSON-LD, Microdata)\n16. Publicly Accessible Web Surface APIs\n17. Multimodal Video/Image Feature Tokenization (OCR, Vision-Language Models)\n18. Future Synthetic Intelligence (SI) Dynamic Learning Environments\n\n### Epistemic Labeling Taxonomy\nEvery insight and claim in this course is strictly categorized:\n- **[ESTABLISHED]**: Verified by official Meta documentation, Instagram engineering papers, W3C standards, or peer-reviewed research.\n- **[EVIDENCE-SUPPORTED]**: Observed in reproducible creator experiments, industry empirical studies, and verified search crawler behavior.\n- **[EMERGING]**: Active developments in early deployment (e.g., multimodal agent browsing, Meta AI in-feed search, real-time RAG ingestion).\n- **[HYPOTHESIS]**: Conceptually grounded frameworks being tested across Build Bots Better testbeds.\n- **[SPECULATION]**: Theoretical trajectories regarding long-term Superintelligence (SI) knowledge convergence.\n\n---\n\n## Complete 38-Part Curriculum Blueprint\n\n### PART 1 — Instagram Fundamentals\n- Foundational architecture: What Instagram actually is in the modern era.\n- Core formats and their functional affordances: Feed Posts (1:1, 4:5), Reels (9:16 vertical video), Stories (24h ephemeral context), Carousels (up to 20 structured slides), Live (real-time interactive broadcast), Notes (micro-status updates), Profiles & Bio, Story Highlights (permanent topic archives), Comments threads, Direct Messages (DMs & broadcast channels).\n- Account topologies: Creator Accounts, Business Accounts, Personal Brands, Enterprise Organizations, Topic Communities.\n- The Relationship Funnel: Attention → Engagement → Relationship → Trust → Conversion → Community.\n\n### PART 2 — The Instagram Content Ecosystem\n- Feed, Reels tab, Stories tray, Explore grid, Instagram Search, Profile grids, Hashtag pages, Audio pages.\n- Distribution mechanics: Connected distribution (followers) vs Unconnected discovery (Explore, Suggested Posts, Reels feed).\n- Engagement signal hierarchy: Watch time / completion rate, Saves (high utility), Shares / DMs (relational velocity), Meaningful Comments (conversation depth), Likes (low signal).\n- The Content Journey: Post → Comment → Share → Save → Profile Visit → Follow → Story Interaction → DM Conversation → Knowledge Community → Customer.\n\n### PART 3 — Creating Great Instagram Content\n- Core components: Target Audience persona, Narrow Technical Niche, Clear Market Positioning, Personal Brand vs Brand Identity.\n- The 4-Pillar Content Matrix: Education (utility), Demonstration (proof), Commentary (perspective), Culture (connection).\n- Visual identity and aesthetic discipline: Grid cohesion, high-contrast typography, recognizable color palettes.\n- Emotional resonance triggers: Intellectual Curiosity, Professional Relief, Problem Elimination, Paradigm Shifts, Technical Delight.\n- The decisive difference: Content people passively consume vs Content people actively bookmark, apply, and remember.\n\n### PART 4 — Instagram Hooks & The Semantic Hook\n- Hook taxonomy: First-second visual hook, On-screen text hook, Spoken audio hook, Contrarian hook, Question hook, Story/Transformation hook, Pattern interrupt.\n- The Semantic Hook Formula: **WHO + WHAT + WHY + VALUE** in under 3 seconds.\n  - *Weak / Clickbait*: \"This AI tool is insane! 😱\"\n  - *Strong Semantic Hook*: \"If you run Python automation, here is why your SQLite database locks under multi-agent load — and the exact 3-line WAL fix.\"\n- The critical contrast: Viral Ambiguity (cheap clicks, quick drop-off, zero semantic data) vs Semantic Clarity (qualified viewers, high retention, instant machine classification).\n\n### PART 5 — Instagram SEO (Search Engine Optimization)\n- In-app search indexing mechanisms: How Instagram matches user search queries to accounts, audio, hashtags, and posts.\n- Search surface targets: Profile Username, Display Name (high-intent keyword field), Bio copy, Captions, Alt Text (accessibility and OCR crawler index), Spoken transcripts (Whisper/ASR), On-screen typography.\n- Search Intent classification: Informational (How to / What is), Navigational (Tool / Creator), Commercial (Best agent framework), Transactional (Download / Enroll).\n- From \"What hashtag looks popular?\" to \"What exact technical question is an engineer typing into the search bar?\"\n\n### PART 6 — The Instagram Keyword Stack\n- The 10-Layer Semantic Reinforcement Model:\n  1. Layer 1: Spoken words in audio track\n  2. Layer 2: On-screen burned-in text overlays\n  3. Layer 3: Written caption body and first line\n  4. Layer 4: Curated semantic hashtags (5-8 specific entity tags)\n  5. Layer 5: Profile name, username, and bio keywords\n  6. Layer 6: Creator pinned comments and discussion replies\n  7. Layer 7: Link in bio / Story link stickers\n  8. Layer 8: Destination website canonical landing page\n  9. Layer 9: External technical documentation & source repositories\n  10. Layer 10: Structured Knowledge Object (JSON-LD schema & Wikidata entities)\n- The Golden Rule: **\"Say it + Show it + Write it + Contextualize it.\"**\n\n### PART 7 — Instagram as Multimodal Content\n- Instagram posts as compound multimodal datasets: Raster images, video frames (H.264/HEVC), audio phonemes, speech transcripts, on-screen glyphs, caption text, metadata tags, location beacons, engagement vectors.\n- The B3 Multimodal Content Stack: **Visual + Audio + Speech + Text + Caption + Metadata + Context + Links + Community Discussion**.\n- Preventing Multimodal Semantic Drift: Ensuring that the visual frame, the spoken words, and the written text all describe the exact same entity and action to eliminate AI hallucination during ingestion.\n\n### PART 8 — Instagram Captions as a Knowledge Layer\n- Moving beyond marketing copywriting and engagement bait.\n- The Anatomy of a Knowledge-Layer Caption:\n  - Header: Explicit topic and semantic hook\n  - Problem Statement: Who this affects and why standard approaches fail\n  - Core Principle / Architecture: Definitive technical explanation\n  - Named Entities: Software packages, version numbers, protocols, authors\n  - Executable Code or Step-by-Step Procedure: Exact commands with flags\n  - Caveats & Edge Cases: Known limitations and fail-safes\n  - Citation / Provenance: Source documentation and verification link\n- Comparative analysis: Engagement Caption vs Knowledge-Layer Caption.\n\n### PART 9 — On-Screen Text as Semantic Data\n- Computer Vision and Optical Character Recognition (OCR) in social indexing.\n- The Semantic Overlay: Headlines, Labels, Definitions, Steps, Parameters, Key Takeaways.\n- High-contrast visual typography design: Readable on mobile screens (390px), resistant to video compression artifacts, unambiguous layout hierarchy.\n- Bad vs Good overlays: \"Mind = Blown 🤯\" vs \"FastAPI Connection Pool: max_overflow=20 pool_size=10\".\n\n### PART 10 — Instagram Reels as Micro-Knowledge Objects\n- Short-form vertical video (9:16) as atomic educational packets.\n- The B3 Micro-Knowledge Formula: **Question → Answer → Explanation → Demonstration → Next Step**.\n- 60-second atomic constraints: Answer exactly ONE technical question completely. Never cut off an answer to force a part 2 without delivering standalone resolution.\n- Engineering the Micro-Reel for re-watchability and high save rate.\n\n### PART 11 — The Instagram Knowledge Chain\n- Linking standalone micro-knowledge units into an interconnected graph:\n  - Reel 1: *What is an AI Agent Tool Call?*\n  - Reel 2: *How do Agents Authenticate with APIs via OAuth2?*\n  - Reel 3: *Preventing Prompt Injection in Agent Tool Parameters*\n  - Reel 4: *Handling Agent Retries and Exponential Backoff*\n  - Reel 5: *Testing Agent CLI Tools in Sandboxed Docker Environments*\n  - Carousel: *The Complete Production AI Agent Tool Architecture*\n  - Long-form Masterclass: *End-to-End Autonomous Agent Engineering*\n  - Dedicated Course & Repository: *Build Bots Better Agent Framework*\n- Cross-referencing via pinned comments, audio continuity, and Story Highlights.\n\n### PART 12 — Instagram Carousels as Structured Knowledge\n- The carousel format (up to 20 slides) as Instagram's highest-density knowledge vehicle.\n- The Standard 10-Slide Educational Architecture:\n  - Slide 1: High-Intent Question / Semantic Hook\n  - Slide 2: The Core Friction / Problem Overview\n  - Slide 3: The Foundational Concept / Mental Model\n  - Slide 4: Deep Technical Explanation\n  - Slide 5: Real-World Visual Diagram or Architecture Flow\n  - Slide 6: The Critical Common Mistake\n  - Slide 7: The Verified Production Solution\n  - Slide 8: Actionable Implementation Checklist / Code Snippet\n  - Slide 9: Multi-OS Terminal Execution Card\n  - Slide 10: Clear Next Step, Resource Link, and Community Discussion Prompt\n- The AI-Readable Carousel: Designing each slide with self-contained text, explicit labels, and zero ambiguous pronoun dependencies.\n\n### PART 13 — Instagram Stories as Context & Living Lab\n- Ephemeral 24-hour content as a real-time testing ground and context provider.\n- Use cases: Live technical debugging, behind-the-scenes terminal logs, community polls, open questions, interactive quizzes, direct links.\n- The Story-to-Knowledge Pipeline: Story Question / Poll → Community Friction Uncovered → Real-time DM Diagnosis → Micro-Reel Demonstration → 10-Slide Carousel Reference → Permanent Highlight → Core Course Module.\n\n### PART 14 — Comments as Community Knowledge\n- Moving beyond vanity engagement metrics: Comments as qualitative human knowledge signals.\n- The Anatomy of High-Value Comments: Edge cases, operating system differences, version deprecations, alternative tools, counter-evidence.\n- The B3 Instagram Knowledge Loop:\n  - Content Published → Technical Question Asked → Community Member Comments with Edge Case → Author Answers with Verified Fix → Follow-up Dialogue → FAQ Extraction → New Dedicated Reel / Carousel → Course Curriculum Update → Knowledge Graph Triples.\n\n### PART 15 — Instagram Communities & Human Knowledge Verification\n- The Epistemic Spectrum of Community Content:\n  - Level 1: Pure Unverified Opinion (\"Tool X is trash\")\n  - Level 2: Anecdotal Observation (\"It broke on my laptop\")\n  - Level 3: First-Hand Empirical Experience (\"Running on Windows 11 with Node 22 threw error code 1\")\n  - Level 4: Documented Evidence (Terminal screenshot, reproducible script, network log)\n  - Level 5: Expert Explanation (Source code trace, root cause analysis)\n  - Level 6: Verified Benchmark (Peer-reviewed reproduction, multi-platform test pass)\n- Transforming an audience into a collaborative, truth-seeking technical community.\n\n### PART 16 — Multilingual Instagram Content\n- Unlocking global discoverability across linguistic boundaries.\n- The Multilingual Knowledge Layer: Providing translated captions, localized terminology, synchronized subtitles, and cross-lingual hashtags across English, Spanish, French, German, Japanese, Portuguese, Hindi, and Mandarin.\n- Grounding in Multilingual Dense Embeddings: How vector models (e.g., Multilingual E5, mBERT) project translated technical terms to identical coordinates in semantic latent space.\n\n### PART 17 — Entity-First Instagram\n- Entity-Based Content Engineering: Grounding social media content in recognized entities (Wikidata, schema.org, Google Knowledge Graph).\n- The Entity Definition Formula: **Entity + Category + Function + Mechanism + Context**.\n  - *Vague*: \"Check out this crazy new coding bot!\"\n  - *Entity-First*: \"OpenAI Codex is an LLM-powered agentic coding system designed to translate natural language specifications into deterministic software code, test suites, and terminal executions.\"\n\n### PART 18 — Knowledge Graph Thinking\n- Conceptualizing Instagram content as a collection of connected triples: **(Subject, Predicate, Object)**.\n- Examples:\n  - *(ChatGPT Codex, implements, Tool Use)*\n  - *(FastAPI, utilizes, Pydantic)*\n  - *(RAG Architecture, requires, Vector Embeddings)*\n  - *(Build Bots Better, publishes, Agentic Courseware)*\n- Structuring posts, captions, and carousel slides to make semantic relationships explicit.\n\n### PART 19 — RAG-Ready Instagram Content\n- Retrieval-Augmented Generation (RAG) ingestion workflows for social media data.\n- Atomic Proposition Chunking: Splitting captions and slide transcripts into self-contained factual sentences.\n- The B3 Knowledge Object Specification (JSON schema):\n  - `topic`, `question`, `answer`, `context`, `example`, `entities`, `sources`, `related_topics`, `keywords`, `language`, `date_created`, `author`, `next_action`.\n\n### PART 20 — Agent-Ready Instagram Content\n- Architecting content for consumption and execution by autonomous AI agents (browsing agents, coding bots, personal assistants).\n- The Eight Agent Qualification Questions:\n  1. What is this entity?\n  2. Who created it?\n  3. What exact task does it perform?\n  4. When was it published or updated?\n  5. What prerequisites and dependencies are required?\n  6. What verified evidence or logs support it?\n  7. Which operating systems and environments does it run on?\n  8. What is the deterministic next action?\n\n### PART 21 — Instagram → AI Answer\n- The End-to-End Citation Pipeline:\n  - Instagram Reel/Carousel Published → Search Engine Ingestion & OCR/ASR Extraction → Entity Disambiguation → Vector Embedding → User Prompts AI Answer Engine (SearchGPT, Perplexity, Gemini) → Semantic Retrieval → Synthesis & Direct Source Citation.\n- How semantic clarity and explicit citations increase the probability of authoritative AI attribution.\n\n### PART 22 — Instagram → Agent Action\n- Transforming a promotional post into a deterministic agent execution card.\n- Structuring technical service and tutorial offerings into machine-parseable parameters: Problem, Audience, Toolchain, Environment Variables, CLI Commands, Verification Exit Codes.\n\n### PART 23 — Content Provenance & Authenticity Ledgers\n- The growing necessity of verifiable digital provenance in the era of deepfakes and AI-generated media.\n- Technical mechanisms: C2PA (Coalition for Content Provenance and Authenticity) metadata, cryptographic manifest signing, verified creator identity, source code commit hashes, timestamp anchoring.\n- The Trust Formula: **Trust = Provenance + Reproducibility + Verifiable Evidence**.\n\n### PART 24 — Human Knowledge vs Synthetic Content\n- The looming crisis of \"Synthetic Slop\" and Model Collapse: AI models trained on recursively generated AI content degrading in coherence and factual fidelity.\n- The Premium Value of the \"Human Signal\": First-hand hardware debugging, real production failures, messy terminal error logs, physical lab demonstrations, authentic creative intuition.\n- The B3 Human Signal Formula: **Original Experience + Concrete Evidence + Full Context + Provenance**.\n\n### PART 25 — The Instagram Algorithm vs The Knowledge Algorithm\n- Two Distinct Optimization Targets:\n  - **The Instagram Algorithm**: Optimizes for session retention, immediate viral velocity, watch time, comment controversies, and platform ad inventory.\n  - **The Knowledge Algorithm**: Optimizes for informational precision, entity clarity, retrieval accuracy, semantic longevity, and verifiable utility.\n- The Master Creator's Strategy: Optimize the outer shell for Instagram distribution; optimize the inner core for knowledge longevity.\n\n### PART 26 — The B3 Instagram Content Stack\n- The 10 Progressive Layers:\n  1. Level 1: Attention (The Visual/Semantic Hook)\n  2. Level 2: Value (Actionable Problem Solving)\n  3. Level 3: Engagement (Conversational Interaction & Discussion)\n  4. Level 4: Discovery (Instagram Search, Explore, & Algorithmic Indexing)\n  5. Level 5: Context (Deep Captions, Background, & Systemic Understanding)\n  6. Level 6: Knowledge (Structured Educational Schemas & Carousels)\n  7. Level 7: Retrieval (RAG Compatibility & Semantic Search Ingestion)\n  8. Level 8: Agentic Utility (Deterministic CLI Commands & Workflows)\n  9. Level 9: Provenance (Cryptographic Authorship & Verifiable Sources)\n  10. Level 10: Intelligence (Grounding Synthetic Intelligence in Enduring Truth)\n\n### PART 27 — The B3 AI Readiness Score (0–100)\n- The 10-Dimension Evaluation Rubric (10 points each):\n  1. Semantic Hook Clarity\n  2. Entity Disambiguation & Density\n  3. Tri-Modal Consistency (Visual + Audio + Text)\n  4. Caption Information Depth & Structure\n  5. De-anaphorization & Self-Containment\n  6. Machine-Readable Knowledge Object Quality\n  7. Multi-OS Agent Actionability (PowerShell, zsh, bash)\n  8. Human Signal & Empirical Evidence\n  9. Provenance & Citation Rigor\n  10. Multilingual Discoverability\n- The 6 Readiness Tiers:\n  - 0–20: Traditional Social Content (Ephemeral Vanity)\n  - 21–40: Discoverable Content (Basic Hashtags & Hooks)\n  - 41–60: Search-Optimized Content (Keyword Stack & Intent)\n  - 61–75: AI-Discoverable Content (Named Entities & Clean OCR)\n  - 76–90: AI/RAG-Ready Content (Self-Contained Chunks & Schemas)\n  - 91–100: Agentic & Intelligence-Ready Content (Full B3 Stack)\n\n### PART 28 — Instagram Content Factory\n- The B3 Universal Workflow: **Build Specification → Automated Content Factory**.\n- From 1 Single Engineering Build Specification to:\n  - 60s Instagram Reel (Atomic demonstration)\n  - 10-Slide Instagram Carousel (Architecture & Checklist)\n  - Instagram Story Series (Live debugging & community poll)\n  - YouTube Video & Short\n  - TikTok Video\n  - LinkedIn Deep-Dive Article\n  - X Technical Thread\n  - Website Canonical Guide (HTML + Schema.org)\n  - Knowledge Base Entry & FAQ JSON\n  - Multi-OS Agent Execution Command Cards\n\n### PART 29 — Instagram → Multi-Platform Knowledge\n- Maintaining semantic identity and entity references across heterogeneous platforms.\n- Eliminating cross-platform contradictions: Ensuring version numbers, commands, and architectural claims remain synchronized.\n\n### PART 30 — Late Night with Build Bots Better\n- Integrating daily live broadcasts into the social knowledge factory.\n- Using Late Night with Build Bots Better as the nightly anchor: Extracts, guest breakdowns, live coding failures, bot debates, and immediate social spin-offs.\n\n### PART 31 — The B3 Content Flywheel\n- The Continuous Knowledge Iteration Cycle:\n  - **Create** (Build spec) → **Publish** (Instagram & Web) → **Engage** (Community feedback) → **Learn** (Observe edge cases) → **Extract Questions** (Mine comments & DMs) → **Create Answers** (Produce micro-reels & carousels) → **Build Knowledge** (Add to documentation) → **Improve Courses** (Refactor curriculum) → **Repeat**.\n\n### PART 32 — Content for Humans + AI + Agents\n- The Triple Optimization Model:\n  - **Human Check**: Does this solve a real problem and respect the viewer's time?\n  - **Algorithm Check**: Does this hook attention and provide clear platform metadata?\n  - **Intelligence Check**: Can an AI parser extract truth from this without hallucinations, and can an autonomous agent execute the steps?\n\n### PART 33 — Beyond the Algorithm\n- Surviving platform decay, algorithmic re-writes, and social network migrations.\n- Why building structured knowledge creates an enduring intellectual asset regardless of Instagram's future feature updates.\n\n### PART 34 — The Future Instagram Creator\n- The evolution of creator identity: From influencer to **Technical Researcher, Knowledge Architect, Community Curator, and Data Producer**.\n\n### PART 35 — Build Bots Better Empirical Experiments (1–10)\n1. *Experiment 1*: Traditional Viral Caption vs Semantic Knowledge-Layer Caption.\n2. *Experiment 2*: 30 Generic Hashtags vs 6 Explicit Entity Tags.\n3. *Experiment 3*: Ambiguous On-Screen Text vs The High-Contrast Semantic Overlay.\n4. *Experiment 4*: English-Only Post vs Multilingual Dual-Track Carousel.\n5. *Experiment 5*: Generic AI Summary Post vs Verified Human Debugging Log.\n6. *Experiment 6*: Isolated Reel vs 5-Part Sequential Knowledge Chain.\n7. *Experiment 7*: Unstructured Carousel vs 10-Slide B3 Standard Architecture.\n8. *Experiment 8*: Raw Promotional Post vs Multi-OS Agent Execution Card.\n9. *Experiment 9*: Ephemeral Story Q&A vs Closed-Loop Knowledge Ingestion.\n10. *Experiment 10*: Traditional Vanity Strategy vs B3 Omni-Stack Intelligence Optimization.\n- Tracking metrics: 3s retention, completion rate, saves, shares, search impressions, AI citations, agent test passes.\n\n### PART 36 — The B3 Instagram Content Audit Checklist\n- 7 Comprehensive Audit Lenses: Human Lens, Instagram Algorithm Lens, Search Lens, AI Understanding Lens, RAG Retrieval Lens, Agent Actionability Lens, Trust & Provenance Lens.\n\n### PART 37 — The Future of Instagram & Social Computing\n- Realities, trajectories, and boundaries:\n  - *Exists Today*: Vision-language model parsing, auto-captions, search indexing, Meta AI assistant.\n  - *Emerging*: Multimodal agent browsing, real-time RAG ingestion of social posts, in-app agentic shopping.\n  - *Plausible*: Autonomous AI followers/commenters, automated community truth synthesis, personalized dynamic feeds.\n  - *Speculative*: Direct neural feed ingestion, post-platform decentralized knowledge mesh.\n\n### PART 38 — The Evolution of Social Media Optimization\n- The 7-Stage Evolutionary Arc:\n  - **SEO** (Search Engine Optimization)\n  - **Social SEO** (In-App Search Discovery)\n  - **AEO** (Answer Engine Optimization)\n  - **GEO** (Generative Engine Optimization)\n  - **AI Discoverability** (Semantic Grounding & Multimodal Ingestion)\n  - **Agentic Discoverability** (Autonomous Tooling & Execution Cards)\n  - **Intelligence Optimization** (Contributing to the Global Synthetic Intelligence Knowledge Base)\n\n---\n\n## The Capstone Challenge: The 6-Version Knowledge Transformation\nThe learner takes one single technical topic (e.g., *Fixing Database Connection Pool Exhaustion in Asynchronous Python*) and engineers 6 distinct versions:\n1. **Version 1 — Traditional Social Media**: Clickbait hook, generic meme, vague caption.\n2. **Version 2 — Instagram SEO-Optimized**: High-intent keywords in name, bio, captions, and alt-text.\n3. **Version 3 — AI-Discoverable**: De-anaphorized transcript, explicit named entities, semantic overlay.\n4. **Version 4 — RAG-Ready Knowledge Object**: 10-slide structured carousel, atomic propositions, JSON schema.\n5. **Version 5 — Agent-Ready Execution Card**: Deterministic CLI scripts (PowerShell, zsh, bash) with verification checks.\n6. **Version 6 — The Future Intelligence Omni-Stack**: Complete synthesis combining human emotional resonance, platform distribution mechanics, semantic clarity, and cryptographic provenance.\n\n---\n\n## Mandatory Build Bots Better Operational Safeguards (#31, #1050, #1051, #1073)\nAll Build Bots Better educational software must demonstrate and enforce:\n1. **The Seven-Item Onboarding Checklist**: Verified git identity, working directory bounds, hub connectivity.\n2. **The Variable-Limit Delete Guard Demo**:\n   - Refuse command when variable resolves to `$HOME`, `$USERPROFILE`, or root drive.\n   - Example: `$tmp = $env:USERPROFILE; Remove-Item -Recurse -Force $tmp` MUST be caught and blocked before execution.\n3. **Automated Backup & Practised Restore Drill**:\n   - Off-volume backup script creation.\n   - Verified restore drill outputting `proof.txt` with valid SHA-256 integrity checksum.\n4. **Fail-Closed Workspace Policy**:\n   - Deny destructive commands outside designated project scratch space.\n",
      "description": "Shared Instagram requirements",
      "type": "text"
    }
  ],
  "bot_coach": {
    "bot_name": "Buzz",
    "bot_role": "Offline reviewed step coach",
    "personality": "patient and concrete",
    "tone": "plain",
    "teaching_style": "hint, diagnostic, action, checkpoint",
    "introduction": "Ask about the current step. I use reviewed local answers and queue unknown questions for review.",
    "encouragement_style": "Focus on observed results.",
    "troubleshooting_style": "Ask for the smallest reproducible evidence.",
    "limits": "This offline coach does not call an LLM or inspect your computer. Unknown questions enter a local exportable review queue, not a shared SQL FAQ."
  },
  "coach_interaction_model": {
    "stuck": "current diagnostic and first repair",
    "meaning": "current explanation",
    "error": "current troubleshooting",
    "why": "purpose",
    "skip": "require equivalent evidence",
    "alternative": "documented alternative",
    "finished": "record actual output",
    "start_over": "export then reset only this Build",
    "progressive_assistance": [
      "hint",
      "diagnostic",
      "walkthrough",
      "resource solution"
    ]
  },
  "website_specification": {
    "layout": "Lesson outline, actionable step, current-context coach",
    "features": [
      "platform selectors",
      "command copy with selection fallback",
      "evidence checklist",
      "practical quiz",
      "downloadable resource ZIP",
      "local progress",
      "evidence export",
      "unknown-question review queue"
    ],
    "checkpoint_model": "Learner supplies observations/output; tokens check expected shape only, not host truth.",
    "navigation": "Browse freely; checked next-button progression retains evidence.",
    "video": "spec-driven walkthrough and optional speech; full rendered media is a downstream production task."
  },
  "final_test": {
    "test_name": "Repeat the core workflow and restore its evidence",
    "instructions": "Produce your native ten-slide food carousel and its same-topic comparison, complete the detailed capstone plan, then review source facts, rights, current community rules and actual media. Run the meaningful failure/repair and source-linked retrieval checks. Export course evidence. A structural pack pass is separate from live publication, audience results or independent quality approval.",
    "required_inputs": [
      "workspace_guard.py",
      "restore_drill.py",
      "onboarding-checklist.md",
      "media_pack.py",
      "versions.json",
      "knowledge.json",
      "agent-card.json",
      "rubric.json",
      "native.json",
      "claims.json",
      "metrics.json",
      "provenance-notes.md",
      "agent-training.json",
      "AGENT_OPERATING_MANUAL.md",
      "audience.md",
      "native-production.md",
      "caption.md",
      "diagnostic-log.md",
      "capstone.md",
      "experiments.md",
      "requirements-map.md",
      "strategy.json",
      "mechanisms.md"
    ],
    "success_conditions": [
      "A reviewed ten-slide food carousel for Overnight oats assembly, controlled A/B drafts, complete native production/capstone plans, an evidence rubric, source-linked retrieval objects and hash-checked companion resources.",
      "Core output can be reproduced",
      "Guard limit explained",
      "Backup and restoration evidence retained"
    ],
    "automated_tests": "catalog_check.py records browser behavior and executable resources, with explicit scope.",
    "manual_tests": [
      "Review actual account sign-in where needed",
      "Check source/data assumptions",
      "Restore one real non-secret memory file"
    ],
    "expected_output": "A reviewed ten-slide food carousel for Overnight oats assembly, controlled A/B drafts, complete native production/capstone plans, an evidence rubric, source-linked retrieval objects and hash-checked companion resources.",
    "failure_paths": "Use the specific step diagnostic, retain failure evidence and stop when access is required."
  },
  "extensions": [
    {
      "title": "Use your own input",
      "action": "Replace the sample with one permitted real input and rerun the same checks."
    },
    {
      "title": "Add one failure case",
      "action": "Create a malformed or missing input; prove the workflow fails visibly and recovers."
    },
    {
      "title": "Automate after review",
      "action": "Write a bounded schedule with logging and a stop condition; obtain approval for external actions separately."
    }
  ],
  "metadata": {
    "SEO_title": "Creating Instagram Content for the AI, SI, and Agentic Era | BuildBotsBetter",
    "SEO_description": "A reviewed ten-slide food carousel for Overnight oats assembly, controlled A/B drafts, complete native production/capstone plans, an evidence rubric, source-linked retrieval objects and hash-checked companion resources.",
    "SEO_keywords": [
      "instagram-content-ai-si-agentic-era",
      "guided build",
      "verified outcome"
    ],
    "difficulty": "beginner",
    "related_builds": [
      "dogfooding",
      "buildbotsbetter-onboarding"
    ],
    "next_recommended_build": "dogfooding"
  },
  "automation_map": [
    {
      "output": "website",
      "generated_from": "BUILD_SPEC.json",
      "human_review_required": true
    },
    {
      "output": "walkthrough",
      "generated_from": "BUILD_SPEC.json",
      "human_review_required": true
    },
    {
      "output": "bot dialogue",
      "generated_from": "BUILD_SPEC.json",
      "human_review_required": true
    },
    {
      "output": "resources",
      "generated_from": "BUILD_SPEC.json",
      "human_review_required": true
    },
    {
      "output": "quiz",
      "generated_from": "BUILD_SPEC.json",
      "human_review_required": true
    },
    {
      "output": "captions",
      "generated_from": "BUILD_SPEC.json",
      "human_review_required": true
    },
    {
      "output": "metadata",
      "generated_from": "BUILD_SPEC.json",
      "human_review_required": true
    }
  ],
  "quality_assurance_report": {
    "scope": "Original instructional content, reviewed against shared brief; execution and browser receipts are stored under logs/catalog-acceptance.",
    "known_limits": [
      "Platform access, account features and upload limits require current account checks.",
      "No content was published and no genuine audience metrics or AI citations are claimed.",
      "Studio and lint check draft structure; factual accuracy, media quality, OCR/ASR and community fit need human review.",
      "The provided fixture is synthetic. Actual content creation and live feedback must not be inferred from a browser walkthrough."
    ]
  },
  "sources": [
    {
      "title": "Shared Instagram requirements",
      "url": "resources/source-instagram-content-ai-si-agentic-era.md"
    },
    {
      "title": "Instagram primary platform guidance",
      "url": "https://about.instagram.com/blog/announcements/instagram-ranking-explained"
    },
    {
      "title": "Instagram documented native AI capabilities",
      "url": "https://about.fb.com/news/2025/06/edit-videos-with-meta-ai/"
    }
  ],
  "known_uncertainties": [
    "Platform access, account features and upload limits require current account checks.",
    "No content was published and no genuine audience metrics or AI citations are claimed.",
    "Studio and lint check draft structure; factual accuracy, media quality, OCR/ASR and community fit need human review.",
    "The provided fixture is synthetic. Actual content creation and live feedback must not be inferred from a browser walkthrough."
  ],
  "requirement_coverage": {
    "shared_parts": [
      "### PART 1 — Instagram Fundamentals",
      "### PART 2 — The Instagram Content Ecosystem",
      "### PART 3 — Creating Great Instagram Content",
      "### PART 4 — Instagram Hooks & The Semantic Hook",
      "### PART 5 — Instagram SEO (Search Engine Optimization)",
      "### PART 6 — The Instagram Keyword Stack",
      "### PART 7 — Instagram as Multimodal Content",
      "### PART 8 — Instagram Captions as a Knowledge Layer",
      "### PART 9 — On-Screen Text as Semantic Data",
      "### PART 10 — Instagram Reels as Micro-Knowledge Objects",
      "### PART 11 — The Instagram Knowledge Chain",
      "### PART 12 — Instagram Carousels as Structured Knowledge",
      "### PART 13 — Instagram Stories as Context & Living Lab",
      "### PART 14 — Comments as Community Knowledge",
      "### PART 15 — Instagram Communities & Human Knowledge Verification",
      "### PART 16 — Multilingual Instagram Content",
      "### PART 17 — Entity-First Instagram",
      "### PART 18 — Knowledge Graph Thinking",
      "### PART 19 — RAG-Ready Instagram Content",
      "### PART 20 — Agent-Ready Instagram Content",
      "### PART 21 — Instagram → AI Answer",
      "### PART 22 — Instagram → Agent Action",
      "### PART 23 — Content Provenance & Authenticity Ledgers",
      "### PART 24 — Human Knowledge vs Synthetic Content",
      "### PART 25 — The Instagram Algorithm vs The Knowledge Algorithm",
      "### PART 26 — The B3 Instagram Content Stack",
      "### PART 27 — The B3 AI Readiness Score (0–100)",
      "### PART 28 — Instagram Content Factory",
      "### PART 29 — Instagram → Multi-Platform Knowledge",
      "### PART 30 — Late Night with Build Bots Better",
      "### PART 31 — The B3 Content Flywheel",
      "### PART 32 — Content for Humans + AI + Agents",
      "### PART 33 — Beyond the Algorithm",
      "### PART 34 — The Future Instagram Creator",
      "### PART 35 — Build Bots Better Empirical Experiments (1–10)",
      "### PART 36 — The B3 Instagram Content Audit Checklist",
      "### PART 37 — The Future of Instagram & Social Computing",
      "### PART 38 — The Evolution of Social Media Optimization"
    ],
    "part_to_exercise": [
      {
        "requirement": "### PART 1 — Instagram Fundamentals",
        "exercise": "Map the visual platform"
      },
      {
        "requirement": "### PART 2 — The Instagram Content Ecosystem",
        "exercise": "Observe the audience and distribution"
      },
      {
        "requirement": "### PART 3 — Creating Great Instagram Content",
        "exercise": "Set a recognizable visual identity"
      },
      {
        "requirement": "### PART 4 — Instagram Hooks & The Semantic Hook",
        "exercise": "Write a semantic visual hook"
      },
      {
        "requirement": "### PART 5 — Instagram SEO (Search Engine Optimization)",
        "exercise": "Research a real search intent"
      },
      {
        "requirement": "### PART 6 — The Instagram Keyword Stack",
        "exercise": "Build the ten-layer keyword stack"
      },
      {
        "requirement": "### PART 7 — Instagram as Multimodal Content",
        "exercise": "Make a standalone Reel"
      },
      {
        "requirement": "### PART 8 — Instagram Captions as a Knowledge Layer",
        "exercise": "Draft the knowledge-layer caption"
      },
      {
        "requirement": "### PART 9 — On-Screen Text as Semantic Data",
        "exercise": "Plan OCR-readable overlays"
      },
      {
        "requirement": "### PART 10 — Instagram Reels as Micro-Knowledge Objects",
        "exercise": "Build the ten-slide carousel"
      },
      {
        "requirement": "### PART 11 — The Instagram Knowledge Chain",
        "exercise": "Connect the knowledge chain"
      },
      {
        "requirement": "### PART 12 — Instagram Carousels as Structured Knowledge",
        "exercise": "Build the ten-slide carousel"
      },
      {
        "requirement": "### PART 13 — Instagram Stories as Context & Living Lab",
        "exercise": "Use Stories as a living lab"
      },
      {
        "requirement": "### PART 14 — Comments as Community Knowledge",
        "exercise": "Respond and verify community claims"
      },
      {
        "requirement": "### PART 15 — Instagram Communities & Human Knowledge Verification",
        "exercise": "Respond and verify community claims"
      },
      {
        "requirement": "### PART 16 — Multilingual Instagram Content",
        "exercise": "Localize and define the food entities"
      },
      {
        "requirement": "### PART 17 — Entity-First Instagram",
        "exercise": "Localize and define the food entities"
      },
      {
        "requirement": "### PART 18 — Knowledge Graph Thinking",
        "exercise": "Build a food knowledge graph"
      },
      {
        "requirement": "### PART 19 — RAG-Ready Instagram Content",
        "exercise": "Companion knowledge and truthful claims: mechanisms.md, claims.json, knowledge.json, rag.jsonl"
      },
      {
        "requirement": "### PART 20 — Agent-Ready Instagram Content",
        "exercise": "Hash and lint the reviewed files; agent-card.json (three operating systems)"
      },
      {
        "requirement": "### PART 21 — Instagram → AI Answer",
        "exercise": "Run a source-linked retrieval probe; media_pack.py retrieve"
      },
      {
        "requirement": "### PART 22 — Instagram → Agent Action",
        "exercise": "Hash and lint the reviewed files; agent-card.json (three operating systems)"
      },
      {
        "requirement": "### PART 23 — Content Provenance & Authenticity Ledgers",
        "exercise": "Record provenance and a human approval decision; provenance-notes.md"
      },
      {
        "requirement": "### PART 24 — Human Knowledge vs Synthetic Content",
        "exercise": "Respond and verify community claims"
      },
      {
        "requirement": "### PART 25 — The Instagram Algorithm vs The Knowledge Algorithm",
        "exercise": "Approve a complete visual package"
      },
      {
        "requirement": "### PART 26 — The B3 Instagram Content Stack",
        "exercise": "Plan the content factory"
      },
      {
        "requirement": "### PART 27 — The B3 AI Readiness Score (0–100)",
        "exercise": "Use the readiness calculator; studio.html and rubric.json"
      },
      {
        "requirement": "### PART 28 — Instagram Content Factory",
        "exercise": "Plan the content factory"
      },
      {
        "requirement": "### PART 29 — Instagram → Multi-Platform Knowledge",
        "exercise": "Plan the content factory"
      },
      {
        "requirement": "### PART 30 — Late Night with Build Bots Better",
        "exercise": "Plan the content factory"
      },
      {
        "requirement": "### PART 31 — The B3 Content Flywheel",
        "exercise": "Respond and verify community claims"
      },
      {
        "requirement": "### PART 32 — Content for Humans + AI + Agents",
        "exercise": "Plan ten experiments and seven audit lenses"
      },
      {
        "requirement": "### PART 33 — Beyond the Algorithm",
        "exercise": "Approve a complete visual package"
      },
      {
        "requirement": "### PART 34 — The Future Instagram Creator",
        "exercise": "Approve a complete visual package"
      },
      {
        "requirement": "### PART 35 — Build Bots Better Empirical Experiments (1–10)",
        "exercise": "Plan ten experiments and seven audit lenses"
      },
      {
        "requirement": "### PART 36 — The B3 Instagram Content Audit Checklist",
        "exercise": "Plan ten experiments and seven audit lenses"
      },
      {
        "requirement": "### PART 37 — The Future of Instagram & Social Computing",
        "exercise": "Approve a complete visual package"
      },
      {
        "requirement": "### PART 38 — The Evolution of Social Media Optimization",
        "exercise": "Approve a complete visual package"
      }
    ],
    "native_exercises": [
      "Map the visual platform",
      "Observe the audience and distribution",
      "Set a recognizable visual identity",
      "Write a semantic visual hook",
      "Research a real search intent",
      "Build the ten-layer keyword stack",
      "Compare the same carousel",
      "Draft the knowledge-layer caption",
      "Plan OCR-readable overlays",
      "Build the ten-slide carousel",
      "Make a standalone Reel",
      "Connect the knowledge chain",
      "Use Stories as a living lab",
      "Respond and verify community claims",
      "Localize and define the food entities",
      "Build a food knowledge graph",
      "Plan the content factory",
      "Design the six-version capstone",
      "Plan ten experiments and seven audit lenses",
      "Approve a complete visual package"
    ],
    "operational_safeguards": "Last lesson; resolved-path dry run, active tool guard check, scheduled off-volume backup and restore proof.",
    "time_allocation": "Native production exercises: 250 minutes; preparation: 6 minutes; knowledge pack: 24 minutes; operational safeguards: 30 minutes. Native work is 250/310 = 80.6% of planned instructional time."
  },
  "checkpoint_revision": "r13-20261017",
  "version_history": [
    "2026-10-16 EDT | chatgpt_codex / Codex | peer finding repairs"
  ]
}
