{
  "schema_version": 2,
  "meta": {
    "build_id": "CODEX-TIKTOK-CONTENT-AI-SI-AGENTIC-ERA",
    "slug": "tiktok-content-ai-si-agentic-era",
    "title": "Creating TikTok Content for the AI, SI, and Agentic Era",
    "subtitle": "Make a native 45-second vertical demonstration and a checked companion knowledge pack.",
    "description": "A reviewed 45-second vertical demonstration for Desk cable reset, 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 45-second vertical demonstration for Desk cable reset, 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 viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.",
    "skill_level": "beginner",
    "estimated_time": "4–6 hours including native production; live publication optional",
    "category": "Guided Build",
    "tags": [
      "tiktok-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 45-second vertical demonstration for Desk cable reset, 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": "3.0",
    "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 tiktok content for the ai, si, and agentic era.",
    "after": "A reviewed 45-second vertical demonstration for Desk cable reset, 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 45-second vertical demonstration for Desk cable reset, 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 platform map separates current source facts from assumptions.",
    "Two observations support a rapid demonstration audience.",
    "Four hooks resolve the topic within three seconds.",
    "A complete time-coded sequence delivers an immediate payoff.",
    "A query brief has a dated observation or explicit availability limit."
  ],
  "lessons": [
    {
      "lesson_id": "L01",
      "title": "Start with the native creation experience",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.",
      "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 platform realities",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A platform map separates current source facts from assumptions.",
      "lessons_before_this": [
        "L01"
      ],
      "lessons_after_this": [
        "L03"
      ]
    },
    {
      "lesson_id": "L03",
      "title": "Observe the native audience",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Two observations support a rapid demonstration audience.",
      "lessons_before_this": [
        "L02"
      ],
      "lessons_after_this": [
        "L04"
      ]
    },
    {
      "lesson_id": "L04",
      "title": "Win the first second honestly",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Four hooks resolve the topic within three seconds.",
      "lessons_before_this": [
        "L03"
      ],
      "lessons_after_this": [
        "L05"
      ]
    },
    {
      "lesson_id": "L05",
      "title": "Write the hook-value-payoff loop",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A complete time-coded sequence delivers an immediate payoff.",
      "lessons_before_this": [
        "L04"
      ],
      "lessons_after_this": [
        "L06"
      ]
    },
    {
      "lesson_id": "L06",
      "title": "Research a real search intent",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A query brief has a dated observation or explicit availability limit.",
      "lessons_before_this": [
        "L05"
      ],
      "lessons_after_this": [
        "L07"
      ]
    },
    {
      "lesson_id": "L07",
      "title": "Say, show and write the same entity",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Speech, overlay and caption reinforce the same objects.",
      "lessons_before_this": [
        "L06"
      ],
      "lessons_after_this": [
        "L08"
      ]
    },
    {
      "lesson_id": "L08",
      "title": "Solve the three-second semantic problem",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A semantic hook remains watchable and specific.",
      "lessons_before_this": [
        "L07"
      ],
      "lessons_after_this": [
        "L09"
      ]
    },
    {
      "lesson_id": "L09",
      "title": "Compare the controlled demo pair",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. This is a controlled same-topic exercise; no publication result is assumed.",
      "estimated_time": "12 min",
      "learning_objective": "The comparison controls topic, footage plan and format.",
      "lessons_before_this": [
        "L08"
      ],
      "lessons_after_this": [
        "L10"
      ]
    },
    {
      "lesson_id": "L10",
      "title": "Plan all multimodal layers",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Two comprehension checks expose cross-modal gaps.",
      "lessons_before_this": [
        "L09"
      ],
      "lessons_after_this": [
        "L11"
      ]
    },
    {
      "lesson_id": "L11",
      "title": "Correct captions against real audio",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A rehearsed cue and manual caption correction have evidence.",
      "lessons_before_this": [
        "L10"
      ],
      "lessons_after_this": [
        "L12"
      ]
    },
    {
      "lesson_id": "L12",
      "title": "Make overlays readable on a phone",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A phone-size preview clearly names the objects and action.",
      "lessons_before_this": [
        "L11"
      ],
      "lessons_after_this": [
        "L13"
      ]
    },
    {
      "lesson_id": "L13",
      "title": "Build a micro-knowledge chain",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Five atomic ideas form a useful playlist plan.",
      "lessons_before_this": [
        "L12"
      ],
      "lessons_after_this": [
        "L14"
      ]
    },
    {
      "lesson_id": "L14",
      "title": "Localize and define the entities",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Entity names and timing remain stable in the localization plan.",
      "lessons_before_this": [
        "L13"
      ],
      "lessons_after_this": [
        "L15"
      ]
    },
    {
      "lesson_id": "L15",
      "title": "Choose a durable content portfolio",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A calendar labels the ratio as a design model.",
      "lessons_before_this": [
        "L14"
      ],
      "lessons_after_this": [
        "L16"
      ]
    },
    {
      "lesson_id": "L16",
      "title": "Make the thirteen-layer short-form stack",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Thirteen layer briefs share one source and audience.",
      "lessons_before_this": [
        "L15"
      ],
      "lessons_after_this": [
        "L17"
      ]
    },
    {
      "lesson_id": "L17",
      "title": "Recompose across platforms",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Four native variants retain the same facts.",
      "lessons_before_this": [
        "L16"
      ],
      "lessons_after_this": [
        "L18"
      ]
    },
    {
      "lesson_id": "L18",
      "title": "Design the nightly content factory",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A pipeline and broadcast extraction plan preserve original human evidence.",
      "lessons_before_this": [
        "L17"
      ],
      "lessons_after_this": [
        "L19"
      ]
    },
    {
      "lesson_id": "L19",
      "title": "Evaluate virality and knowledge separately",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A two-axis review positions the demo with explicit evidence limits.",
      "lessons_before_this": [
        "L18"
      ],
      "lessons_after_this": [
        "L20"
      ]
    },
    {
      "lesson_id": "L20",
      "title": "Plan A–F experiments and three versions",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Three versions and six controlled test proposals have denominators.",
      "lessons_before_this": [
        "L19"
      ],
      "lessons_after_this": [
        "L21"
      ]
    },
    {
      "lesson_id": "L21",
      "title": "Approve a complete demonstration package",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A final review distinguishes observed rehearsal from unperformed live distribution.",
      "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": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.",
      "user_action": "Download the resource ZIP and extract it into a new private folder. Open studio.html directly in your browser. Compare the two 45-second vertical demonstration drafts for Desk cable reset. 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": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.",
      "estimated_time": "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 studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries. Include the actual result or a specific observation; do not paste credentials.",
        "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."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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": "How do I verify open the native draft studio?",
          "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. Keep the command or observation with your evidence."
        },
        {
          "question": "Which files do I need for this step?",
          "answer": "Use studio.html, strategy.json, AGENT_OPERATING_MANUAL.md, agent-training.json. Work in the same practice folder."
        }
      ],
      "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 45-second vertical demonstration drafts for Desk cable reset. 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": "What is the current directory, exact command, exit code and complete output?"
      },
      "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 45-second vertical demonstration drafts for Desk cable reset. 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 45-second vertical demonstration drafts for Desk cable reset. 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.",
          "Inspect the 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.",
          "Record the evidence and check each criterion."
        ],
        "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 45-second vertical demonstration drafts for Desk cable reset. 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 platform realities",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Inventory For You, Following, Search, Friends, LIVE, Stories, playlists, profile and Shop as available. Describe likes, comments, shares, saves, watch behavior and metadata without inventing FYP test-batch sizes.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A platform map separates current source facts from assumptions.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Map platform realities",
        "success_condition": "A platform map separates current source facts from assumptions.",
        "how_to_verify": "Record a platform map separates current source facts from assumptions. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A platform map separates current source facts from assumptions.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A platform map separates current source facts from assumptions.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for map platform realities?",
          "answer": "A platform map separates current source facts from assumptions. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to map platform realities. A platform map separates current source facts from assumptions.",
        "demo": "Inventory For You, Following, Search, Friends, LIVE, Stories, playlists, profile and Shop as available. Describe likes, comments, shares, saves, watch behavior and metadata without inventing FYP test-batch sizes.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate map platform realities",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Inventory For You, Following, Search, Friends, LIVE, Stories, playlists, profile and Shop as available. Describe likes, comments, shares, saves, watch behavior and metadata without inventing FYP test-batch sizes. A platform map separates current source facts from assumptions.",
        "on_screen_text": [
          "Map platform realities",
          "A platform map separates current source facts from assumptions."
        ],
        "screen_recording_instructions": [
          "Inventory For You, Following, Search, Friends, LIVE, Stories, playlists, profile and Shop as available. Describe likes, comments, shares, saves, watch behavior and metadata without inventing FYP test-batch sizes.",
          "Inspect the result: A platform map separates current source facts from assumptions.",
          "Record the evidence and check each criterion."
        ],
        "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 platform map separates current source facts from assumptions."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Inventory For You, Following, Search, Friends, LIVE, Stories, playlists, profile and Shop as available. Describe likes, comments, shares, saves, watch behavior and metadata without inventing FYP test-batch sizes.",
          "A platform map separates current source facts from assumptions."
        ]
      },
      "step_id": "L02-S01",
      "lesson_id": "L02"
    },
    {
      "title": "Observe the native audience",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Review two public satisfying organization demos. Record their opening, payoff, pacing and comments with dates. Your desk-reset persona is an editorial choice, not a claim that every TikTok user wants the same content.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Two observations support a rapid demonstration audience.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Observe the native audience",
        "success_condition": "Two observations support a rapid demonstration audience.",
        "how_to_verify": "Record two observations support a rapid demonstration audience. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Two observations support a rapid demonstration audience.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Two observations support a rapid demonstration audience.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for observe the native audience?",
          "answer": "Two observations support a rapid demonstration audience. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to observe the native audience. Two observations support a rapid demonstration audience.",
        "demo": "Review two public satisfying organization demos. Record their opening, payoff, pacing and comments with dates. Your desk-reset persona is an editorial choice, not a claim that every TikTok user wants the same content.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate observe the native audience",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Review two public satisfying organization demos. Record their opening, payoff, pacing and comments with dates. Your desk-reset persona is an editorial choice, not a claim that every TikTok user wants the same content. Two observations support a rapid demonstration audience.",
        "on_screen_text": [
          "Observe the native audience",
          "Two observations support a rapid demonstration audience."
        ],
        "screen_recording_instructions": [
          "Review two public satisfying organization demos. Record their opening, payoff, pacing and comments with dates. Your desk-reset persona is an editorial choice, not a claim that every TikTok user wants the same content.",
          "Inspect the result: Two observations support a rapid demonstration audience.",
          "Record the evidence and check each criterion."
        ],
        "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 observations support a rapid demonstration audience."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Review two public satisfying organization demos. Record their opening, payoff, pacing and comments with dates. Your desk-reset persona is an editorial choice, not a claim that every TikTok user wants the same content.",
          "Two observations support a rapid demonstration audience."
        ]
      },
      "step_id": "L03-S01",
      "lesson_id": "L03"
    },
    {
      "title": "Win the first second honestly",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Storyboard 0–1 second clutter reveal and 1–3 second object/action grounding. Try movement, pattern interrupt, question and transformation hooks without a misleading promise.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Four hooks resolve the topic within three seconds.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Win the first second honestly",
        "success_condition": "Four hooks resolve the topic within three seconds.",
        "how_to_verify": "Record four hooks resolve the topic within three seconds. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Four hooks resolve the topic within three seconds.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Four hooks resolve the topic within three seconds.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for win the first second honestly?",
          "answer": "Four hooks resolve the topic within three seconds. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to win the first second honestly. Four hooks resolve the topic within three seconds.",
        "demo": "Storyboard 0–1 second clutter reveal and 1–3 second object/action grounding. Try movement, pattern interrupt, question and transformation hooks without a misleading promise.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate win the first second honestly",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Storyboard 0–1 second clutter reveal and 1–3 second object/action grounding. Try movement, pattern interrupt, question and transformation hooks without a misleading promise. Four hooks resolve the topic within three seconds.",
        "on_screen_text": [
          "Win the first second honestly",
          "Four hooks resolve the topic within three seconds."
        ],
        "screen_recording_instructions": [
          "Storyboard 0–1 second clutter reveal and 1–3 second object/action grounding. Try movement, pattern interrupt, question and transformation hooks without a misleading promise.",
          "Inspect the result: Four hooks resolve the topic within three seconds.",
          "Record the evidence and check each criterion."
        ],
        "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 hooks resolve the topic within three seconds."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Storyboard 0–1 second clutter reveal and 1–3 second object/action grounding. Try movement, pattern interrupt, question and transformation hooks without a misleading promise.",
          "Four hooks resolve the topic within three seconds."
        ]
      },
      "step_id": "L04-S01",
      "lesson_id": "L04"
    },
    {
      "title": "Write the hook-value-payoff loop",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Draft a complete 45-second sequence: hook, clips placed, visible routing, honest result and save cue. One video solves one cable-organizing question.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A complete time-coded sequence delivers an immediate payoff.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Write the hook-value-payoff loop",
        "success_condition": "A complete time-coded sequence delivers an immediate payoff.",
        "how_to_verify": "Record a complete time-coded sequence delivers an immediate payoff. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A complete time-coded sequence delivers an immediate payoff.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A complete time-coded sequence delivers an immediate payoff.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for write the hook-value-payoff loop?",
          "answer": "A complete time-coded sequence delivers an immediate payoff. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to write the hook-value-payoff loop. A complete time-coded sequence delivers an immediate payoff.",
        "demo": "Draft a complete 45-second sequence: hook, clips placed, visible routing, honest result and save cue. One video solves one cable-organizing question.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate write the hook-value-payoff loop",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Draft a complete 45-second sequence: hook, clips placed, visible routing, honest result and save cue. One video solves one cable-organizing question. A complete time-coded sequence delivers an immediate payoff.",
        "on_screen_text": [
          "Write the hook-value-payoff loop",
          "A complete time-coded sequence delivers an immediate payoff."
        ],
        "screen_recording_instructions": [
          "Draft a complete 45-second sequence: hook, clips placed, visible routing, honest result and save cue. One video solves one cable-organizing question.",
          "Inspect the result: A complete time-coded sequence delivers an immediate payoff.",
          "Record the evidence and check each criterion."
        ],
        "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 time-coded sequence delivers an immediate payoff."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Draft a complete 45-second sequence: hook, clips placed, visible routing, honest result and save cue. One video solves one cable-organizing question.",
          "A complete time-coded sequence delivers an immediate payoff."
        ]
      },
      "step_id": "L05-S01",
      "lesson_id": "L05"
    },
    {
      "title": "Research a real search intent",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Write informational, navigational, commercial and instructional query examples. Inspect Creator Search Insights if your account supports it and record actual observations; do not invent search volume.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A query brief has a dated observation or explicit availability limit.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Research a real search intent",
        "success_condition": "A query brief has a dated observation or explicit availability limit.",
        "how_to_verify": "Record a query brief has a dated observation or explicit availability limit. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A query brief has a dated observation or explicit availability limit.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A query brief has a dated observation or explicit availability limit.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for research a real search intent?",
          "answer": "A query brief has a dated observation or explicit availability limit. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to research a real search intent. A query brief has a dated observation or explicit availability limit.",
        "demo": "Write informational, navigational, commercial and instructional query examples. Inspect Creator Search Insights if your account supports it and record actual observations; do not invent search volume.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "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, commercial and instructional query examples. Inspect Creator Search Insights if your account supports it and record actual observations; do not invent search volume. A query brief has a dated observation or explicit availability limit.",
        "on_screen_text": [
          "Research a real search intent",
          "A query brief has a dated observation or explicit availability limit."
        ],
        "screen_recording_instructions": [
          "Write informational, navigational, commercial and instructional query examples. Inspect Creator Search Insights if your account supports it and record actual observations; do not invent search volume.",
          "Inspect the result: A query brief has a dated observation or explicit availability limit.",
          "Record the evidence and check each criterion."
        ],
        "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 query brief has a dated observation or explicit availability limit."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Write informational, navigational, commercial and instructional query examples. Inspect Creator Search Insights if your account supports it and record actual observations; do not invent search volume.",
          "A query brief has a dated observation or explicit availability limit."
        ]
      },
      "step_id": "L06-S01",
      "lesson_id": "L06"
    },
    {
      "title": "Say, show and write the same entity",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Put desk cables and cable clips in narration, frame labels and caption. Compare the three layers for contradictions, missing nouns and exaggerated timing.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Speech, overlay and caption reinforce the same objects.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Say, show and write the same entity",
        "success_condition": "Speech, overlay and caption reinforce the same objects.",
        "how_to_verify": "Record speech, overlay and caption reinforce the same objects. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Speech, overlay and caption reinforce the same objects.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Speech, overlay and caption reinforce the same objects.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for say, show and write the same entity?",
          "answer": "Speech, overlay and caption reinforce the same objects. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to say, show and write the same entity. Speech, overlay and caption reinforce the same objects.",
        "demo": "Put desk cables and cable clips in narration, frame labels and caption. Compare the three layers for contradictions, missing nouns and exaggerated timing.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate say, show and write the same entity",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Put desk cables and cable clips in narration, frame labels and caption. Compare the three layers for contradictions, missing nouns and exaggerated timing. Speech, overlay and caption reinforce the same objects.",
        "on_screen_text": [
          "Say, show and write the same entity",
          "Speech, overlay and caption reinforce the same objects."
        ],
        "screen_recording_instructions": [
          "Put desk cables and cable clips in narration, frame labels and caption. Compare the three layers for contradictions, missing nouns and exaggerated timing.",
          "Inspect the result: Speech, overlay and caption reinforce the same objects.",
          "Record the evidence and check each criterion."
        ],
        "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": [
          "Speech, overlay and caption reinforce the same objects."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Put desk cables and cable clips in narration, frame labels and caption. Compare the three layers for contradictions, missing nouns and exaggerated timing.",
          "Speech, overlay and caption reinforce the same objects."
        ]
      },
      "step_id": "L07-S01",
      "lesson_id": "L07"
    },
    {
      "title": "Solve the three-second semantic problem",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Use hook + entity + topic + value to rewrite a vague glow-up opening. Keep the satisfying reveal while naming the actual organizing action.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A semantic hook remains watchable and specific.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Solve the three-second semantic problem",
        "success_condition": "A semantic hook remains watchable and specific.",
        "how_to_verify": "Record a semantic hook remains watchable and specific. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A semantic hook remains watchable and specific.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A semantic hook remains watchable and specific.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for solve the three-second semantic problem?",
          "answer": "A semantic hook remains watchable and specific. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to solve the three-second semantic problem. A semantic hook remains watchable and specific.",
        "demo": "Use hook + entity + topic + value to rewrite a vague glow-up opening. Keep the satisfying reveal while naming the actual organizing action.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate solve the three-second semantic problem",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Use hook + entity + topic + value to rewrite a vague glow-up opening. Keep the satisfying reveal while naming the actual organizing action. A semantic hook remains watchable and specific.",
        "on_screen_text": [
          "Solve the three-second semantic problem",
          "A semantic hook remains watchable and specific."
        ],
        "screen_recording_instructions": [
          "Use hook + entity + topic + value to rewrite a vague glow-up opening. Keep the satisfying reveal while naming the actual organizing action.",
          "Inspect the result: A semantic hook remains watchable and specific.",
          "Record the evidence and check each criterion."
        ],
        "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 semantic hook remains watchable and specific."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Use hook + entity + topic + value to rewrite a vague glow-up opening. Keep the satisfying reveal while naming the actual organizing action.",
          "A semantic hook remains watchable and specific."
        ]
      },
      "step_id": "L08-S01",
      "lesson_id": "L08"
    },
    {
      "title": "Compare the controlled demo pair",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. This is a controlled same-topic exercise; no publication result is assumed.",
      "user_action": "Use studio.html for A/B captions on the same 45-second demonstration. Keep footage and payoff constant; isolate named objects and contextual clarity rather than switching to a developer lesson.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. This is a controlled same-topic exercise; no publication result is assumed.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "studio.html",
        "versions.json"
      ],
      "expected_result": "The comparison controls topic, footage plan and format.",
      "resources": [
        "studio.html",
        "versions.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Compare the controlled demo pair",
        "success_condition": "The comparison controls topic, footage plan and format.",
        "how_to_verify": "Record the comparison controls topic, footage plan and format. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "The comparison controls topic, footage plan and format.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. The comparison controls topic, footage plan and format.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for compare the controlled demo pair?",
          "answer": "The comparison controls topic, footage plan and format. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to compare the controlled demo pair. The comparison controls topic, footage plan and format.",
        "demo": "Use studio.html for A/B captions on the same 45-second demonstration. Keep footage and payoff constant; isolate named objects and contextual clarity rather than switching to a developer lesson.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate compare the controlled demo pair",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Use studio.html for A/B captions on the same 45-second demonstration. Keep footage and payoff constant; isolate named objects and contextual clarity rather than switching to a developer lesson. The comparison controls topic, footage plan and format.",
        "on_screen_text": [
          "Compare the controlled demo pair",
          "The comparison controls topic, footage plan and format."
        ],
        "screen_recording_instructions": [
          "Use studio.html for A/B captions on the same 45-second demonstration. Keep footage and payoff constant; isolate named objects and contextual clarity rather than switching to a developer lesson.",
          "Inspect the result: The comparison controls topic, footage plan and format.",
          "Record the evidence and check each criterion."
        ],
        "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 comparison controls topic, footage plan and format."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Use studio.html for A/B captions on the same 45-second demonstration. Keep footage and payoff constant; isolate named objects and contextual clarity rather than switching to a developer lesson.",
          "The comparison controls topic, footage plan and format."
        ]
      },
      "step_id": "L09-S01",
      "lesson_id": "L09"
    },
    {
      "title": "Plan all multimodal layers",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Describe frames, audio, subtitles, overlays, visible objects, description, pinned question and bio link. Check the draft muted and audio-only; record what each condition misses.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Two comprehension checks expose cross-modal gaps.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Plan all multimodal layers",
        "success_condition": "Two comprehension checks expose cross-modal gaps.",
        "how_to_verify": "Record two comprehension checks expose cross-modal gaps. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Two comprehension checks expose cross-modal gaps.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Two comprehension checks expose cross-modal gaps.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for plan all multimodal layers?",
          "answer": "Two comprehension checks expose cross-modal gaps. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to plan all multimodal layers. Two comprehension checks expose cross-modal gaps.",
        "demo": "Describe frames, audio, subtitles, overlays, visible objects, description, pinned question and bio link. Check the draft muted and audio-only; record what each condition misses.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate plan all multimodal layers",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Describe frames, audio, subtitles, overlays, visible objects, description, pinned question and bio link. Check the draft muted and audio-only; record what each condition misses. Two comprehension checks expose cross-modal gaps.",
        "on_screen_text": [
          "Plan all multimodal layers",
          "Two comprehension checks expose cross-modal gaps."
        ],
        "screen_recording_instructions": [
          "Describe frames, audio, subtitles, overlays, visible objects, description, pinned question and bio link. Check the draft muted and audio-only; record what each condition misses.",
          "Inspect the result: Two comprehension checks expose cross-modal gaps.",
          "Record the evidence and check each criterion."
        ],
        "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 comprehension checks expose cross-modal gaps."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Describe frames, audio, subtitles, overlays, visible objects, description, pinned question and bio link. Check the draft muted and audio-only; record what each condition misses.",
          "Two comprehension checks expose cross-modal gaps."
        ]
      },
      "step_id": "L10-S01",
      "lesson_id": "L10"
    },
    {
      "title": "Correct captions against real audio",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Draft timestamped caption cues and record a short rehearsal. Compare word-for-word with audio, correcting cable clips terminology and timing. Captions are an ASR correction exercise, not a claim of automatic indexing.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A rehearsed cue and manual caption correction have evidence.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Correct captions against real audio",
        "success_condition": "A rehearsed cue and manual caption correction have evidence.",
        "how_to_verify": "Record a rehearsed cue and manual caption correction have evidence. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A rehearsed cue and manual caption correction have evidence.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A rehearsed cue and manual caption correction have evidence.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for correct captions against real audio?",
          "answer": "A rehearsed cue and manual caption correction have evidence. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to correct captions against real audio. A rehearsed cue and manual caption correction have evidence.",
        "demo": "Draft timestamped caption cues and record a short rehearsal. Compare word-for-word with audio, correcting cable clips terminology and timing. Captions are an ASR correction exercise, not a claim of automatic indexing.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate correct captions against real audio",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Draft timestamped caption cues and record a short rehearsal. Compare word-for-word with audio, correcting cable clips terminology and timing. Captions are an ASR correction exercise, not a claim of automatic indexing. A rehearsed cue and manual caption correction have evidence.",
        "on_screen_text": [
          "Correct captions against real audio",
          "A rehearsed cue and manual caption correction have evidence."
        ],
        "screen_recording_instructions": [
          "Draft timestamped caption cues and record a short rehearsal. Compare word-for-word with audio, correcting cable clips terminology and timing. Captions are an ASR correction exercise, not a claim of automatic indexing.",
          "Inspect the result: A rehearsed cue and manual caption correction have evidence.",
          "Record the evidence and check each criterion."
        ],
        "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 rehearsed cue and manual caption correction have evidence."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Draft timestamped caption cues and record a short rehearsal. Compare word-for-word with audio, correcting cable clips terminology and timing. Captions are an ASR correction exercise, not a claim of automatic indexing.",
          "A rehearsed cue and manual caption correction have evidence."
        ]
      },
      "step_id": "L11-S01",
      "lesson_id": "L11"
    },
    {
      "title": "Make overlays readable on a phone",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Choose high contrast and legible text outside interface controls. Keep one action per label and preview the first frame at 390px.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A phone-size preview clearly names the objects and action.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Make overlays readable on a phone",
        "success_condition": "A phone-size preview clearly names the objects and action.",
        "how_to_verify": "Record a phone-size preview clearly names the objects and action. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A phone-size preview clearly names the objects and action.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A phone-size preview clearly names the objects and action.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for make overlays readable on a phone?",
          "answer": "A phone-size preview clearly names the objects and action. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to make overlays readable on a phone. A phone-size preview clearly names the objects and action.",
        "demo": "Choose high contrast and legible text outside interface controls. Keep one action per label and preview the first frame 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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate make overlays readable on a phone",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Choose high contrast and legible text outside interface controls. Keep one action per label and preview the first frame at 390px. A phone-size preview clearly names the objects and action.",
        "on_screen_text": [
          "Make overlays readable on a phone",
          "A phone-size preview clearly names the objects and action."
        ],
        "screen_recording_instructions": [
          "Choose high contrast and legible text outside interface controls. Keep one action per label and preview the first frame at 390px.",
          "Inspect the result: A phone-size preview clearly names the objects and action.",
          "Record the evidence and check each criterion."
        ],
        "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 phone-size preview clearly names the objects and action."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Choose high contrast and legible text outside interface controls. Keep one action per label and preview the first frame at 390px.",
          "A phone-size preview clearly names the objects and action."
        ]
      },
      "step_id": "L12-S01",
      "lesson_id": "L12"
    },
    {
      "title": "Build a micro-knowledge chain",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Plan five independent clips: cable clutter, clip placement, power-strip visibility, label organization and outcome review. Avoid unsupported electrical advice and verify each can stand alone.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Five atomic ideas form a useful playlist plan.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Build a micro-knowledge chain",
        "success_condition": "Five atomic ideas form a useful playlist plan.",
        "how_to_verify": "Record five atomic ideas form a useful playlist plan. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Five atomic ideas form a useful playlist plan.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Five atomic ideas form a useful playlist plan.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for build a micro-knowledge chain?",
          "answer": "Five atomic ideas form a useful playlist plan. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to build a micro-knowledge chain. Five atomic ideas form a useful playlist plan.",
        "demo": "Plan five independent clips: cable clutter, clip placement, power-strip visibility, label organization and outcome review. Avoid unsupported electrical advice and verify each can stand alone.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate build a micro-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 clips: cable clutter, clip placement, power-strip visibility, label organization and outcome review. Avoid unsupported electrical advice and verify each can stand alone. Five atomic ideas form a useful playlist plan.",
        "on_screen_text": [
          "Build a micro-knowledge chain",
          "Five atomic ideas form a useful playlist plan."
        ],
        "screen_recording_instructions": [
          "Plan five independent clips: cable clutter, clip placement, power-strip visibility, label organization and outcome review. Avoid unsupported electrical advice and verify each can stand alone.",
          "Inspect the result: Five atomic ideas form a useful playlist plan.",
          "Record the evidence and check each criterion."
        ],
        "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 atomic ideas form a useful playlist plan."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Plan five independent clips: cable clutter, clip placement, power-strip visibility, label organization and outcome review. Avoid unsupported electrical advice and verify each can stand alone.",
          "Five atomic ideas form a useful playlist plan."
        ]
      },
      "step_id": "L13-S01",
      "lesson_id": "L13"
    },
    {
      "title": "Localize and define the entities",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Translate one cue or prepare a reviewer brief. Define cable clips as cable-routing accessories and keep product-specific compatibility unverified until checked.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Entity names and timing remain stable in the localization plan.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Localize and define the entities",
        "success_condition": "Entity names and timing remain stable in the localization plan.",
        "how_to_verify": "Record entity names and timing remain stable in the localization plan. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Entity names and timing remain stable in the localization plan.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Entity names and timing remain stable in the localization plan.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for localize and define the entities?",
          "answer": "Entity names and timing remain stable in the localization plan. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to localize and define the entities. Entity names and timing remain stable in the localization plan.",
        "demo": "Translate one cue or prepare a reviewer brief. Define cable clips as cable-routing accessories and keep product-specific compatibility unverified until checked.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate localize and define the entities",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Translate one cue or prepare a reviewer brief. Define cable clips as cable-routing accessories and keep product-specific compatibility unverified until checked. Entity names and timing remain stable in the localization plan.",
        "on_screen_text": [
          "Localize and define the entities",
          "Entity names and timing remain stable in the localization plan."
        ],
        "screen_recording_instructions": [
          "Translate one cue or prepare a reviewer brief. Define cable clips as cable-routing accessories and keep product-specific compatibility unverified until checked.",
          "Inspect the result: Entity names and timing remain stable in the localization plan.",
          "Record the evidence and check each criterion."
        ],
        "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 names and timing remain stable in the localization plan."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Translate one cue or prepare a reviewer brief. Define cable clips as cable-routing accessories and keep product-specific compatibility unverified until checked.",
          "Entity names and timing remain stable in the localization plan."
        ]
      },
      "step_id": "L14-S01",
      "lesson_id": "L14"
    },
    {
      "title": "Choose a durable content portfolio",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Plan trend 20%, explain 30%, teach 30% and build 20% as a proposed mix. Describe semantic robustness and the difference between a timely style and a lasting organizing method.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A calendar labels the ratio as a design model.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Choose a durable content portfolio",
        "success_condition": "A calendar labels the ratio as a design model.",
        "how_to_verify": "Record a calendar labels the ratio as a design model. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A calendar labels the ratio as a design model.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A calendar labels the ratio as a design model.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for choose a durable content portfolio?",
          "answer": "A calendar labels the ratio as a design model. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to choose a durable content portfolio. A calendar labels the ratio as a design model.",
        "demo": "Plan trend 20%, explain 30%, teach 30% and build 20% as a proposed mix. Describe semantic robustness and the difference between a timely style and a lasting organizing method.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate choose a durable content portfolio",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Plan trend 20%, explain 30%, teach 30% and build 20% as a proposed mix. Describe semantic robustness and the difference between a timely style and a lasting organizing method. A calendar labels the ratio as a design model.",
        "on_screen_text": [
          "Choose a durable content portfolio",
          "A calendar labels the ratio as a design model."
        ],
        "screen_recording_instructions": [
          "Plan trend 20%, explain 30%, teach 30% and build 20% as a proposed mix. Describe semantic robustness and the difference between a timely style and a lasting organizing method.",
          "Inspect the result: A calendar labels the ratio as a design model.",
          "Record the evidence and check each criterion."
        ],
        "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 calendar labels the ratio as a design model."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Plan trend 20%, explain 30%, teach 30% and build 20% as a proposed mix. Describe semantic robustness and the difference between a timely style and a lasting organizing method.",
          "A calendar labels the ratio as a design model."
        ]
      },
      "step_id": "L15-S01",
      "lesson_id": "L15"
    },
    {
      "title": "Make the thirteen-layer short-form stack",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "List video, audio, transcript, captions, overlays, description, pinned FAQ, article, JSON object, course unit, translation, retrieval chunk and command card. Public content stays a demonstration; validation belongs in the companion.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Thirteen layer briefs share one source and audience.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Make the thirteen-layer short-form stack",
        "success_condition": "Thirteen layer briefs share one source and audience.",
        "how_to_verify": "Record thirteen layer briefs share one source and audience. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Thirteen layer briefs share one source and audience.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Thirteen layer briefs share one source and audience.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for make the thirteen-layer short-form stack?",
          "answer": "Thirteen layer briefs share one source and audience. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to make the thirteen-layer short-form stack. Thirteen layer briefs share one source and audience.",
        "demo": "List video, audio, transcript, captions, overlays, description, pinned FAQ, article, JSON object, course unit, translation, retrieval chunk and command card. Public content stays a demonstration; validation belongs in the companion.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate make the thirteen-layer short-form stack",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "List video, audio, transcript, captions, overlays, description, pinned FAQ, article, JSON object, course unit, translation, retrieval chunk and command card. Public content stays a demonstration; validation belongs in the companion. Thirteen layer briefs share one source and audience.",
        "on_screen_text": [
          "Make the thirteen-layer short-form stack",
          "Thirteen layer briefs share one source and audience."
        ],
        "screen_recording_instructions": [
          "List video, audio, transcript, captions, overlays, description, pinned FAQ, article, JSON object, course unit, translation, retrieval chunk and command card. Public content stays a demonstration; validation belongs in the companion.",
          "Inspect the result: Thirteen layer briefs share one source and audience.",
          "Record the evidence and check each criterion."
        ],
        "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": [
          "Thirteen layer briefs share one source and audience."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "List video, audio, transcript, captions, overlays, description, pinned FAQ, article, JSON object, course unit, translation, retrieval chunk and command card. Public content stays a demonstration; validation belongs in the companion.",
          "Thirteen layer briefs share one source and audience."
        ]
      },
      "step_id": "L16-S01",
      "lesson_id": "L16"
    },
    {
      "title": "Recompose across platforms",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Adapt pacing, ratio, description, rights and destination for Shorts, Reels, Facebook and a website. Check current upload limits separately; no universal length or scrape-access promise.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "Four native variants retain the same facts.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Recompose across platforms",
        "success_condition": "Four native variants retain the same facts.",
        "how_to_verify": "Record four native variants retain the same facts. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Four native variants retain the same facts.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Four native variants retain the same facts.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for recompose across platforms?",
          "answer": "Four native variants retain the same facts. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to recompose across platforms. Four native variants retain the same facts.",
        "demo": "Adapt pacing, ratio, description, rights and destination for Shorts, Reels, Facebook and a website. Check current upload limits separately; no universal length or scrape-access promise.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate recompose across platforms",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Adapt pacing, ratio, description, rights and destination for Shorts, Reels, Facebook and a website. Check current upload limits separately; no universal length or scrape-access promise. Four native variants retain the same facts.",
        "on_screen_text": [
          "Recompose across platforms",
          "Four native variants retain the same facts."
        ],
        "screen_recording_instructions": [
          "Adapt pacing, ratio, description, rights and destination for Shorts, Reels, Facebook and a website. Check current upload limits separately; no universal length or scrape-access promise.",
          "Inspect the result: Four native variants retain the same facts.",
          "Record the evidence and check each criterion."
        ],
        "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 native variants retain the same facts."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Adapt pacing, ratio, description, rights and destination for Shorts, Reels, Facebook and a website. Check current upload limits separately; no universal length or scrape-access promise.",
          "Four native variants retain the same facts."
        ]
      },
      "step_id": "L17-S01",
      "lesson_id": "L17"
    },
    {
      "title": "Design the nightly content factory",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Map idea, research, fact check, micro-unit, hook, script, recording, captions, localization, distribution review and object. Extract three to five possible moments from an imagined B3 broadcast, clearly labelled as a plan.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A pipeline and broadcast extraction plan preserve original human evidence.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Design the nightly content factory",
        "success_condition": "A pipeline and broadcast extraction plan preserve original human evidence.",
        "how_to_verify": "Record a pipeline and broadcast extraction plan preserve original human evidence. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A pipeline and broadcast extraction plan preserve original human evidence.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A pipeline and broadcast extraction plan preserve original human evidence.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for design the nightly content factory?",
          "answer": "A pipeline and broadcast extraction plan preserve original human evidence. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to design the nightly content factory. A pipeline and broadcast extraction plan preserve original human evidence.",
        "demo": "Map idea, research, fact check, micro-unit, hook, script, recording, captions, localization, distribution review and object. Extract three to five possible moments from an imagined B3 broadcast, clearly labelled as a plan.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate design the nightly content factory",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Map idea, research, fact check, micro-unit, hook, script, recording, captions, localization, distribution review and object. Extract three to five possible moments from an imagined B3 broadcast, clearly labelled as a plan. A pipeline and broadcast extraction plan preserve original human evidence.",
        "on_screen_text": [
          "Design the nightly content factory",
          "A pipeline and broadcast extraction plan preserve original human evidence."
        ],
        "screen_recording_instructions": [
          "Map idea, research, fact check, micro-unit, hook, script, recording, captions, localization, distribution review and object. Extract three to five possible moments from an imagined B3 broadcast, clearly labelled as a plan.",
          "Inspect the result: A pipeline and broadcast extraction plan preserve original human evidence.",
          "Record the evidence and check each criterion."
        ],
        "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 pipeline and broadcast extraction plan preserve original human evidence."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Map idea, research, fact check, micro-unit, hook, script, recording, captions, localization, distribution review and object. Extract three to five possible moments from an imagined B3 broadcast, clearly labelled as a plan.",
          "A pipeline and broadcast extraction plan preserve original human evidence."
        ]
      },
      "step_id": "L18-S01",
      "lesson_id": "L18"
    },
    {
      "title": "Evaluate virality and knowledge separately",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Plot low/high attention against low/high utility. Explain why original real footage, observed mistakes and source provenance matter; do not fabricate C2PA credentials or model-collapse predictions.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "native-production.md",
        "native.json"
      ],
      "expected_result": "A two-axis review positions the demo with explicit evidence limits.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Evaluate virality and knowledge separately",
        "success_condition": "A two-axis review positions the demo with explicit evidence limits.",
        "how_to_verify": "Record a two-axis review positions the demo with explicit evidence limits. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A two-axis review positions the demo with explicit evidence limits.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A two-axis review positions the demo with explicit evidence limits.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for evaluate virality and knowledge separately?",
          "answer": "A two-axis review positions the demo with explicit evidence limits. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to evaluate virality and knowledge separately. A two-axis review positions the demo with explicit evidence limits.",
        "demo": "Plot low/high attention against low/high utility. Explain why original real footage, observed mistakes and source provenance matter; do not fabricate C2PA credentials or model-collapse predictions.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate evaluate virality and knowledge separately",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Plot low/high attention against low/high utility. Explain why original real footage, observed mistakes and source provenance matter; do not fabricate C2PA credentials or model-collapse predictions. A two-axis review positions the demo with explicit evidence limits.",
        "on_screen_text": [
          "Evaluate virality and knowledge separately",
          "A two-axis review positions the demo with explicit evidence limits."
        ],
        "screen_recording_instructions": [
          "Plot low/high attention against low/high utility. Explain why original real footage, observed mistakes and source provenance matter; do not fabricate C2PA credentials or model-collapse predictions.",
          "Inspect the result: A two-axis review positions the demo with explicit evidence limits.",
          "Record the evidence and check each criterion."
        ],
        "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 two-axis review positions the demo with explicit evidence limits."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Plot low/high attention against low/high utility. Explain why original real footage, observed mistakes and source provenance matter; do not fabricate C2PA credentials or model-collapse predictions.",
          "A two-axis review positions the demo with explicit evidence limits."
        ]
      },
      "step_id": "L19-S01",
      "lesson_id": "L19"
    },
    {
      "title": "Plan A–F experiments and three versions",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Draft viral baseline, search and full-stack versions of the same demo. Define A baseline, B metadata, C tri-modal, D clear transcript, E multilingual and F companion/provenance tests. Track views, retention, search, saves, citations and local card success separately.",
      "explanation": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "command_type": "shell",
      "required_inputs": [
        "experiments.md",
        "metrics.json"
      ],
      "expected_result": "Three versions and six controlled test proposals have denominators.",
      "resources": [
        "experiments.md",
        "metrics.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Plan A–F experiments and three versions",
        "success_condition": "Three versions and six controlled test proposals have denominators.",
        "how_to_verify": "Record three versions and six controlled test proposals have denominators. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Three versions and six controlled test proposals have denominators.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Three versions and six controlled test proposals have denominators.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for plan a–f experiments and three versions?",
          "answer": "Three versions and six controlled test proposals have denominators. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to plan A–F experiments and three versions. Three versions and six controlled test proposals have denominators.",
        "demo": "Draft viral baseline, search and full-stack versions of the same demo. Define A baseline, B metadata, C tri-modal, D clear transcript, E multilingual and F companion/provenance tests. Track views, retention, search, saves, citations and local card success separately.",
        "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate plan a–f experiments and three versions",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Draft viral baseline, search and full-stack versions of the same demo. Define A baseline, B metadata, C tri-modal, D clear transcript, E multilingual and F companion/provenance tests. Track views, retention, search, saves, citations and local card success separately. Three versions and six controlled test proposals have denominators.",
        "on_screen_text": [
          "Plan A–F experiments and three versions",
          "Three versions and six controlled test proposals have denominators."
        ],
        "screen_recording_instructions": [
          "Draft viral baseline, search and full-stack versions of the same demo. Define A baseline, B metadata, C tri-modal, D clear transcript, E multilingual and F companion/provenance tests. Track views, retention, search, saves, citations and local card success separately.",
          "Inspect the result: Three versions and six controlled test proposals have denominators.",
          "Record the evidence and check each criterion."
        ],
        "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 versions and six controlled test proposals have denominators."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Draft viral baseline, search and full-stack versions of the same demo. Define A baseline, B metadata, C tri-modal, D clear transcript, E multilingual and F companion/provenance tests. Track views, retention, search, saves, citations and local card success separately.",
          "Three versions and six controlled test proposals have denominators."
        ]
      },
      "step_id": "L20-S01",
      "lesson_id": "L20"
    },
    {
      "title": "Approve a complete demonstration package",
      "purpose": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "user_action": "Review eight levels from human, attention, discovery and search through clarity, retrieval, action and speculative future intelligence. Keep footage rights, caption accuracy, truthful timing and current platform limits as publication gates. 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": "A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 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 final review distinguishes observed rehearsal from unperformed live distribution.",
      "resources": [
        "native-production.md",
        "native.json",
        "AGENT_OPERATING_MANUAL.md",
        "agent-training.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Approve a complete demonstration package",
        "success_condition": "A final review distinguishes observed rehearsal from unperformed live distribution.",
        "how_to_verify": "Record a final review distinguishes observed rehearsal from unperformed live distribution. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A final review distinguishes observed rehearsal from unperformed live distribution.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A final review distinguishes observed rehearsal from unperformed live distribution.",
        "failure_message": "Compare the observed output with the required result before continuing.",
        "troubleshooting_path": "Open the help for this step."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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 is a useful result for approve a complete demonstration package?",
          "answer": "A final review distinguishes observed rehearsal from unperformed live distribution. Include the actual draft, source date or human observation rather than a claim that the algorithm will reward it."
        },
        {
          "question": "Can I use a different topic?",
          "answer": "Yes. Keep the same audience, topic, format and promise across your comparison versions. Update every entity/source/knowledge artifact consistently."
        }
      ],
      "quiz": null,
      "coach": {
        "intro": "We are going to approve a complete demonstration package. A final review distinguishes observed rehearsal from unperformed live distribution.",
        "demo": "Review eight levels from human, attention, discovery and search through clarity, retrieval, action and speculative future intelligence. Keep footage rights, caption accuracy, truthful timing and current platform limits as publication gates. 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": "What is the current directory, exact command, exit code and complete output?"
      },
      "video": {
        "purpose": "Demonstrate approve a complete demonstration package",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Review eight levels from human, attention, discovery and search through clarity, retrieval, action and speculative future intelligence. Keep footage rights, caption accuracy, truthful timing and current platform limits as publication gates. 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 final review distinguishes observed rehearsal from unperformed live distribution.",
        "on_screen_text": [
          "Approve a complete demonstration package",
          "A final review distinguishes observed rehearsal from unperformed live distribution."
        ],
        "screen_recording_instructions": [
          "Review eight levels from human, attention, discovery and search through clarity, retrieval, action and speculative future intelligence. Keep footage rights, caption accuracy, truthful timing and current platform limits as publication gates. 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.",
          "Inspect the result: A final review distinguishes observed rehearsal from unperformed live distribution.",
          "Record the evidence and check each criterion."
        ],
        "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 final review distinguishes observed rehearsal from unperformed live distribution."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Review eight levels from human, attention, discovery and search through clarity, retrieval, action and speculative future intelligence. Keep footage rights, caption accuracy, truthful timing and current platform limits as publication gates. 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 final review distinguishes observed rehearsal from unperformed live distribution."
        ]
      },
      "step_id": "L21-S01",
      "lesson_id": "L21"
    },
    {
      "title": "Set up the practice folder",
      "purpose": "A dedicated folder makes mistakes easy to diagnose and keeps real project files separate.",
      "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": "A dedicated folder makes mistakes easy to diagnose and keeps real project files separate.",
      "estimated_time": "6 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 python reports version 3.10 or newer and the terminal is in the extracted resource folder. Include the actual result or a specific observation; do not paste credentials.",
        "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."
      },
      "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": "Does the file list include the resource named by the next step?",
          "fix": "Install Python from python.org with the PATH option; reopen the terminal and change into the extracted 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": "How do I verify set up the practice folder?",
          "answer": "Python reports version 3.10 or newer and the terminal is in the extracted resource folder. Keep the command or observation with your evidence."
        },
        {
          "question": "Which files do I need for this step?",
          "answer": "Use your saved work from the previous step. Work in the same practice folder."
        }
      ],
      "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": "Does the file list include the resource named by the next step?"
      },
      "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.",
          "Inspect the result: Python reports version 3.10 or newer and the terminal is in the extracted resource folder.",
          "Record the evidence and check each criterion."
        ],
        "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": "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": "Keep the input and the observed result together so you can reproduce this action later.",
      "estimated_time": "4 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 ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone. Include the actual result or a specific observation; do not paste credentials.",
        "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."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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": "How do I verify audit the mechanism and claim ledger?",
          "answer": "The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone. Keep the command or observation with your evidence."
        },
        {
          "question": "Which files do I need for this step?",
          "answer": "Use mechanisms.md, claims.json, knowledge.json, rag.jsonl. Work in the same practice folder."
        }
      ],
      "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "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.",
          "Inspect the result: The ledger separates training, retrieval, indexing, context, citation and action; two source-linked chunks stand alone.",
          "Record the evidence and check each criterion."
        ],
        "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": "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. Facebook uses eleven dimensions normalized by dividing by 110 and multiplying by 100.",
      "explanation": "Keep the input and the observed result together so you can reproduce this action later.",
      "estimated_time": "4 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 a downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit. Include the actual result or a specific observation; do not paste credentials.",
        "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": [],
        "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."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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": "How do I verify use the readiness calculator?",
          "answer": "A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit. Keep the command or observation with your evidence."
        },
        {
          "question": "Which files do I need for this step?",
          "answer": "Use studio.html, rubric.json, versions.json, metrics.json. Work in the same practice folder."
        }
      ],
      "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. Facebook uses eleven dimensions normalized by dividing by 110 and multiplying 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": "What is the current directory, exact command, exit code and complete output?"
      },
      "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. Facebook uses eleven dimensions normalized by dividing by 110 and multiplying 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. Facebook uses eleven dimensions normalized by dividing by 110 and multiplying by 100.",
          "Inspect the result: A downloadable pair and rubric are saved; the score is self-assessment and unrun metrics are explicit.",
          "Record the evidence and check each criterion."
        ],
        "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. Facebook uses eleven dimensions normalized by dividing by 110 and multiplying 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": "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": "Keep the input and the observed result together so you can reproduce this action later.",
      "estimated_time": "4 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 hASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric. Include the actual result or a specific observation; do not paste credentials.",
        "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."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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": "How do I verify hash and lint the reviewed files?",
          "answer": "HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric. Keep the command or observation with your evidence."
        },
        {
          "question": "Which files do I need for this step?",
          "answer": "Use media_pack.py, agent-card.json. Work in the same practice folder."
        }
      ],
      "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "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.",
          "Inspect the result: HASH PASS and MEDIA PASS appear with exit 0; the readiness score matches the reviewed rubric.",
          "Record the evidence and check each criterion."
        ],
        "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": "A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS.",
      "user_action": "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.",
      "explanation": "Keep the input and the observed result together so you can reproduce this action later.",
      "estimated_time": "4 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 a mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [
          "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."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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": "How do I verify prove changed bytes and broken content fail?",
          "answer": "A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS. Keep the command or observation with your evidence."
        },
        {
          "question": "Which files do I need for this step?",
          "answer": "Use versions.json, media_pack.py. Work in the same practice folder."
        }
      ],
      "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "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": [
          "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.",
          "Inspect the result: A mismatched topic produces MEDIA FAIL; a reviewed correction produces MEDIA PASS.",
          "Record the evidence and check each criterion."
        ],
        "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": "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": "Keep the input and the observed result together so you can reproduce this action later.",
      "estimated_time": "4 min",
      "action_type": "command",
      "commands": {
        "windows": "python media_pack.py retrieve --query \"What should a desk cables demonstration show in its opening?\"\npython media_pack.py retrieve --query \"quasar waffle weather\"",
        "macos": "python3 media_pack.py retrieve --query \"What should a desk cables demonstration show in its opening?\"\npython3 media_pack.py retrieve --query \"quasar waffle weather\"",
        "linux": "python3 media_pack.py retrieve --query \"What should a desk cables demonstration show in its opening?\"\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.",
      "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 relevant query returns source-linked chunks; the unrelated query abstains. Include the actual result or a specific observation; do not paste credentials.",
        "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."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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": "How do I verify run a source-linked retrieval probe?",
          "answer": "The relevant query returns source-linked chunks; the unrelated query abstains. Keep the command or observation with your evidence."
        },
        {
          "question": "Which files do I need for this step?",
          "answer": "Use media_pack.py, rag.jsonl. Work in the same practice folder."
        }
      ],
      "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "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.",
          "Inspect the result: The relevant query returns source-linked chunks; the unrelated query abstains.",
          "Record the evidence and check each criterion."
        ],
        "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": "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": "Keep the input and the observed result together so you can reproduce this action later.",
      "estimated_time": "4 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 handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision. Include the actual result or a specific observation; do not paste credentials.",
        "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."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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": "How do I verify record provenance and a human approval decision?",
          "answer": "The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision. Keep the command or observation with your evidence."
        },
        {
          "question": "Which files do I need for this step?",
          "answer": "Use provenance-notes.md, agent-card.json, capstone.md. Work in the same practice folder."
        }
      ],
      "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "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.",
          "Inspect the result: The handoff includes native drafts, source/rights review, unsigned integrity manifest, explicit live-status limits and an approval decision.",
          "Record the evidence and check each criterion."
        ],
        "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": "The September 23 BuildBotsBetter profile wipe removed Desktop, Documents and hidden agent memory together. Repeatable onboarding protects the knowledge needed to recover.",
      "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": "The September 23 BuildBotsBetter profile wipe removed Desktop, Documents and hidden agent memory together. Repeatable onboarding protects the knowledge needed to recover.",
      "estimated_time": "6 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 checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification. Include the actual result or a specific observation; do not paste credentials.",
        "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."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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": "How do I verify write a repeatable onboarding checklist?",
          "answer": "The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification. Keep the command or observation with your evidence."
        },
        {
          "question": "Which files do I need for this step?",
          "answer": "Use onboarding-checklist.md. Work in the same practice folder."
        }
      ],
      "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "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.",
          "Inspect the result: The checklist contains a concrete path and owner for rules, memory, permissions, guard, backup, restore and final verification.",
          "Record the evidence and check each criterion."
        ],
        "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": "A command-text hook can miss a target computed inside a script or variable. This demonstrator checks resolved paths but is not an operating-system sandbox. For a real operation, enforce the resolved boundary at the operation itself; symlinks and races still require care.",
      "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": "A command-text hook can miss a target computed inside a script or variable. This demonstrator checks resolved paths but is not an operating-system sandbox. For a real operation, enforce the resolved boundary at the operation itself; symlinks and races still require care.",
      "estimated_time": "6 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 gUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed. Include the actual result or a specific observation; do not paste credentials.",
        "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."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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": "How do I verify demonstrate the variable-path limit safely?",
          "answer": "GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed. Keep the command or observation with your evidence."
        },
        {
          "question": "Which files do I need for this step?",
          "answer": "Use workspace_guard.py. Work in the same practice folder."
        }
      ],
      "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "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.",
          "Inspect the result: GUARD PASS reports inside allowed and profile, outside, variable-derived profile and workspace root denied; no deletion was executed.",
          "Record the evidence and check each criterion."
        ],
        "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": "A broken hook that blocks everything can look like protection. Some tools fail open when hooks fail. Codex hook changes need review/trust; Grok Build needs its own deny protocol; Antigravity uses a different JSON protocol. Never treat a prompt rule or an inactive hook as enforcement.",
      "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; 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.",
      "explanation": "A broken hook that blocks everything can look like protection. Some tools fail open when hooks fail. Codex hook changes need review/trust; Grok Build needs its own deny protocol; Antigravity uses a different JSON protocol. Never treat a prompt rule or an inactive hook as enforcement.",
      "estimated_time": "6 min",
      "action_type": "inspect",
      "commands": {
        "all": ""
      },
      "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 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. Include the actual result or a specific observation; do not paste credentials.",
        "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."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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": "How do I install a guard for this tool?",
          "answer": "Use the linked BBB safety reference for the exact tool/version protocol. Merge into the existing hooks instead of overwriting settings. Review/trust the hook if required, then verify a harmless call and a denied dry-run. The workspace_guard.py file is a teaching demonstration, not a universal hook adapter."
        },
        {
          "question": "Does Grok Bot have a working local delete guard?",
          "answer": "The project’s live September 29 tests found no working shell hook. Restrict the tasks and workspace you hand it, keep independent backups, and do not claim local deletion is guarded."
        }
      ],
      "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "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; 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.",
          "Inspect the 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.",
          "Record the evidence and check each criterion."
        ],
        "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": "System Restore alone is not a personal-file backup. Previous Versions can disappear as shadow storage fills; OneDrive’s common-folder backup omits hidden agent folders.",
      "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.",
      "explanation": "System Restore alone is not a personal-file backup. Previous Versions can disappear as shadow storage fills; OneDrive’s common-folder backup omits hidden agent folders.",
      "estimated_time": "6 min",
      "action_type": "command",
      "commands": {
        "windows": ".\\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 a backup on another drive includes the tool’s user settings and memory folder and this project, and a successful schedule/time is recorded. Include the actual result or a specific observation; do not paste credentials.",
        "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": [],
        "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."
      },
      "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": "Can you create a scratch file on the actual second drive?",
          "fix": "Mount the drive and choose an accessible backup directory. Inspect every error; robocopy codes 8 and higher are failures.",
          "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": "How do I verify enable a real backup of memory and project files?",
          "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. Keep the command or observation with your evidence."
        },
        {
          "question": "Which files do I need for this step?",
          "answer": "Use profile-backup.ps1, profile-backup.sh, onboarding-checklist.md. Work in the same practice folder."
        }
      ],
      "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": "Can you create a scratch file on the actual second drive?"
      },
      "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.",
          "Inspect the 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.",
          "Record the evidence and check each criterion."
        ],
        "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": "A backup becomes useful only when restoration has been practiced. A same-volume practice copy proves the procedure but not protection against disk failure.",
      "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": "A backup becomes useful only when restoration has been practiced. A same-volume practice copy proves the procedure but not protection against disk failure.",
      "estimated_time": "6 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 rESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch. Include the actual result or a specific observation; do not paste credentials.",
        "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."
      },
      "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 is the current directory, exact command, exit code and complete output?",
          "fix": "Compare the input filename and working directory with this step. Rerun only after correcting that difference.",
          "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": "How do I verify practice a hash-verified restore?",
          "answer": "RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch. Keep the command or observation with your evidence."
        },
        {
          "question": "Which files do I need for this step?",
          "answer": "Use restore_drill.py. Work in the same practice folder."
        }
      ],
      "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": "What is the current directory, exact command, exit code and complete output?"
      },
      "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.",
          "Inspect the result: RESTORE PASS contains matching hashes; the actual memory file is readable after restoration into scratch.",
          "Record the evidence and check each criterion."
        ],
        "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-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}\nmkdir -p \"$dest\"\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": "# 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'))\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        query=set(re.findall(r'\\w+',a.query.casefold()));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>0][: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-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>TikTok draft studio</h1><p>A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.</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. Facebook's eleven dimensions are normalized to 100.</p><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\": \"Desk cable reset\", \"format\": \"45-second vertical demonstration\", \"text\": \"Wait for this desk glow-up! I finally tried that little trick everyone is talking about. So satisfying.\"}, \"B\": {\"topic\": \"Desk cable reset\", \"format\": \"45-second vertical demonstration\", \"text\": \"Desk cables everywhere? Watch this cable clips reset: show the loose cables, label the clips, then reveal the routed desk cables. My demo timing is an observation, not a promise that every desk takes the same time. Save the sequence if your desk has the same clutter.\"}}, dimensions=[\"Human resonance\", \"Attention\", \"Search intent\", \"Semantic clarity\", \"Multimodal alignment\", \"Retrieval readiness\", \"Agent actionability\", \"Localization\", \"Provenance\", \"Durable value\"];\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=[\"desk cables\", \"cable clips\"];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=(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',{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\": \"Desk cable reset\",\n    \"format\": \"45-second vertical demonstration\",\n    \"text\": \"Wait for this desk glow-up! I finally tried that little trick everyone is talking about. So satisfying.\"\n  },\n  \"B\": {\n    \"topic\": \"Desk cable reset\",\n    \"format\": \"45-second vertical demonstration\",\n    \"text\": \"Desk cables everywhere? Watch this cable clips reset: show the loose cables, label the clips, then reveal the routed desk cables. My demo timing is an observation, not a promise that every desk takes the same time. Save the sequence if your desk has the same clutter.\"\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\": \"tiktok\",\n  \"topic\": \"Desk cable reset\",\n  \"question\": \"What should a desk cables demonstration show in its opening?\",\n  \"answer\": \"A desk cables demonstration should show the clutter and name cable clips before presenting the result. The same object labels should appear in speech, on-screen text and edited captions; a neat result alone does not prove a universal setup time.\",\n  \"context\": \"A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.\",\n  \"example\": \"Synthetic teaching example; replace with a checked observation before public use.\",\n  \"entities\": [\n    \"desk cables\",\n    \"cable clips\"\n  ],\n  \"sources\": [\n    \"https://newsroom.tiktok.com/how-tiktok-recommends-videos-for-you?lang=en\"\n  ],\n  \"related_topics\": [\n    \"workspace organization\",\n    \"short demonstrations\"\n  ],\n  \"keywords\": [\n    \"desk cables\",\n    \"cable clips\"\n  ],\n  \"language\": \"en\",\n  \"author\": \"chatgpt_codex teaching fixture\",\n  \"date\": \"2026-10-06\",\n  \"next_action\": \"Record your own cable-routing demonstration and check the actual captions against the audio.\"\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\": \"tiktok-1\", \"entity\": \"desk cables\", \"question\": \"What should a desk cables demonstration show in its opening?\", \"answer\": \"A desk cables demonstration should show the clutter and name cable clips before presenting the result. The same object labels should appear in speech, on-screen text and edited captions; a neat result alone does not prove a universal setup time.\", \"source\": \"https://newsroom.tiktok.com/how-tiktok-recommends-videos-for-you?lang=en\"}\n{\"id\": \"tiktok-2\", \"entity\": \"desk cables\", \"question\": \"What should the desk cables audience do next?\", \"answer\": \"desk cables: Record your own cable-routing demonstration and check the actual captions against the audio.\", \"source\": \"https://newsroom.tiktok.com/how-tiktok-recommends-videos-for-you?lang=en\"}\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    \"Human resonance\",\n    \"Attention\",\n    \"Search intent\",\n    \"Semantic clarity\",\n    \"Multimodal alignment\",\n    \"Retrieval readiness\",\n    \"Agent actionability\",\n    \"Localization\",\n    \"Provenance\",\n    \"Durable value\"\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\": \"9:16\",\n  \"seconds\": 45,\n  \"first_frame\": \"Cluttered desk cables and visible cable clips\",\n  \"payoff\": \"Actual before/after reveal\",\n  \"audio_rights\": \"Use own narration and licensed music only\"\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\": \"TikTok documents user interactions and video information among recommendation inputs.\",\n      \"label\": \"ESTABLISHED\",\n      \"source\": \"https://newsroom.tiktok.com/how-tiktok-recommends-videos-for-you?lang=en\",\n      \"checked\": \"2026-10-06\"\n    },\n    {\n      \"claim\": \"A named-object first frame will improve comprehension without harming the satisfying reveal.\",\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\": \"Desk cable reset\",\n  \"format\": \"45-second vertical demonstration\",\n  \"primary_metric\": \"completion rate and saves per view\",\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. Synthetic Intelligence (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\": \"TikTok Content Agent\",\n  \"topic\": \"Desk cable reset\",\n  \"operating_points\": {\n    \"01_platform_identity\": \"TikTok Content Agent; create native 45-second vertical demonstration drafts rather than swapping platform labels.\",\n    \"02_audience\": \"A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.\",\n    \"03_content_graph\": {\n      \"format\": \"45-second vertical demonstration\",\n      \"topic\": \"Desk cable reset\",\n      \"alternatives\": \"First native surface/format exercises and native.json.\"\n    },\n    \"04_distribution_graph\": \"For You, following, search, sharing and permitted remix contexts; rights and originality remain distinct from engagement.\",\n    \"05_algorithm\": {\n      \"source\": \"https://newsroom.tiktok.com/how-tiktok-recommends-videos-for-you?lang=en\",\n      \"documented_claim\": \"TikTok documents user interactions and video information among recommendation inputs.\",\n      \"private_weights\": \"UNKNOWN; never fabricate weights, thresholds or penalties.\"\n    },\n    \"06_engagement_graph\": {\n      \"actions\": [\n        \"Watch the demonstrated payoff\",\n        \"Save the sequence\",\n        \"Share with a relevant viewer\",\n        \"Comment with a routing question\",\n        \"Follow original demos\"\n      ],\n      \"useful_metric\": \"completion rate and saves per view\",\n      \"valuation\": \"Predeclare useful outcomes and denominators; no fabricated platform point values.\"\n    },\n    \"07_native_formats\": {\n      \"ratio\": \"9:16\",\n      \"seconds\": 45,\n      \"first_frame\": \"Cluttered desk cables and visible cable clips\",\n      \"payoff\": \"Actual before/after reveal\",\n      \"audio_rights\": \"Use own narration and licensed music only\"\n    },\n    \"08_creative_language\": \"Fast, visual and satisfying; name the object early, deliver the payoff, no unlicensed sound or false timing promise.\",\n    \"09_cta_system\": [\n      \"Watch the demonstrated payoff\",\n      \"Save the sequence\",\n      \"Share with a relevant viewer\",\n      \"Comment with a routing question\",\n      \"Follow original demos\"\n    ],\n    \"10_search\": {\n      \"entities\": [\n        \"desk cables\",\n        \"cable clips\"\n      ],\n      \"query\": \"What should a desk cables demonstration show in its opening?\",\n      \"task\": \"Observe current queries and record date/access limits before writing metadata.\"\n    },\n    \"11_platform_ai\": {\n      \"description\": \"TikTok Symphony documents image-to-video, text-to-video and product-showcase creative tools with AI-generated labeling. Generated clips are creative drafts, not proof of an actual desk reset.\",\n      \"source\": \"https://newsroom.tiktok.com/tiktok-symphony-updates?lang=en\",\n      \"checked\": \"2026-10-06\",\n      \"status\": \"Documented description; actual account availability/execution UNVERIFIED.\"\n    },\n    \"12_ai_discovery\": {\n      \"input_output\": \"Visual assets, text prompts and product images → disclosed generated creative clips; recommendation/search are separate systems.\",\n      \"rule\": \"Do not promise a private model will parse, recommend, cite or train on the object.\"\n    },\n    \"13_multimodal\": {\n      \"entities\": [\n        \"desk cables\",\n        \"cable clips\"\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\": \"45-second vertical demonstration\",\n      \"hypothesis\": \"A named-object first frame will improve comprehension without harming the satisfying reveal.\",\n      \"status\": \"UNTESTED for this draft; empirical superiority not claimed.\"\n    },\n    \"16_failure_modes\": \"Fast, visual and satisfying; name the object early, deliver the payoff, no unlicensed sound or false timing promise. 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\": \"completion rate and saves per view\",\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# TikTok Content Agent operating manual\n\nAudience: A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.\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: Watch the demonstrated payoff → Save the sequence → Share with a relevant viewer → Comment with a routing question → Follow original demos\n\nNative AI: TikTok Symphony documents image-to-video, text-to-video and product-showcase creative tools with AI-generated labeling. Generated clips are creative drafts, not proof of an actual desk reset.\nPrimary source: https://newsroom.tiktok.com/tiktok-symphony-updates?lang=en\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# TikTok audience\n\nTopic: Desk cable reset\nAudience: A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.\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 platform realities\nInventory For You, Following, Search, Friends, LIVE, Stories, playlists, profile and Shop as available. Describe likes, comments, shares, saves, watch behavior and metadata without inventing FYP test-batch sizes.\n\nYour artifact / evidence:\n\n## Observe the native audience\nReview two public satisfying organization demos. Record their opening, payoff, pacing and comments with dates. Your desk-reset persona is an editorial choice, not a claim that every TikTok user wants the same content.\n\nYour artifact / evidence:\n\n## Win the first second honestly\nStoryboard 0–1 second clutter reveal and 1–3 second object/action grounding. Try movement, pattern interrupt, question and transformation hooks without a misleading promise.\n\nYour artifact / evidence:\n\n## Write the hook-value-payoff loop\nDraft a complete 45-second sequence: hook, clips placed, visible routing, honest result and save cue. One video solves one cable-organizing question.\n\nYour artifact / evidence:\n\n## Research a real search intent\nWrite informational, navigational, commercial and instructional query examples. Inspect Creator Search Insights if your account supports it and record actual observations; do not invent search volume.\n\nYour artifact / evidence:\n\n## Say, show and write the same entity\nPut desk cables and cable clips in narration, frame labels and caption. Compare the three layers for contradictions, missing nouns and exaggerated timing.\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# TikTok native-production\n\nTopic: Desk cable reset\nAudience: A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.\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 platform realities\nInventory For You, Following, Search, Friends, LIVE, Stories, playlists, profile and Shop as available. Describe likes, comments, shares, saves, watch behavior and metadata without inventing FYP test-batch sizes.\n\nYour artifact / evidence:\n\n## Observe the native audience\nReview two public satisfying organization demos. Record their opening, payoff, pacing and comments with dates. Your desk-reset persona is an editorial choice, not a claim that every TikTok user wants the same content.\n\nYour artifact / evidence:\n\n## Win the first second honestly\nStoryboard 0–1 second clutter reveal and 1–3 second object/action grounding. Try movement, pattern interrupt, question and transformation hooks without a misleading promise.\n\nYour artifact / evidence:\n\n## Write the hook-value-payoff loop\nDraft a complete 45-second sequence: hook, clips placed, visible routing, honest result and save cue. One video solves one cable-organizing question.\n\nYour artifact / evidence:\n\n## Research a real search intent\nWrite informational, navigational, commercial and instructional query examples. Inspect Creator Search Insights if your account supports it and record actual observations; do not invent search volume.\n\nYour artifact / evidence:\n\n## Say, show and write the same entity\nPut desk cables and cable clips in narration, frame labels and caption. Compare the three layers for contradictions, missing nouns and exaggerated timing.\n\nYour artifact / evidence:\n\n## Solve the three-second semantic problem\nUse hook + entity + topic + value to rewrite a vague glow-up opening. Keep the satisfying reveal while naming the actual organizing action.\n\nYour artifact / evidence:\n\n## Compare the controlled demo pair\nUse studio.html for A/B captions on the same 45-second demonstration. Keep footage and payoff constant; isolate named objects and contextual clarity rather than switching to a developer lesson.\n\nYour artifact / evidence:\n\n## Plan all multimodal layers\nDescribe frames, audio, subtitles, overlays, visible objects, description, pinned question and bio link. Check the draft muted and audio-only; record what each condition misses.\n\nYour artifact / evidence:\n\n## Correct captions against real audio\nDraft timestamped caption cues and record a short rehearsal. Compare word-for-word with audio, correcting cable clips terminology and timing. Captions are an ASR correction exercise, not a claim of automatic indexing.\n\nYour artifact / evidence:\n\n## Make overlays readable on a phone\nChoose high contrast and legible text outside interface controls. Keep one action per label and preview the first frame at 390px.\n\nYour artifact / evidence:\n\n## Build a micro-knowledge chain\nPlan five independent clips: cable clutter, clip placement, power-strip visibility, label organization and outcome review. Avoid unsupported electrical advice and verify each can stand alone.\n\nYour artifact / evidence:\n\n## Localize and define the entities\nTranslate one cue or prepare a reviewer brief. Define cable clips as cable-routing accessories and keep product-specific compatibility unverified until checked.\n\nYour artifact / evidence:\n\n## Choose a durable content portfolio\nPlan trend 20%, explain 30%, teach 30% and build 20% as a proposed mix. Describe semantic robustness and the difference between a timely style and a lasting organizing method.\n\nYour artifact / evidence:\n\n## Make the thirteen-layer short-form stack\nList video, audio, transcript, captions, overlays, description, pinned FAQ, article, JSON object, course unit, translation, retrieval chunk and command card. Public content stays a demonstration; validation belongs in the companion.\n\nYour artifact / evidence:\n\n## Recompose across platforms\nAdapt pacing, ratio, description, rights and destination for Shorts, Reels, Facebook and a website. Check current upload limits separately; no universal length or scrape-access promise.\n\nYour artifact / evidence:\n\n## Design the nightly content factory\nMap idea, research, fact check, micro-unit, hook, script, recording, captions, localization, distribution review and object. Extract three to five possible moments from an imagined B3 broadcast, clearly labelled as a plan.\n\nYour artifact / evidence:\n\n## Evaluate virality and knowledge separately\nPlot low/high attention against low/high utility. Explain why original real footage, observed mistakes and source provenance matter; do not fabricate C2PA credentials or model-collapse predictions.\n\nYour artifact / evidence:\n\n## Plan A–F experiments and three versions\nDraft viral baseline, search and full-stack versions of the same demo. Define A baseline, B metadata, C tri-modal, D clear transcript, E multilingual and F companion/provenance tests. Track views, retention, search, saves, citations and local card success separately.\n\nYour artifact / evidence:\n\n## Approve a complete demonstration package\nReview eight levels from human, attention, discovery and search through clarity, retrieval, action and speculative future intelligence. Keep footage rights, caption accuracy, truthful timing and current platform limits as publication gates.\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# TikTok caption\n\nTopic: Desk cable reset\nAudience: A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.\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 the hook-value-payoff loop\nDraft a complete 45-second sequence: hook, clips placed, visible routing, honest result and save cue. One video solves one cable-organizing question.\n\nYour artifact / evidence:\n\n## Compare the controlled demo pair\nUse studio.html for A/B captions on the same 45-second demonstration. Keep footage and payoff constant; isolate named objects and contextual clarity rather than switching to a developer lesson.\n\nYour artifact / evidence:\n\n## Correct captions against real audio\nDraft timestamped caption cues and record a short rehearsal. Compare word-for-word with audio, correcting cable clips terminology and timing. Captions are an ASR correction exercise, not a claim of automatic indexing.\n\nYour artifact / evidence:\n\n## Make overlays readable on a phone\nChoose high contrast and legible text outside interface controls. Keep one action per label and preview the first frame at 390px.\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# TikTok diagnostic-log\n\nTopic: Desk cable reset\nAudience: A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.\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 native audience\nReview two public satisfying organization demos. Record their opening, payoff, pacing and comments with dates. Your desk-reset persona is an editorial choice, not a claim that every TikTok user wants the same content.\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# TikTok capstone\n\nTopic: Desk cable reset\nAudience: A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.\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## Design the nightly content factory\nMap idea, research, fact check, micro-unit, hook, script, recording, captions, localization, distribution review and object. Extract three to five possible moments from an imagined B3 broadcast, clearly labelled as a plan.\n\nYour artifact / evidence:\n\n## Evaluate virality and knowledge separately\nPlot low/high attention against low/high utility. Explain why original real footage, observed mistakes and source provenance matter; do not fabricate C2PA credentials or model-collapse predictions.\n\nYour artifact / evidence:\n\n## Plan A–F experiments and three versions\nDraft viral baseline, search and full-stack versions of the same demo. Define A baseline, B metadata, C tri-modal, D clear transcript, E multilingual and F companion/provenance tests. Track views, retention, search, saves, citations and local card success separately.\n\nYour artifact / evidence:\n\n## Approve a complete demonstration package\nReview eight levels from human, attention, discovery and search through clarity, retrieval, action and speculative future intelligence. Keep footage rights, caption accuracy, truthful timing and current platform limits as publication gates.\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# TikTok experiments\n\nTopic: Desk cable reset\nAudience: A viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.\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 A–F experiments and three versions\nDraft viral baseline, search and full-stack versions of the same demo. Define A baseline, B metadata, C tri-modal, D clear transcript, E multilingual and F companion/provenance tests. Track views, retention, search, saves, citations and local card success separately.\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 — Understanding TikTok: Platform Realities\nOwn exercise: Map platform realities\n\n### Part 2 — The TikTok Attention Engine\nOwn exercise: Win the first second honestly\n\n### Part 3 — TikTok SEO & Social Search\nOwn exercise: Research a real search intent\n\n### Part 4 — The 3-Second Semantic Problem\nOwn exercise: Solve the three-second semantic problem\n\n### Part 5 — TikTok as Multimodal Data\nOwn exercise: Plan all multimodal layers\n\n### Part 6 — Captions as a Machine-Readable Knowledge Layer\nOwn exercise: Correct captions against real audio\n\n### Part 7 — On-Screen Text as Semantic Data\nOwn exercise: Make overlays readable on a phone\n\n### Part 8 — The Micro-Knowledge Unit\nOwn exercise: Write the hook-value-payoff loop\n\n### Part 9 — The TikTok Knowledge Chain\nOwn exercise: Build a micro-knowledge chain\n\n### Part 10 — Multilingual AI Discoverability\nOwn exercise: Localize and define the entities\n\n### Part 11 — Entity-First TikTok\nOwn exercise: Localize and define the entities\n\n### Part 12 — Trending Content vs Evergreen Knowledge\nOwn exercise: Choose a durable content portfolio\n\n### Part 13 — The TikTok Algorithm vs The Knowledge Algorithm\nOwn exercise: Choose a durable content portfolio\n\n### Part 14 — RAG-Ready Short-Form Content\nOwn exercise: Companion knowledge and truthful claims: mechanisms.md, claims.json, knowledge.json, rag.jsonl\n\n### Part 15 — Agent-Ready TikTok Content\nOwn exercise: Hash and lint the reviewed files; agent-card.json (three operating systems)\n\n### Part 16 — TikTok as an AI Answer Engine Source\nOwn exercise: Run a source-linked retrieval probe; media_pack.py retrieve\n\n### Part 17 — Machine-Readable Content Architecture\nOwn exercise: Make the thirteen-layer short-form stack\n\n### Part 18 — The B3 13-Layer Short-Form Content Stack\nOwn exercise: Make the thirteen-layer short-form stack\n\n### Part 19 — Ecosystem Composition: Don't Just Repurpose, Recompose\nOwn exercise: Recompose across platforms\n\n### Part 20 — Cross-Platform Semantic Consistency Matrix\nOwn exercise: Recompose across platforms\n\n### Part 21 — The Build Bots Better Content Factory\nOwn exercise: Design the nightly content factory\n\n### Part 22 — The Nightly Show Connection\nOwn exercise: Design the nightly content factory\n\n### Part 23 — The B3 Virality + Knowledge Model\nOwn exercise: Evaluate virality and knowledge separately\n\n### Part 24 — The AI Training Data Question\nOwn exercise: Companion knowledge and truthful claims: mechanisms.md, claims.json, knowledge.json, rag.jsonl\n\n### Part 25 — The Synthetic Content Problem & The Human Signal\nOwn exercise: Evaluate virality and knowledge separately\n\n### Part 26 — Content Provenance & Cryptographic Attribution\nOwn exercise: Record provenance and a human approval decision; provenance-notes.md\n\n### Part 27 — Build Bots Better: Beyond the Algorithm\nOwn exercise: Approve a complete demonstration package\n\n### Part 28 — The B3 AI Readiness Score (0–100)\nOwn exercise: Use the readiness calculator; studio.html and rubric.json\n\n### Part 29 — The Empirical Experiment Matrix\nOwn exercise: Plan A–F experiments and three versions\n\n### Part 30 — The Future of Short-Form Video: AI as Discovery Layer\nOwn exercise: Approve a complete demonstration package\n\n### Part 31 — From SEO to Intelligence Optimization\nOwn exercise: Approve a complete demonstration 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\": \"TikTok\",\n  \"progression\": [\n    \"Human\",\n    \"Attention\",\n    \"Discovery\",\n    \"Search\",\n    \"AI clarity\",\n    \"Retrieval\",\n    \"Agentic\",\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 viewer wants a quick satisfying desk-reset demonstration with an immediate payoff. The example is a short cable-organization reveal, not a terminal tutorial in disguise.\",\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"
    }
  ],
  "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 45-second vertical demonstration 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 45-second vertical demonstration for Desk cable reset, 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 45-second vertical demonstration for Desk cable reset, 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 TikTok Content for the AI, SI, and Agentic Era | BuildBotsBetter",
    "SEO_description": "A reviewed 45-second vertical demonstration for Desk cable reset, controlled A/B drafts, complete native production/capstone plans, an evidence rubric, source-linked retrieval objects and hash-checked companion resources.",
    "SEO_keywords": [
      "tiktok-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 TikTok requirements",
      "url": "../../specs/tiktok-content-ai-si-agentic-era.md"
    },
    {
      "title": "TikTok primary platform guidance",
      "url": "https://newsroom.tiktok.com/how-tiktok-recommends-videos-for-you?lang=en"
    },
    {
      "title": "TikTok documented native AI capabilities",
      "url": "https://newsroom.tiktok.com/tiktok-symphony-updates?lang=en"
    }
  ],
  "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 — Understanding TikTok: Platform Realities",
      "### Part 2 — The TikTok Attention Engine",
      "### Part 3 — TikTok SEO & Social Search",
      "### Part 4 — The 3-Second Semantic Problem",
      "### Part 5 — TikTok as Multimodal Data",
      "### Part 6 — Captions as a Machine-Readable Knowledge Layer",
      "### Part 7 — On-Screen Text as Semantic Data",
      "### Part 8 — The Micro-Knowledge Unit",
      "### Part 9 — The TikTok Knowledge Chain",
      "### Part 10 — Multilingual AI Discoverability",
      "### Part 11 — Entity-First TikTok",
      "### Part 12 — Trending Content vs Evergreen Knowledge",
      "### Part 13 — The TikTok Algorithm vs The Knowledge Algorithm",
      "### Part 14 — RAG-Ready Short-Form Content",
      "### Part 15 — Agent-Ready TikTok Content",
      "### Part 16 — TikTok as an AI Answer Engine Source",
      "### Part 17 — Machine-Readable Content Architecture",
      "### Part 18 — The B3 13-Layer Short-Form Content Stack",
      "### Part 19 — Ecosystem Composition: Don't Just Repurpose, Recompose",
      "### Part 20 — Cross-Platform Semantic Consistency Matrix",
      "### Part 21 — The Build Bots Better Content Factory",
      "### Part 22 — The Nightly Show Connection",
      "### Part 23 — The B3 Virality + Knowledge Model",
      "### Part 24 — The AI Training Data Question",
      "### Part 25 — The Synthetic Content Problem & The Human Signal",
      "### Part 26 — Content Provenance & Cryptographic Attribution",
      "### Part 27 — Build Bots Better: Beyond the Algorithm",
      "### Part 28 — The B3 AI Readiness Score (0–100)",
      "### Part 29 — The Empirical Experiment Matrix",
      "### Part 30 — The Future of Short-Form Video: AI as Discovery Layer",
      "### Part 31 — From SEO to Intelligence Optimization"
    ],
    "part_to_exercise": [
      {
        "requirement": "### Part 1 — Understanding TikTok: Platform Realities",
        "exercise": "Map platform realities"
      },
      {
        "requirement": "### Part 2 — The TikTok Attention Engine",
        "exercise": "Win the first second honestly"
      },
      {
        "requirement": "### Part 3 — TikTok SEO & Social Search",
        "exercise": "Research a real search intent"
      },
      {
        "requirement": "### Part 4 — The 3-Second Semantic Problem",
        "exercise": "Solve the three-second semantic problem"
      },
      {
        "requirement": "### Part 5 — TikTok as Multimodal Data",
        "exercise": "Plan all multimodal layers"
      },
      {
        "requirement": "### Part 6 — Captions as a Machine-Readable Knowledge Layer",
        "exercise": "Correct captions against real audio"
      },
      {
        "requirement": "### Part 7 — On-Screen Text as Semantic Data",
        "exercise": "Make overlays readable on a phone"
      },
      {
        "requirement": "### Part 8 — The Micro-Knowledge Unit",
        "exercise": "Write the hook-value-payoff loop"
      },
      {
        "requirement": "### Part 9 — The TikTok Knowledge Chain",
        "exercise": "Build a micro-knowledge chain"
      },
      {
        "requirement": "### Part 10 — Multilingual AI Discoverability",
        "exercise": "Localize and define the entities"
      },
      {
        "requirement": "### Part 11 — Entity-First TikTok",
        "exercise": "Localize and define the entities"
      },
      {
        "requirement": "### Part 12 — Trending Content vs Evergreen Knowledge",
        "exercise": "Choose a durable content portfolio"
      },
      {
        "requirement": "### Part 13 — The TikTok Algorithm vs The Knowledge Algorithm",
        "exercise": "Choose a durable content portfolio"
      },
      {
        "requirement": "### Part 14 — RAG-Ready Short-Form Content",
        "exercise": "Companion knowledge and truthful claims: mechanisms.md, claims.json, knowledge.json, rag.jsonl"
      },
      {
        "requirement": "### Part 15 — Agent-Ready TikTok Content",
        "exercise": "Hash and lint the reviewed files; agent-card.json (three operating systems)"
      },
      {
        "requirement": "### Part 16 — TikTok as an AI Answer Engine Source",
        "exercise": "Run a source-linked retrieval probe; media_pack.py retrieve"
      },
      {
        "requirement": "### Part 17 — Machine-Readable Content Architecture",
        "exercise": "Make the thirteen-layer short-form stack"
      },
      {
        "requirement": "### Part 18 — The B3 13-Layer Short-Form Content Stack",
        "exercise": "Make the thirteen-layer short-form stack"
      },
      {
        "requirement": "### Part 19 — Ecosystem Composition: Don't Just Repurpose, Recompose",
        "exercise": "Recompose across platforms"
      },
      {
        "requirement": "### Part 20 — Cross-Platform Semantic Consistency Matrix",
        "exercise": "Recompose across platforms"
      },
      {
        "requirement": "### Part 21 — The Build Bots Better Content Factory",
        "exercise": "Design the nightly content factory"
      },
      {
        "requirement": "### Part 22 — The Nightly Show Connection",
        "exercise": "Design the nightly content factory"
      },
      {
        "requirement": "### Part 23 — The B3 Virality + Knowledge Model",
        "exercise": "Evaluate virality and knowledge separately"
      },
      {
        "requirement": "### Part 24 — The AI Training Data Question",
        "exercise": "Companion knowledge and truthful claims: mechanisms.md, claims.json, knowledge.json, rag.jsonl"
      },
      {
        "requirement": "### Part 25 — The Synthetic Content Problem & The Human Signal",
        "exercise": "Evaluate virality and knowledge separately"
      },
      {
        "requirement": "### Part 26 — Content Provenance & Cryptographic Attribution",
        "exercise": "Record provenance and a human approval decision; provenance-notes.md"
      },
      {
        "requirement": "### Part 27 — Build Bots Better: Beyond the Algorithm",
        "exercise": "Approve a complete demonstration package"
      },
      {
        "requirement": "### Part 28 — The B3 AI Readiness Score (0–100)",
        "exercise": "Use the readiness calculator; studio.html and rubric.json"
      },
      {
        "requirement": "### Part 29 — The Empirical Experiment Matrix",
        "exercise": "Plan A–F experiments and three versions"
      },
      {
        "requirement": "### Part 30 — The Future of Short-Form Video: AI as Discovery Layer",
        "exercise": "Approve a complete demonstration package"
      },
      {
        "requirement": "### Part 31 — From SEO to Intelligence Optimization",
        "exercise": "Approve a complete demonstration package"
      }
    ],
    "native_exercises": [
      "Map platform realities",
      "Observe the native audience",
      "Win the first second honestly",
      "Write the hook-value-payoff loop",
      "Research a real search intent",
      "Say, show and write the same entity",
      "Solve the three-second semantic problem",
      "Compare the controlled demo pair",
      "Plan all multimodal layers",
      "Correct captions against real audio",
      "Make overlays readable on a phone",
      "Build a micro-knowledge chain",
      "Localize and define the entities",
      "Choose a durable content portfolio",
      "Make the thirteen-layer short-form stack",
      "Recompose across platforms",
      "Design the nightly content factory",
      "Evaluate virality and knowledge separately",
      "Plan A–F experiments and three versions",
      "Approve a complete demonstration 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."
  }
}
