{
  "schema_version": 2,
  "meta": {
    "build_id": "CODEX-XAI-XSI-CONTENT-AI-SI-AGENTIC-ERA",
    "slug": "xai-xsi-content-ai-si-agentic-era",
    "title": "Creating xAI/xSI Content for the AI, SI, and Agentic Era",
    "subtitle": "Make a native short X post and a checked companion knowledge pack.",
    "description": "A reviewed short X post for Rainy commute service update, 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 short X post for Rainy commute service update, 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 real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.",
    "skill_level": "beginner",
    "estimated_time": "4–6 hours including native production; live publication optional",
    "category": "Guided Build",
    "tags": [
      "xai-xsi-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 short X post for Rainy commute service update, 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 xai/xsi content for the ai, si, and agentic era.",
    "after": "A reviewed short X post for Rainy commute service update, 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 short X post for Rainy commute service update, 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.",
    "The ecosystem map makes product and speculative terms distinct.",
    "A native surface map supports the chosen format.",
    "Two dated observations distinguish real signal from teaching examples.",
    "A claim ledger has documented facts and unknown weights.",
    "Fifteen layers support one grounded event topic."
  ],
  "lessons": [
    {
      "lesson_id": "L01",
      "title": "Start with the native creation experience",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.",
      "estimated_time": "10 min",
      "learning_objective": "The studio shows A/B drafts and a zero-initialized rubric; the content-agent plan has twenty operating points and native CTA/AI boundaries.",
      "lessons_before_this": [],
      "lessons_after_this": [
        "L02"
      ]
    },
    {
      "lesson_id": "L02",
      "title": "Distinguish X, xAI and future SI",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "The ecosystem map makes product and speculative terms distinct.",
      "lessons_before_this": [
        "L01"
      ],
      "lessons_after_this": [
        "L03"
      ]
    },
    {
      "lesson_id": "L03",
      "title": "Map native X surfaces",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A native surface map supports the chosen format.",
      "lessons_before_this": [
        "L02"
      ],
      "lessons_after_this": [
        "L04"
      ]
    },
    {
      "lesson_id": "L04",
      "title": "Observe the real-time audience",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Two dated observations distinguish real signal from teaching examples.",
      "lessons_before_this": [
        "L03"
      ],
      "lessons_after_this": [
        "L05"
      ]
    },
    {
      "lesson_id": "L05",
      "title": "Separate relevance from algorithm folklore",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A claim ledger has documented facts and unknown weights.",
      "lessons_before_this": [
        "L04"
      ],
      "lessons_after_this": [
        "L06"
      ]
    },
    {
      "lesson_id": "L06",
      "title": "Build the fifteen-layer keyword stack",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Fifteen layers support one grounded event topic.",
      "lessons_before_this": [
        "L05"
      ],
      "lessons_after_this": [
        "L07"
      ]
    },
    {
      "lesson_id": "L07",
      "title": "Create the eleven-field object",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Eleven fields preserve source and uncertainty.",
      "lessons_before_this": [
        "L06"
      ],
      "lessons_after_this": [
        "L08"
      ]
    },
    {
      "lesson_id": "L08",
      "title": "Compose a semantic short post",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A concise post names the bus route and service alert.",
      "lessons_before_this": [
        "L07"
      ],
      "lessons_after_this": [
        "L09"
      ]
    },
    {
      "lesson_id": "L09",
      "title": "Compare the same-topic root pair",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. This is a controlled same-topic exercise; no publication result is assumed.",
      "estimated_time": "12 min",
      "learning_objective": "A/B contrasts clarity on one controlled topic.",
      "lessons_before_this": [
        "L08"
      ],
      "lessons_after_this": [
        "L10"
      ]
    },
    {
      "lesson_id": "L10",
      "title": "Write the nine-post knowledge chain",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Nine standalone drafts form a source-aware thread.",
      "lessons_before_this": [
        "L09"
      ],
      "lessons_after_this": [
        "L11"
      ]
    },
    {
      "lesson_id": "L11",
      "title": "Turn signal into verified knowledge",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A signal → verification → knowledge workflow includes correction handling.",
      "lessons_before_this": [
        "L10"
      ],
      "lessons_after_this": [
        "L12"
      ]
    },
    {
      "lesson_id": "L12",
      "title": "Align image, text and video",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Visual, speech and caption are consistent and accessible.",
      "lessons_before_this": [
        "L11"
      ],
      "lessons_after_this": [
        "L13"
      ]
    },
    {
      "lesson_id": "L13",
      "title": "Contextualize a meme responsibly",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A cultural asset keeps factual context and rights separate.",
      "lessons_before_this": [
        "L12"
      ],
      "lessons_after_this": [
        "L14"
      ]
    },
    {
      "lesson_id": "L14",
      "title": "Localize the event context",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A localization plan retains event identifiers and time context.",
      "lessons_before_this": [
        "L13"
      ],
      "lessons_after_this": [
        "L15"
      ]
    },
    {
      "lesson_id": "L15",
      "title": "Build entity and identity graphs",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A graph preserves relationships and attribution.",
      "lessons_before_this": [
        "L14"
      ],
      "lessons_after_this": [
        "L16"
      ]
    },
    {
      "lesson_id": "L16",
      "title": "Apply ten answer checks and seven agent questions",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Ten answer checks and seven qualification answers are complete.",
      "lessons_before_this": [
        "L15"
      ],
      "lessons_after_this": [
        "L17"
      ]
    },
    {
      "lesson_id": "L17",
      "title": "Explain retrieval and Grok boundaries",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A mechanism map distinguishes retrieval from permanent learning.",
      "lessons_before_this": [
        "L16"
      ],
      "lessons_after_this": [
        "L18"
      ]
    },
    {
      "lesson_id": "L18",
      "title": "Design the content stack and factory",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "A stack and production pipeline keep the same event evidence.",
      "lessons_before_this": [
        "L17"
      ],
      "lessons_after_this": [
        "L19"
      ]
    },
    {
      "lesson_id": "L19",
      "title": "Recompose and connect nightly learning",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Five native briefs and a create-to-improve flywheel exist.",
      "lessons_before_this": [
        "L18"
      ],
      "lessons_after_this": [
        "L20"
      ]
    },
    {
      "lesson_id": "L20",
      "title": "Plan seven experiments and six versions",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Seven proposals and six additive versions avoid invented results.",
      "lessons_before_this": [
        "L19"
      ],
      "lessons_after_this": [
        "L21"
      ]
    },
    {
      "lesson_id": "L21",
      "title": "Approve the durable information system",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "estimated_time": "12 min",
      "learning_objective": "Seven audit lenses lead to a concrete readiness decision.",
      "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 real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.",
      "user_action": "Download the resource ZIP and extract it into a new private folder. Open studio.html directly in your browser. Compare the two short X post drafts for Rainy commute service update. 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 real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.",
      "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 short X post drafts for Rainy commute service update. 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 short X post drafts for Rainy commute service update. 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 short X post drafts for Rainy commute service update. 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 short X post drafts for Rainy commute service update. 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": "Distinguish X, xAI and future SI",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Map X as a discourse platform, xAI as a company, Grok as an AI product and SI as speculative future intelligence terminology. Draw human → platform → search → AI → knowledge → agent → action; do not present xSI as a verified product.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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": "The ecosystem map makes product and speculative terms distinct.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Distinguish X, xAI and future SI",
        "success_condition": "The ecosystem map makes product and speculative terms distinct.",
        "how_to_verify": "Record the ecosystem map makes product and speculative terms distinct. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "The ecosystem map makes product and speculative terms distinct.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. The ecosystem map makes product and speculative terms distinct.",
        "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 distinguish x, xai and future si?",
          "answer": "The ecosystem map makes product and speculative terms distinct. 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 distinguish X, xAI and future SI. The ecosystem map makes product and speculative terms distinct.",
        "demo": "Map X as a discourse platform, xAI as a company, Grok as an AI product and SI as speculative future intelligence terminology. Draw human → platform → search → AI → knowledge → agent → action; do not present xSI as a verified product.",
        "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 distinguish x, xai and future si",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Map X as a discourse platform, xAI as a company, Grok as an AI product and SI as speculative future intelligence terminology. Draw human → platform → search → AI → knowledge → agent → action; do not present xSI as a verified product. The ecosystem map makes product and speculative terms distinct.",
        "on_screen_text": [
          "Distinguish X, xAI and future SI",
          "The ecosystem map makes product and speculative terms distinct."
        ],
        "screen_recording_instructions": [
          "Map X as a discourse platform, xAI as a company, Grok as an AI product and SI as speculative future intelligence terminology. Draw human → platform → search → AI → knowledge → agent → action; do not present xSI as a verified product.",
          "Inspect the result: The ecosystem map makes product and speculative terms distinct.",
          "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 ecosystem map makes product and speculative terms distinct."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Map X as a discourse platform, xAI as a company, Grok as an AI product and SI as speculative future intelligence terminology. Draw human → platform → search → AI → knowledge → agent → action; do not present xSI as a verified product.",
          "The ecosystem map makes product and speculative terms distinct."
        ]
      },
      "step_id": "L02-S01",
      "lesson_id": "L02"
    },
    {
      "title": "Map native X surfaces",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Inventory post, thread, reply, repost, quote, image, video, GIF, poll, link, profile, community, Spaces, lists, hashtags, mentions, bookmarks and trends. Select a concise service observation for a live-information audience.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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 native surface map supports the chosen format.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Map native X surfaces",
        "success_condition": "A native surface map supports the chosen format.",
        "how_to_verify": "Record a native surface map supports the chosen format. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A native surface map supports the chosen format.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A native surface map supports the chosen 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 map native x surfaces?",
          "answer": "A native surface map supports the chosen 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 map native X surfaces. A native surface map supports the chosen format.",
        "demo": "Inventory post, thread, reply, repost, quote, image, video, GIF, poll, link, profile, community, Spaces, lists, hashtags, mentions, bookmarks and trends. Select a concise service observation for a live-information audience.",
        "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 native x surfaces",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Inventory post, thread, reply, repost, quote, image, video, GIF, poll, link, profile, community, Spaces, lists, hashtags, mentions, bookmarks and trends. Select a concise service observation for a live-information audience. A native surface map supports the chosen format.",
        "on_screen_text": [
          "Map native X surfaces",
          "A native surface map supports the chosen format."
        ],
        "screen_recording_instructions": [
          "Inventory post, thread, reply, repost, quote, image, video, GIF, poll, link, profile, community, Spaces, lists, hashtags, mentions, bookmarks and trends. Select a concise service observation for a live-information audience.",
          "Inspect the result: A native surface map supports the chosen 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": [
          "A native surface map supports the chosen format."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Inventory post, thread, reply, repost, quote, image, video, GIF, poll, link, profile, community, Spaces, lists, hashtags, mentions, bookmarks and trends. Select a concise service observation for a live-information audience.",
          "A native surface map supports the chosen format."
        ]
      },
      "step_id": "L03-S01",
      "lesson_id": "L03"
    },
    {
      "title": "Observe the real-time audience",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Review two public transport-status discussions and source links. Record date, source quality, corrections and tone; do not copy a live event into this fictional fixture.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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 dated observations distinguish real signal from teaching examples.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Observe the real-time audience",
        "success_condition": "Two dated observations distinguish real signal from teaching examples.",
        "how_to_verify": "Record two dated observations distinguish real signal from teaching examples. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Two dated observations distinguish real signal from teaching examples.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Two dated observations distinguish real signal from teaching examples.",
        "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 real-time audience?",
          "answer": "Two dated observations distinguish real signal from teaching examples. 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 real-time audience. Two dated observations distinguish real signal from teaching examples.",
        "demo": "Review two public transport-status discussions and source links. Record date, source quality, corrections and tone; do not copy a live event into this fictional 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 observe the real-time audience",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Review two public transport-status discussions and source links. Record date, source quality, corrections and tone; do not copy a live event into this fictional fixture. Two dated observations distinguish real signal from teaching examples.",
        "on_screen_text": [
          "Observe the real-time audience",
          "Two dated observations distinguish real signal from teaching examples."
        ],
        "screen_recording_instructions": [
          "Review two public transport-status discussions and source links. Record date, source quality, corrections and tone; do not copy a live event into this fictional fixture.",
          "Inspect the result: Two dated observations distinguish real signal from teaching examples.",
          "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 dated observations distinguish real signal from teaching examples."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Review two public transport-status discussions and source links. Record date, source quality, corrections and tone; do not copy a live event into this fictional fixture.",
          "Two dated observations distinguish real signal from teaching examples."
        ]
      },
      "step_id": "L04-S01",
      "lesson_id": "L04"
    },
    {
      "title": "Separate relevance from algorithm folklore",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Explain relevance, recency, network and interaction as concepts. Date any public ranking-code reference; historical code is not a current complete algorithm. No fabricated engagement weights or guaranteed visibility.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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 claim ledger has documented facts and unknown weights.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Separate relevance from algorithm folklore",
        "success_condition": "A claim ledger has documented facts and unknown weights.",
        "how_to_verify": "Record a claim ledger has documented facts and unknown weights. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A claim ledger has documented facts and unknown weights.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A claim ledger has documented facts and unknown weights.",
        "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 separate relevance from algorithm folklore?",
          "answer": "A claim ledger has documented facts and unknown weights. 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 separate relevance from algorithm folklore. A claim ledger has documented facts and unknown weights.",
        "demo": "Explain relevance, recency, network and interaction as concepts. Date any public ranking-code reference; historical code is not a current complete algorithm. No fabricated engagement weights or guaranteed visibility.",
        "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 separate relevance from algorithm folklore",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Explain relevance, recency, network and interaction as concepts. Date any public ranking-code reference; historical code is not a current complete algorithm. No fabricated engagement weights or guaranteed visibility. A claim ledger has documented facts and unknown weights.",
        "on_screen_text": [
          "Separate relevance from algorithm folklore",
          "A claim ledger has documented facts and unknown weights."
        ],
        "screen_recording_instructions": [
          "Explain relevance, recency, network and interaction as concepts. Date any public ranking-code reference; historical code is not a current complete algorithm. No fabricated engagement weights or guaranteed visibility.",
          "Inspect the result: A claim ledger has documented facts and unknown weights.",
          "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 claim ledger has documented facts and unknown weights."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Explain relevance, recency, network and interaction as concepts. Date any public ranking-code reference; historical code is not a current complete algorithm. No fabricated engagement weights or guaranteed visibility.",
          "A claim ledger has documented facts and unknown weights."
        ]
      },
      "step_id": "L05-S01",
      "lesson_id": "L05"
    },
    {
      "title": "Build the fifteen-layer keyword stack",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Map name, username, bio, post, thread, replies, tags, image, video, speech, overlays, links, destination, community and references. Keep route name and date consistent across actual event variants.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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": "Fifteen layers support one grounded event topic.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Build the fifteen-layer keyword stack",
        "success_condition": "Fifteen layers support one grounded event topic.",
        "how_to_verify": "Record fifteen layers support one grounded event topic. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Fifteen layers support one grounded event topic.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Fifteen layers support one grounded event topic.",
        "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 the fifteen-layer keyword stack?",
          "answer": "Fifteen layers support one grounded event topic. 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 the fifteen-layer keyword stack. Fifteen layers support one grounded event topic.",
        "demo": "Map name, username, bio, post, thread, replies, tags, image, video, speech, overlays, links, destination, community and references. Keep route name and date consistent across actual event variants.",
        "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 the fifteen-layer keyword stack",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Map name, username, bio, post, thread, replies, tags, image, video, speech, overlays, links, destination, community and references. Keep route name and date consistent across actual event variants. Fifteen layers support one grounded event topic.",
        "on_screen_text": [
          "Build the fifteen-layer keyword stack",
          "Fifteen layers support one grounded event topic."
        ],
        "screen_recording_instructions": [
          "Map name, username, bio, post, thread, replies, tags, image, video, speech, overlays, links, destination, community and references. Keep route name and date consistent across actual event variants.",
          "Inspect the result: Fifteen layers support one grounded event topic.",
          "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": [
          "Fifteen layers support one grounded event topic."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Map name, username, bio, post, thread, replies, tags, image, video, speech, overlays, links, destination, community and references. Keep route name and date consistent across actual event variants.",
          "Fifteen layers support one grounded event topic."
        ]
      },
      "step_id": "L06-S01",
      "lesson_id": "L06"
    },
    {
      "title": "Create the eleven-field object",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Write topic, question, answer, context, evidence, example, entity, source, date, related topics and next action. Distinguish a rider observation from an official incident report.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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": "Eleven fields preserve source and uncertainty.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Create the eleven-field object",
        "success_condition": "Eleven fields preserve source and uncertainty.",
        "how_to_verify": "Record eleven fields preserve source and uncertainty. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Eleven fields preserve source and uncertainty.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Eleven fields preserve source and uncertainty.",
        "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 create the eleven-field object?",
          "answer": "Eleven fields preserve source and uncertainty. 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 create the eleven-field object. Eleven fields preserve source and uncertainty.",
        "demo": "Write topic, question, answer, context, evidence, example, entity, source, date, related topics and next action. Distinguish a rider observation from an official incident report.",
        "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 create the eleven-field object",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Write topic, question, answer, context, evidence, example, entity, source, date, related topics and next action. Distinguish a rider observation from an official incident report. Eleven fields preserve source and uncertainty.",
        "on_screen_text": [
          "Create the eleven-field object",
          "Eleven fields preserve source and uncertainty."
        ],
        "screen_recording_instructions": [
          "Write topic, question, answer, context, evidence, example, entity, source, date, related topics and next action. Distinguish a rider observation from an official incident report.",
          "Inspect the result: Eleven fields preserve source and uncertainty.",
          "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": [
          "Eleven fields preserve source and uncertainty."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Write topic, question, answer, context, evidence, example, entity, source, date, related topics and next action. Distinguish a rider observation from an official incident report.",
          "Eleven fields preserve source and uncertainty."
        ]
      },
      "step_id": "L07-S01",
      "lesson_id": "L07"
    },
    {
      "title": "Compose a semantic short post",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Use entity + topic + problem + insight + context + value within the practice 280-character root. Keep a helpful human question, not an unverified claim that every route is down.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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 concise post names the bus route and service alert.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Compose a semantic short post",
        "success_condition": "A concise post names the bus route and service alert.",
        "how_to_verify": "Record a concise post names the bus route and service alert. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A concise post names the bus route and service alert.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A concise post names the bus route and service alert.",
        "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 compose a semantic short post?",
          "answer": "A concise post names the bus route and service alert. 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 compose a semantic short post. A concise post names the bus route and service alert.",
        "demo": "Use entity + topic + problem + insight + context + value within the practice 280-character root. Keep a helpful human question, not an unverified claim that every route is down.",
        "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 compose a semantic short post",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Use entity + topic + problem + insight + context + value within the practice 280-character root. Keep a helpful human question, not an unverified claim that every route is down. A concise post names the bus route and service alert.",
        "on_screen_text": [
          "Compose a semantic short post",
          "A concise post names the bus route and service alert."
        ],
        "screen_recording_instructions": [
          "Use entity + topic + problem + insight + context + value within the practice 280-character root. Keep a helpful human question, not an unverified claim that every route is down.",
          "Inspect the result: A concise post names the bus route and service alert.",
          "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 concise post names the bus route and service alert."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Use entity + topic + problem + insight + context + value within the practice 280-character root. Keep a helpful human question, not an unverified claim that every route is down.",
          "A concise post names the bus route and service alert."
        ]
      },
      "step_id": "L08-S01",
      "lesson_id": "L08"
    },
    {
      "title": "Compare the same-topic root pair",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. This is a controlled same-topic exercise; no publication result is assumed.",
      "user_action": "Use studio.html to compare A/B for the same rainy commute observation. Keep the public-update format and audience fixed; add source discipline without changing the event.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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": "A/B contrasts clarity on one controlled topic.",
      "resources": [
        "studio.html",
        "versions.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Compare the same-topic root pair",
        "success_condition": "A/B contrasts clarity on one controlled topic.",
        "how_to_verify": "Record a/B contrasts clarity on one controlled topic. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A/B contrasts clarity on one controlled topic.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A/B contrasts clarity on one controlled topic.",
        "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 same-topic root pair?",
          "answer": "A/B contrasts clarity on one controlled topic. 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 same-topic root pair. A/B contrasts clarity on one controlled topic.",
        "demo": "Use studio.html to compare A/B for the same rainy commute observation. Keep the public-update format and audience fixed; add source discipline without changing the event.",
        "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 same-topic root pair",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Use studio.html to compare A/B for the same rainy commute observation. Keep the public-update format and audience fixed; add source discipline without changing the event. A/B contrasts clarity on one controlled topic.",
        "on_screen_text": [
          "Compare the same-topic root pair",
          "A/B contrasts clarity on one controlled topic."
        ],
        "screen_recording_instructions": [
          "Use studio.html to compare A/B for the same rainy commute observation. Keep the public-update format and audience fixed; add source discipline without changing the event.",
          "Inspect the result: A/B contrasts clarity on one controlled topic.",
          "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/B contrasts clarity on one controlled topic."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Use studio.html to compare A/B for the same rainy commute observation. Keep the public-update format and audience fixed; add source discipline without changing the event.",
          "A/B contrasts clarity on one controlled topic."
        ]
      },
      "step_id": "L09-S01",
      "lesson_id": "L09"
    },
    {
      "title": "Write the nine-post knowledge chain",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Draft hook, context, mechanism, example, evidence, counterpoint, practical action, synthesis and next step. Each practice post must fit 280 characters and remain meaningful alone.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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": "Nine standalone drafts form a source-aware thread.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Write the nine-post knowledge chain",
        "success_condition": "Nine standalone drafts form a source-aware thread.",
        "how_to_verify": "Record nine standalone drafts form a source-aware thread. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Nine standalone drafts form a source-aware thread.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Nine standalone drafts form a source-aware thread.",
        "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 nine-post knowledge chain?",
          "answer": "Nine standalone drafts form a source-aware thread. 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 nine-post knowledge chain. Nine standalone drafts form a source-aware thread.",
        "demo": "Draft hook, context, mechanism, example, evidence, counterpoint, practical action, synthesis and next step. Each practice post must fit 280 characters and remain meaningful 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 write the nine-post knowledge chain",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Draft hook, context, mechanism, example, evidence, counterpoint, practical action, synthesis and next step. Each practice post must fit 280 characters and remain meaningful alone. Nine standalone drafts form a source-aware thread.",
        "on_screen_text": [
          "Write the nine-post knowledge chain",
          "Nine standalone drafts form a source-aware thread."
        ],
        "screen_recording_instructions": [
          "Draft hook, context, mechanism, example, evidence, counterpoint, practical action, synthesis and next step. Each practice post must fit 280 characters and remain meaningful alone.",
          "Inspect the result: Nine standalone drafts form a source-aware thread.",
          "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": [
          "Nine standalone drafts form a source-aware thread."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Draft hook, context, mechanism, example, evidence, counterpoint, practical action, synthesis and next step. Each practice post must fit 280 characters and remain meaningful alone.",
          "Nine standalone drafts form a source-aware thread."
        ]
      },
      "step_id": "L10-S01",
      "lesson_id": "L10"
    },
    {
      "title": "Turn signal into verified knowledge",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Prepare a verification ledger with observed time, operator source, source update time, what changed and unresolved facts. Add a correction template and mark stale updates visibly.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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 signal → verification → knowledge workflow includes correction handling.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Turn signal into verified knowledge",
        "success_condition": "A signal → verification → knowledge workflow includes correction handling.",
        "how_to_verify": "Record a signal → verification → knowledge workflow includes correction handling. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A signal → verification → knowledge workflow includes correction handling.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A signal → verification → knowledge workflow includes correction handling.",
        "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 turn signal into verified knowledge?",
          "answer": "A signal → verification → knowledge workflow includes correction handling. 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 turn signal into verified knowledge. A signal → verification → knowledge workflow includes correction handling.",
        "demo": "Prepare a verification ledger with observed time, operator source, source update time, what changed and unresolved facts. Add a correction template and mark stale updates visibly.",
        "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 turn signal into verified knowledge",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Prepare a verification ledger with observed time, operator source, source update time, what changed and unresolved facts. Add a correction template and mark stale updates visibly. A signal → verification → knowledge workflow includes correction handling.",
        "on_screen_text": [
          "Turn signal into verified knowledge",
          "A signal → verification → knowledge workflow includes correction handling."
        ],
        "screen_recording_instructions": [
          "Prepare a verification ledger with observed time, operator source, source update time, what changed and unresolved facts. Add a correction template and mark stale updates visibly.",
          "Inspect the result: A signal → verification → knowledge workflow includes correction handling.",
          "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 signal → verification → knowledge workflow includes correction handling."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Prepare a verification ledger with observed time, operator source, source update time, what changed and unresolved facts. Add a correction template and mark stale updates visibly.",
          "A signal → verification → knowledge workflow includes correction handling."
        ]
      },
      "step_id": "L11-S01",
      "lesson_id": "L11"
    },
    {
      "title": "Align image, text and video",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Storyboard a route-map image and a short queue clip with permissions. Keep route/date in caption and alt text; do not make the image carry a claim absent from text.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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": "Visual, speech and caption are consistent and accessible.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Align image, text and video",
        "success_condition": "Visual, speech and caption are consistent and accessible.",
        "how_to_verify": "Record visual, speech and caption are consistent and accessible. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Visual, speech and caption are consistent and accessible.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Visual, speech and caption are consistent and accessible.",
        "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 align image, text and video?",
          "answer": "Visual, speech and caption are consistent and accessible. 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 align image, text and video. Visual, speech and caption are consistent and accessible.",
        "demo": "Storyboard a route-map image and a short queue clip with permissions. Keep route/date in caption and alt text; do not make the image carry a claim absent from 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 align image, text and video",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Storyboard a route-map image and a short queue clip with permissions. Keep route/date in caption and alt text; do not make the image carry a claim absent from text. Visual, speech and caption are consistent and accessible.",
        "on_screen_text": [
          "Align image, text and video",
          "Visual, speech and caption are consistent and accessible."
        ],
        "screen_recording_instructions": [
          "Storyboard a route-map image and a short queue clip with permissions. Keep route/date in caption and alt text; do not make the image carry a claim absent from text.",
          "Inspect the result: Visual, speech and caption are consistent and accessible.",
          "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": [
          "Visual, speech and caption are consistent and accessible."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Storyboard a route-map image and a short queue clip with permissions. Keep route/date in caption and alt text; do not make the image carry a claim absent from text.",
          "Visual, speech and caption are consistent and accessible."
        ]
      },
      "step_id": "L12-S01",
      "lesson_id": "L12"
    },
    {
      "title": "Contextualize a meme responsibly",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Draft an optional commute joke plus a factual context line. Ensure humor does not become a false outage report; avoid misattributed or unlicensed images.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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 cultural asset keeps factual context and rights separate.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Contextualize a meme responsibly",
        "success_condition": "A cultural asset keeps factual context and rights separate.",
        "how_to_verify": "Record a cultural asset keeps factual context and rights separate. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A cultural asset keeps factual context and rights separate.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A cultural asset keeps factual context and rights separate.",
        "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 contextualize a meme responsibly?",
          "answer": "A cultural asset keeps factual context and rights separate. 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 contextualize a meme responsibly. A cultural asset keeps factual context and rights separate.",
        "demo": "Draft an optional commute joke plus a factual context line. Ensure humor does not become a false outage report; avoid misattributed or unlicensed images.",
        "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 contextualize a meme responsibly",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Draft an optional commute joke plus a factual context line. Ensure humor does not become a false outage report; avoid misattributed or unlicensed images. A cultural asset keeps factual context and rights separate.",
        "on_screen_text": [
          "Contextualize a meme responsibly",
          "A cultural asset keeps factual context and rights separate."
        ],
        "screen_recording_instructions": [
          "Draft an optional commute joke plus a factual context line. Ensure humor does not become a false outage report; avoid misattributed or unlicensed images.",
          "Inspect the result: A cultural asset keeps factual context and rights separate.",
          "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 cultural asset keeps factual context and rights separate."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Draft an optional commute joke plus a factual context line. Ensure humor does not become a false outage report; avoid misattributed or unlicensed images.",
          "A cultural asset keeps factual context and rights separate."
        ]
      },
      "step_id": "L13-S01",
      "lesson_id": "L13"
    },
    {
      "title": "Localize the event context",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Translate a short cue or prepare a fluent review brief. Preserve route IDs, times, time zone and official source; do not claim translation forces embeddings into identical coordinates.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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 localization plan retains event identifiers and time context.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Localize the event context",
        "success_condition": "A localization plan retains event identifiers and time context.",
        "how_to_verify": "Record a localization plan retains event identifiers and time context. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A localization plan retains event identifiers and time context.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A localization plan retains event identifiers and time context.",
        "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 the event context?",
          "answer": "A localization plan retains event identifiers and time context. 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 the event context. A localization plan retains event identifiers and time context.",
        "demo": "Translate a short cue or prepare a fluent review brief. Preserve route IDs, times, time zone and official source; do not claim translation forces embeddings into identical coordinates.",
        "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 the event context",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Translate a short cue or prepare a fluent review brief. Preserve route IDs, times, time zone and official source; do not claim translation forces embeddings into identical coordinates. A localization plan retains event identifiers and time context.",
        "on_screen_text": [
          "Localize the event context",
          "A localization plan retains event identifiers and time context."
        ],
        "screen_recording_instructions": [
          "Translate a short cue or prepare a fluent review brief. Preserve route IDs, times, time zone and official source; do not claim translation forces embeddings into identical coordinates.",
          "Inspect the result: A localization plan retains event identifiers and time context.",
          "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 localization plan retains event identifiers and time context."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Translate a short cue or prepare a fluent review brief. Preserve route IDs, times, time zone and official source; do not claim translation forces embeddings into identical coordinates.",
          "A localization plan retains event identifiers and time context."
        ]
      },
      "step_id": "L14-S01",
      "lesson_id": "L14"
    },
    {
      "title": "Build entity and identity graphs",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Connect creator → local reporting domain → source ledger → route → status → dated evidence. Distinguish creator authority from the official transport operator.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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 graph preserves relationships and attribution.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Build entity and identity graphs",
        "success_condition": "A graph preserves relationships and attribution.",
        "how_to_verify": "Record a graph preserves relationships and attribution. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A graph preserves relationships and attribution.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A graph preserves relationships and attribution.",
        "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 entity and identity graphs?",
          "answer": "A graph preserves relationships and attribution. 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 entity and identity graphs. A graph preserves relationships and attribution.",
        "demo": "Connect creator → local reporting domain → source ledger → route → status → dated evidence. Distinguish creator authority from the official transport operator.",
        "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 entity and identity graphs",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Connect creator → local reporting domain → source ledger → route → status → dated evidence. Distinguish creator authority from the official transport operator. A graph preserves relationships and attribution.",
        "on_screen_text": [
          "Build entity and identity graphs",
          "A graph preserves relationships and attribution."
        ],
        "screen_recording_instructions": [
          "Connect creator → local reporting domain → source ledger → route → status → dated evidence. Distinguish creator authority from the official transport operator.",
          "Inspect the result: A graph preserves relationships and attribution.",
          "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 graph preserves relationships and attribution."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Connect creator → local reporting domain → source ledger → route → status → dated evidence. Distinguish creator authority from the official transport operator.",
          "A graph preserves relationships and attribution."
        ]
      },
      "step_id": "L15-S01",
      "lesson_id": "L15"
    },
    {
      "title": "Apply ten answer checks and seven agent questions",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Check topic, entities, answer, context, sources, recency, evidence, connections, retrieval and summary. Answer what, who, when, why, relationships, trust and next action for the companion card.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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": "Ten answer checks and seven qualification answers are complete.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Apply ten answer checks and seven agent questions",
        "success_condition": "Ten answer checks and seven qualification answers are complete.",
        "how_to_verify": "Record ten answer checks and seven qualification answers are complete. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Ten answer checks and seven qualification answers are complete.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Ten answer checks and seven qualification answers are complete.",
        "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 apply ten answer checks and seven agent questions?",
          "answer": "Ten answer checks and seven qualification answers are complete. 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 apply ten answer checks and seven agent questions. Ten answer checks and seven qualification answers are complete.",
        "demo": "Check topic, entities, answer, context, sources, recency, evidence, connections, retrieval and summary. Answer what, who, when, why, relationships, trust and next action for the companion card.",
        "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 apply ten answer checks and seven agent questions",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Check topic, entities, answer, context, sources, recency, evidence, connections, retrieval and summary. Answer what, who, when, why, relationships, trust and next action for the companion card. Ten answer checks and seven qualification answers are complete.",
        "on_screen_text": [
          "Apply ten answer checks and seven agent questions",
          "Ten answer checks and seven qualification answers are complete."
        ],
        "screen_recording_instructions": [
          "Check topic, entities, answer, context, sources, recency, evidence, connections, retrieval and summary. Answer what, who, when, why, relationships, trust and next action for the companion card.",
          "Inspect the result: Ten answer checks and seven qualification answers are complete.",
          "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": [
          "Ten answer checks and seven qualification answers are complete."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Check topic, entities, answer, context, sources, recency, evidence, connections, retrieval and summary. Answer what, who, when, why, relationships, trust and next action for the companion card.",
          "Ten answer checks and seven qualification answers are complete."
        ]
      },
      "step_id": "L16-S01",
      "lesson_id": "L16"
    },
    {
      "title": "Explain retrieval and Grok boundaries",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Draw ingestion → chunking → embedding → retrieval → context → answer as a possible authorized pipeline. Separate X search, Grok features, API access, training, fine-tuning and context; no posting-to-weights promise.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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 mechanism map distinguishes retrieval from permanent learning.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Explain retrieval and Grok boundaries",
        "success_condition": "A mechanism map distinguishes retrieval from permanent learning.",
        "how_to_verify": "Record a mechanism map distinguishes retrieval from permanent learning. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A mechanism map distinguishes retrieval from permanent learning.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A mechanism map distinguishes retrieval from permanent learning.",
        "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 explain retrieval and grok boundaries?",
          "answer": "A mechanism map distinguishes retrieval from permanent learning. 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 explain retrieval and Grok boundaries. A mechanism map distinguishes retrieval from permanent learning.",
        "demo": "Draw ingestion → chunking → embedding → retrieval → context → answer as a possible authorized pipeline. Separate X search, Grok features, API access, training, fine-tuning and context; no posting-to-weights 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 explain retrieval and grok boundaries",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Draw ingestion → chunking → embedding → retrieval → context → answer as a possible authorized pipeline. Separate X search, Grok features, API access, training, fine-tuning and context; no posting-to-weights promise. A mechanism map distinguishes retrieval from permanent learning.",
        "on_screen_text": [
          "Explain retrieval and Grok boundaries",
          "A mechanism map distinguishes retrieval from permanent learning."
        ],
        "screen_recording_instructions": [
          "Draw ingestion → chunking → embedding → retrieval → context → answer as a possible authorized pipeline. Separate X search, Grok features, API access, training, fine-tuning and context; no posting-to-weights promise.",
          "Inspect the result: A mechanism map distinguishes retrieval from permanent learning.",
          "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 mechanism map distinguishes retrieval from permanent learning."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Draw ingestion → chunking → embedding → retrieval → context → answer as a possible authorized pipeline. Separate X search, Grok features, API access, training, fine-tuning and context; no posting-to-weights promise.",
          "A mechanism map distinguishes retrieval from permanent learning."
        ]
      },
      "step_id": "L17-S01",
      "lesson_id": "L17"
    },
    {
      "title": "Design the content stack and factory",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Outline ten content layers from human value to semantic, retrieval, action and speculative intelligence. Map source → object → draft → native adaptation → review → publication decision → measurement → graph → improvement.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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 stack and production pipeline keep the same event evidence.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Design the content stack and factory",
        "success_condition": "A stack and production pipeline keep the same event evidence.",
        "how_to_verify": "Record a stack and production pipeline keep the same event evidence. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "A stack and production pipeline keep the same event evidence.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. A stack and production pipeline keep the same event 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 content stack and factory?",
          "answer": "A stack and production pipeline keep the same event 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 content stack and factory. A stack and production pipeline keep the same event evidence.",
        "demo": "Outline ten content layers from human value to semantic, retrieval, action and speculative intelligence. Map source → object → draft → native adaptation → review → publication decision → measurement → graph → improvement.",
        "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 content stack and factory",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Outline ten content layers from human value to semantic, retrieval, action and speculative intelligence. Map source → object → draft → native adaptation → review → publication decision → measurement → graph → improvement. A stack and production pipeline keep the same event evidence.",
        "on_screen_text": [
          "Design the content stack and factory",
          "A stack and production pipeline keep the same event evidence."
        ],
        "screen_recording_instructions": [
          "Outline ten content layers from human value to semantic, retrieval, action and speculative intelligence. Map source → object → draft → native adaptation → review → publication decision → measurement → graph → improvement.",
          "Inspect the result: A stack and production pipeline keep the same event 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 stack and production pipeline keep the same event evidence."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Outline ten content layers from human value to semantic, retrieval, action and speculative intelligence. Map source → object → draft → native adaptation → review → publication decision → measurement → graph → improvement.",
          "A stack and production pipeline keep the same event evidence."
        ]
      },
      "step_id": "L18-S01",
      "lesson_id": "L18"
    },
    {
      "title": "Recompose and connect nightly learning",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Adapt the observation to a community Facebook question, Threads dialogue, LinkedIn operations case, Reddit troubleshooting discussion and canonical reference. Explain how a nightly B3 segment could add verified corrections, not repeat rumors.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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 native briefs and a create-to-improve flywheel exist.",
      "resources": [
        "native-production.md",
        "native.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Recompose and connect nightly learning",
        "success_condition": "Five native briefs and a create-to-improve flywheel exist.",
        "how_to_verify": "Record five native briefs and a create-to-improve flywheel exist. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Five native briefs and a create-to-improve flywheel exist.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Five native briefs and a create-to-improve flywheel exist.",
        "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 and connect nightly learning?",
          "answer": "Five native briefs and a create-to-improve flywheel exist. 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 and connect nightly learning. Five native briefs and a create-to-improve flywheel exist.",
        "demo": "Adapt the observation to a community Facebook question, Threads dialogue, LinkedIn operations case, Reddit troubleshooting discussion and canonical reference. Explain how a nightly B3 segment could add verified corrections, not repeat rumors.",
        "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 and connect nightly learning",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Adapt the observation to a community Facebook question, Threads dialogue, LinkedIn operations case, Reddit troubleshooting discussion and canonical reference. Explain how a nightly B3 segment could add verified corrections, not repeat rumors. Five native briefs and a create-to-improve flywheel exist.",
        "on_screen_text": [
          "Recompose and connect nightly learning",
          "Five native briefs and a create-to-improve flywheel exist."
        ],
        "screen_recording_instructions": [
          "Adapt the observation to a community Facebook question, Threads dialogue, LinkedIn operations case, Reddit troubleshooting discussion and canonical reference. Explain how a nightly B3 segment could add verified corrections, not repeat rumors.",
          "Inspect the result: Five native briefs and a create-to-improve flywheel exist.",
          "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 native briefs and a create-to-improve flywheel exist."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Adapt the observation to a community Facebook question, Threads dialogue, LinkedIn operations case, Reddit troubleshooting discussion and canonical reference. Explain how a nightly B3 segment could add verified corrections, not repeat rumors.",
          "Five native briefs and a create-to-improve flywheel exist."
        ]
      },
      "step_id": "L19-S01",
      "lesson_id": "L19"
    },
    {
      "title": "Plan seven experiments and six versions",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Test semantic text, thread density, media, localization, reuse, citation probing and local execution separately. Draft six maturity versions of the same event topic and score attention against machine utility as separate axes.",
      "explanation": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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": "Seven proposals and six additive versions avoid invented results.",
      "resources": [
        "experiments.md",
        "metrics.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Plan seven experiments and six versions",
        "success_condition": "Seven proposals and six additive versions avoid invented results.",
        "how_to_verify": "Record seven proposals and six additive versions avoid invented results. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Seven proposals and six additive versions avoid invented results.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Seven proposals and six additive versions avoid invented results.",
        "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 seven experiments and six versions?",
          "answer": "Seven proposals and six additive versions avoid invented results. 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 seven experiments and six versions. Seven proposals and six additive versions avoid invented results.",
        "demo": "Test semantic text, thread density, media, localization, reuse, citation probing and local execution separately. Draft six maturity versions of the same event topic and score attention against machine utility as separate axes.",
        "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 seven experiments and six versions",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Test semantic text, thread density, media, localization, reuse, citation probing and local execution separately. Draft six maturity versions of the same event topic and score attention against machine utility as separate axes. Seven proposals and six additive versions avoid invented results.",
        "on_screen_text": [
          "Plan seven experiments and six versions",
          "Seven proposals and six additive versions avoid invented results."
        ],
        "screen_recording_instructions": [
          "Test semantic text, thread density, media, localization, reuse, citation probing and local execution separately. Draft six maturity versions of the same event topic and score attention against machine utility as separate axes.",
          "Inspect the result: Seven proposals and six additive versions avoid invented results.",
          "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": [
          "Seven proposals and six additive versions avoid invented results."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Test semantic text, thread density, media, localization, reuse, citation probing and local execution separately. Draft six maturity versions of the same event topic and score attention against machine utility as separate axes.",
          "Seven proposals and six additive versions avoid invented results."
        ]
      },
      "step_id": "L20-S01",
      "lesson_id": "L20"
    },
    {
      "title": "Approve the durable information system",
      "purpose": "A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. Keep the saved artifact and a specific observation together.",
      "user_action": "Review human, X, search, AI, retrieval, agent and future lenses. Keep source provenance, measured facts, date and correction path ahead of speed. State which features exist, which are emerging and which future SI ideas are speculation. 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 real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims. 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": "Seven audit lenses lead to a concrete readiness decision.",
      "resources": [
        "native-production.md",
        "native.json",
        "AGENT_OPERATING_MANUAL.md",
        "agent-training.json"
      ],
      "checkpoint": {
        "what_is_being_checked": "Approve the durable information system",
        "success_condition": "Seven audit lenses lead to a concrete readiness decision.",
        "how_to_verify": "Record seven audit lenses lead to a concrete readiness decision. Include the actual result or a specific observation; do not paste credentials.",
        "criteria": [
          "Seven audit lenses lead to a concrete readiness decision.",
          "I can repeat this action from the saved input."
        ],
        "tokens": [],
        "user_visible_success_message": "Evidence saved. Seven audit lenses lead to a concrete readiness 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": "What is a useful result for approve the durable information system?",
          "answer": "Seven audit lenses lead to a concrete readiness decision. 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 the durable information system. Seven audit lenses lead to a concrete readiness decision.",
        "demo": "Review human, X, search, AI, retrieval, agent and future lenses. Keep source provenance, measured facts, date and correction path ahead of speed. State which features exist, which are emerging and which future SI ideas are speculation. 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 the durable information system",
        "duration_target": "45–75 seconds",
        "visual_type": "step walkthrough with optional browser narration; no rendered video is claimed",
        "narration_script": "Review human, X, search, AI, retrieval, agent and future lenses. Keep source provenance, measured facts, date and correction path ahead of speed. State which features exist, which are emerging and which future SI ideas are speculation. 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. Seven audit lenses lead to a concrete readiness decision.",
        "on_screen_text": [
          "Approve the durable information system",
          "Seven audit lenses lead to a concrete readiness decision."
        ],
        "screen_recording_instructions": [
          "Review human, X, search, AI, retrieval, agent and future lenses. Keep source provenance, measured facts, date and correction path ahead of speed. State which features exist, which are emerging and which future SI ideas are speculation. 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: Seven audit lenses lead to a concrete readiness 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": [
          "Seven audit lenses lead to a concrete readiness decision."
        ],
        "bot_position": "right sidebar",
        "bot_expression": "calm",
        "transition": "Continue after checkpoint",
        "captions": [
          "Review human, X, search, AI, retrieval, agent and future lenses. Keep source provenance, measured facts, date and correction path ahead of speed. State which features exist, which are emerging and which future SI ideas are speculation. 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.",
          "Seven audit lenses lead to a concrete readiness decision."
        ]
      },
      "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 makes a bus route service alert useful without overstating the evidence?\"\npython media_pack.py retrieve --query \"quasar waffle weather\"",
        "macos": "python3 media_pack.py retrieve --query \"What makes a bus route service alert useful without overstating the evidence?\"\npython3 media_pack.py retrieve --query \"quasar waffle weather\"",
        "linux": "python3 media_pack.py retrieve --query \"What makes a bus route service alert useful without overstating the evidence?\"\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>xAI/xSI draft studio</h1><p>A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.</p><p>One topic, one format, two versions. Keep the audience and promise fixed. These drafts are synthetic practice examples.</p>\n<label>Topic <input id=\"topic\"></label><label>Native format <input id=\"format\"></label>\n<div class=\"pair\"><section><h2>A · Human baseline</h2><textarea id=\"a\"></textarea><small id=\"ac\"></small></section><section><h2>B · Human and machine clarity</h2><textarea id=\"b\"></textarea><small id=\"bc\"></small></section></div>\n<p id=\"difference\"></p><button id=\"export\">Download versions.json</button><p id=\"status\" role=\"status\"></p>\n<section><h2>Readiness self-assessment</h2><p>Rate each dimension from 0 to 10 using your saved evidence. The result measures this rubric, not the chance of virality or AI citation. 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\": \"Rainy commute service update\", \"format\": \"short X post\", \"text\": \"Rain again and the commute is chaos. The buses are all a mess today. Anyone else stuck?\"}, \"B\": {\"topic\": \"Rainy commute service update\", \"format\": \"short X post\", \"text\": \"Bus route update, teaching draft: one rider reported a late arrival during rain. Check the operator\\u2019s dated service alert before assuming a network outage. Which route and observation time are you checking?\"}}, dimensions=[\"Human value\", \"Attention\", \"Semantic clarity\", \"Entity clarity\", \"Search relevance\", \"Multimodal completeness\", \"Evidence provenance\", \"Retrieval readiness\", \"Agent readiness\", \"Future 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=[\"bus route\", \"service alert\"];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\": \"Rainy commute service update\",\n    \"format\": \"short X post\",\n    \"text\": \"Rain again and the commute is chaos. The buses are all a mess today. Anyone else stuck?\"\n  },\n  \"B\": {\n    \"topic\": \"Rainy commute service update\",\n    \"format\": \"short X post\",\n    \"text\": \"Bus route update, teaching draft: one rider reported a late arrival during rain. Check the operator’s dated service alert before assuming a network outage. Which route and observation time are you checking?\"\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\": \"xai-xsi\",\n  \"topic\": \"Rainy commute service update\",\n  \"question\": \"What makes a bus route service alert useful without overstating the evidence?\",\n  \"answer\": \"A bus route service alert should identify the route, observation time, official status source and uncertainty. A rider report is an observation, not proof of a system-wide outage.\",\n  \"context\": \"A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.\",\n  \"example\": \"Synthetic teaching example; replace with a checked observation before public use.\",\n  \"entities\": [\n    \"bus route\",\n    \"service alert\"\n  ],\n  \"sources\": [\n    \"https://help.x.com/en/using-x/about-x-threads\"\n  ],\n  \"related_topics\": [\n    \"public updates\",\n    \"source verification\"\n  ],\n  \"keywords\": [\n    \"bus route\",\n    \"service alert\"\n  ],\n  \"language\": \"en\",\n  \"author\": \"chatgpt_codex teaching fixture\",\n  \"date\": \"2026-10-06\",\n  \"next_action\": \"Check a real operator service alert and record its date before composing an actual public update.\"\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\": \"xai-xsi-1\", \"entity\": \"bus route\", \"question\": \"What makes a bus route service alert useful without overstating the evidence?\", \"answer\": \"A bus route service alert should identify the route, observation time, official status source and uncertainty. A rider report is an observation, not proof of a system-wide outage.\", \"source\": \"https://help.x.com/en/using-x/about-x-threads\"}\n{\"id\": \"xai-xsi-2\", \"entity\": \"bus route\", \"question\": \"What should the bus route audience do next?\", \"answer\": \"bus route: Check a real operator service alert and record its date before composing an actual public update.\", \"source\": \"https://help.x.com/en/using-x/about-x-threads\"}\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 value\",\n    \"Attention\",\n    \"Semantic clarity\",\n    \"Entity clarity\",\n    \"Search relevance\",\n    \"Multimodal completeness\",\n    \"Evidence provenance\",\n    \"Retrieval readiness\",\n    \"Agent readiness\",\n    \"Future 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  \"root_practice_limit\": 280,\n  \"thread_posts\": 9,\n  \"event_status\": \"synthetic teaching draft\",\n  \"source_rule\": \"Official operator status plus timestamp; do not fabricate a live event\"\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\": \"X supports connected posts as threads.\",\n      \"label\": \"ESTABLISHED\",\n      \"source\": \"https://help.x.com/en/using-x/about-x-threads\",\n      \"checked\": \"2026-10-06\"\n    },\n    {\n      \"claim\": \"A dated source-led post will reduce unsupported outage assumptions in replies.\",\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\": \"Rainy commute service update\",\n  \"format\": \"short X post\",\n  \"primary_metric\": \"source-useful replies per impression\",\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\": \"xAI/xSI Content Agent\",\n  \"topic\": \"Rainy commute service update\",\n  \"operating_points\": {\n    \"01_platform_identity\": \"xAI/xSI Content Agent; create native short X post drafts rather than swapping platform labels.\",\n    \"02_audience\": \"A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.\",\n    \"03_content_graph\": {\n      \"format\": \"short X post\",\n      \"topic\": \"Rainy commute service update\",\n      \"alternatives\": \"First native surface/format exercises and native.json.\"\n    },\n    \"04_distribution_graph\": \"Timely posts/threads, replies, quotes, reposts, communities, lists, trends and search; dates and corrections matter.\",\n    \"05_algorithm\": {\n      \"source\": \"https://help.x.com/en/using-x/about-x-threads\",\n      \"documented_claim\": \"X supports connected posts as threads.\",\n      \"private_weights\": \"UNKNOWN; never fabricate weights, thresholds or penalties.\"\n    },\n    \"06_engagement_graph\": {\n      \"actions\": [\n        \"Reply with route and observation time\",\n        \"Repost a verified update\",\n        \"Quote with source context\",\n        \"Bookmark the ledger\"\n      ],\n      \"useful_metric\": \"source-useful replies per impression\",\n      \"valuation\": \"Predeclare useful outcomes and denominators; no fabricated platform point values.\"\n    },\n    \"07_native_formats\": {\n      \"root_practice_limit\": 280,\n      \"thread_posts\": 9,\n      \"event_status\": \"synthetic teaching draft\",\n      \"source_rule\": \"Official operator status plus timestamp; do not fabricate a live event\"\n    },\n    \"08_creative_language\": \"Concise, timely and source-led; no fabricated breaking news, stale certainty or privacy exposure.\",\n    \"09_cta_system\": [\n      \"Reply with route and observation time\",\n      \"Repost a verified update\",\n      \"Quote with source context\",\n      \"Bookmark the ledger\"\n    ],\n    \"10_search\": {\n      \"entities\": [\n        \"bus route\",\n        \"service alert\"\n      ],\n      \"query\": \"What makes a bus route service alert useful without overstating the evidence?\",\n      \"task\": \"Observe current queries and record date/access limits before writing metadata.\"\n    },\n    \"11_platform_ai\": {\n      \"description\": \"X Help states Grok may search public X posts and the web when answering. Policy allows certain data uses for training, but creators cannot guarantee selection or a weight update.\",\n      \"source\": \"https://help.x.com/en/using-x/about-grok\",\n      \"checked\": \"2026-10-06\",\n      \"status\": \"Documented description; actual account availability/execution UNVERIFIED.\"\n    },\n    \"12_ai_discovery\": {\n      \"input_output\": \"User question and accessible public/web results when search is invoked → AI answer needing direct-source and date checks.\",\n      \"rule\": \"Do not promise a private model will parse, recommend, cite or train on the object.\"\n    },\n    \"13_multimodal\": {\n      \"entities\": [\n        \"bus route\",\n        \"service alert\"\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\": \"short X post\",\n      \"hypothesis\": \"A dated source-led post will reduce unsupported outage assumptions in replies.\",\n      \"status\": \"UNTESTED for this draft; empirical superiority not claimed.\"\n    },\n    \"16_failure_modes\": \"Concise, timely and source-led; no fabricated breaking news, stale certainty or privacy exposure. 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\": \"source-useful replies per impression\",\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# xAI/xSI Content Agent operating manual\n\nAudience: A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.\n\nRead all twenty points in agent-training.json before drafting. Preserve concrete inputs, native output, actual evidence and a review request. This pack has no publishing integration.\n\nNative action chain: Reply with route and observation time → Repost a verified update → Quote with source context → Bookmark the ledger\n\nNative AI: X Help states Grok may search public X posts and the web when answering. Policy allows certain data uses for training, but creators cannot guarantee selection or a weight update.\nPrimary source: https://help.x.com/en/using-x/about-grok\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# xAI/xSI audience\n\nTopic: Rainy commute service update\nAudience: A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.\n\nThe worksheet is a production draft. Save specific decisions, source URLs, dates and observed results. Never fill a result with imagined analytics.\n\n## Distinguish X, xAI and future SI\nMap X as a discourse platform, xAI as a company, Grok as an AI product and SI as speculative future intelligence terminology. Draw human → platform → search → AI → knowledge → agent → action; do not present xSI as a verified product.\n\nYour artifact / evidence:\n\n## Map native X surfaces\nInventory post, thread, reply, repost, quote, image, video, GIF, poll, link, profile, community, Spaces, lists, hashtags, mentions, bookmarks and trends. Select a concise service observation for a live-information audience.\n\nYour artifact / evidence:\n\n## Observe the real-time audience\nReview two public transport-status discussions and source links. Record date, source quality, corrections and tone; do not copy a live event into this fictional fixture.\n\nYour artifact / evidence:\n\n## Separate relevance from algorithm folklore\nExplain relevance, recency, network and interaction as concepts. Date any public ranking-code reference; historical code is not a current complete algorithm. No fabricated engagement weights or guaranteed visibility.\n\nYour artifact / evidence:\n\n## Build the fifteen-layer keyword stack\nMap name, username, bio, post, thread, replies, tags, image, video, speech, overlays, links, destination, community and references. Keep route name and date consistent across actual event variants.\n\nYour artifact / evidence:\n\n## Create the eleven-field object\nWrite topic, question, answer, context, evidence, example, entity, source, date, related topics and next action. Distinguish a rider observation from an official incident report.\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# xAI/xSI native-production\n\nTopic: Rainy commute service update\nAudience: A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.\n\nThe worksheet is a production draft. Save specific decisions, source URLs, dates and observed results. Never fill a result with imagined analytics.\n\n## Distinguish X, xAI and future SI\nMap X as a discourse platform, xAI as a company, Grok as an AI product and SI as speculative future intelligence terminology. Draw human → platform → search → AI → knowledge → agent → action; do not present xSI as a verified product.\n\nYour artifact / evidence:\n\n## Map native X surfaces\nInventory post, thread, reply, repost, quote, image, video, GIF, poll, link, profile, community, Spaces, lists, hashtags, mentions, bookmarks and trends. Select a concise service observation for a live-information audience.\n\nYour artifact / evidence:\n\n## Observe the real-time audience\nReview two public transport-status discussions and source links. Record date, source quality, corrections and tone; do not copy a live event into this fictional fixture.\n\nYour artifact / evidence:\n\n## Separate relevance from algorithm folklore\nExplain relevance, recency, network and interaction as concepts. Date any public ranking-code reference; historical code is not a current complete algorithm. No fabricated engagement weights or guaranteed visibility.\n\nYour artifact / evidence:\n\n## Build the fifteen-layer keyword stack\nMap name, username, bio, post, thread, replies, tags, image, video, speech, overlays, links, destination, community and references. Keep route name and date consistent across actual event variants.\n\nYour artifact / evidence:\n\n## Create the eleven-field object\nWrite topic, question, answer, context, evidence, example, entity, source, date, related topics and next action. Distinguish a rider observation from an official incident report.\n\nYour artifact / evidence:\n\n## Compose a semantic short post\nUse entity + topic + problem + insight + context + value within the practice 280-character root. Keep a helpful human question, not an unverified claim that every route is down.\n\nYour artifact / evidence:\n\n## Compare the same-topic root pair\nUse studio.html to compare A/B for the same rainy commute observation. Keep the public-update format and audience fixed; add source discipline without changing the event.\n\nYour artifact / evidence:\n\n## Write the nine-post knowledge chain\nDraft hook, context, mechanism, example, evidence, counterpoint, practical action, synthesis and next step. Each practice post must fit 280 characters and remain meaningful alone.\n\nYour artifact / evidence:\n\n## Turn signal into verified knowledge\nPrepare a verification ledger with observed time, operator source, source update time, what changed and unresolved facts. Add a correction template and mark stale updates visibly.\n\nYour artifact / evidence:\n\n## Align image, text and video\nStoryboard a route-map image and a short queue clip with permissions. Keep route/date in caption and alt text; do not make the image carry a claim absent from text.\n\nYour artifact / evidence:\n\n## Contextualize a meme responsibly\nDraft an optional commute joke plus a factual context line. Ensure humor does not become a false outage report; avoid misattributed or unlicensed images.\n\nYour artifact / evidence:\n\n## Localize the event context\nTranslate a short cue or prepare a fluent review brief. Preserve route IDs, times, time zone and official source; do not claim translation forces embeddings into identical coordinates.\n\nYour artifact / evidence:\n\n## Build entity and identity graphs\nConnect creator → local reporting domain → source ledger → route → status → dated evidence. Distinguish creator authority from the official transport operator.\n\nYour artifact / evidence:\n\n## Apply ten answer checks and seven agent questions\nCheck topic, entities, answer, context, sources, recency, evidence, connections, retrieval and summary. Answer what, who, when, why, relationships, trust and next action for the companion card.\n\nYour artifact / evidence:\n\n## Explain retrieval and Grok boundaries\nDraw ingestion → chunking → embedding → retrieval → context → answer as a possible authorized pipeline. Separate X search, Grok features, API access, training, fine-tuning and context; no posting-to-weights promise.\n\nYour artifact / evidence:\n\n## Design the content stack and factory\nOutline ten content layers from human value to semantic, retrieval, action and speculative intelligence. Map source → object → draft → native adaptation → review → publication decision → measurement → graph → improvement.\n\nYour artifact / evidence:\n\n## Recompose and connect nightly learning\nAdapt the observation to a community Facebook question, Threads dialogue, LinkedIn operations case, Reddit troubleshooting discussion and canonical reference. Explain how a nightly B3 segment could add verified corrections, not repeat rumors.\n\nYour artifact / evidence:\n\n## Plan seven experiments and six versions\nTest semantic text, thread density, media, localization, reuse, citation probing and local execution separately. Draft six maturity versions of the same event topic and score attention against machine utility as separate axes.\n\nYour artifact / evidence:\n\n## Approve the durable information system\nReview human, X, search, AI, retrieval, agent and future lenses. Keep source provenance, measured facts, date and correction path ahead of speed. State which features exist, which are emerging and which future SI ideas are speculation.\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# xAI/xSI caption\n\nTopic: Rainy commute service update\nAudience: A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.\n\nThe worksheet is a production draft. Save specific decisions, source URLs, dates and observed results. Never fill a result with imagined analytics.\n\n## Compose a semantic short post\nUse entity + topic + problem + insight + context + value within the practice 280-character root. Keep a helpful human question, not an unverified claim that every route is down.\n\nYour artifact / evidence:\n\n## Compare the same-topic root pair\nUse studio.html to compare A/B for the same rainy commute observation. Keep the public-update format and audience fixed; add source discipline without changing the event.\n\nYour artifact / evidence:\n\n## Write the nine-post knowledge chain\nDraft hook, context, mechanism, example, evidence, counterpoint, practical action, synthesis and next step. Each practice post must fit 280 characters and remain meaningful alone.\n\nYour artifact / evidence:\n\n## Align image, text and video\nStoryboard a route-map image and a short queue clip with permissions. Keep route/date in caption and alt text; do not make the image carry a claim absent from text.\n\nYour artifact / evidence:\n\n## Contextualize a meme responsibly\nDraft an optional commute joke plus a factual context line. Ensure humor does not become a false outage report; avoid misattributed or unlicensed images.\n\nYour artifact / evidence:\n\n## Localize the event context\nTranslate a short cue or prepare a fluent review brief. Preserve route IDs, times, time zone and official source; do not claim translation forces embeddings into identical coordinates.\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# xAI/xSI diagnostic-log\n\nTopic: Rainy commute service update\nAudience: A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.\n\nThe worksheet is a production draft. Save specific decisions, source URLs, dates and observed results. Never fill a result with imagined analytics.\n\n## Observe the real-time audience\nReview two public transport-status discussions and source links. Record date, source quality, corrections and tone; do not copy a live event into this fictional fixture.\n\nYour artifact / evidence:\n\n## Turn signal into verified knowledge\nPrepare a verification ledger with observed time, operator source, source update time, what changed and unresolved facts. Add a correction template and mark stale updates visibly.\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# xAI/xSI capstone\n\nTopic: Rainy commute service update\nAudience: A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.\n\nThe worksheet is a production draft. Save specific decisions, source URLs, dates and observed results. Never fill a result with imagined analytics.\n\n## Design the content stack and factory\nOutline ten content layers from human value to semantic, retrieval, action and speculative intelligence. Map source → object → draft → native adaptation → review → publication decision → measurement → graph → improvement.\n\nYour artifact / evidence:\n\n## Recompose and connect nightly learning\nAdapt the observation to a community Facebook question, Threads dialogue, LinkedIn operations case, Reddit troubleshooting discussion and canonical reference. Explain how a nightly B3 segment could add verified corrections, not repeat rumors.\n\nYour artifact / evidence:\n\n## Plan seven experiments and six versions\nTest semantic text, thread density, media, localization, reuse, citation probing and local execution separately. Draft six maturity versions of the same event topic and score attention against machine utility as separate axes.\n\nYour artifact / evidence:\n\n## Approve the durable information system\nReview human, X, search, AI, retrieval, agent and future lenses. Keep source provenance, measured facts, date and correction path ahead of speed. State which features exist, which are emerging and which future SI ideas are speculation.\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# xAI/xSI experiments\n\nTopic: Rainy commute service update\nAudience: A real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.\n\nThe worksheet is a production draft. Save specific decisions, source URLs, dates and observed results. Never fill a result with imagined analytics.\n\n## Plan seven experiments and six versions\nTest semantic text, thread density, media, localization, reuse, citation probing and local execution separately. Draft six maturity versions of the same event topic and score attention against machine utility as separate axes.\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### Module 1: Understanding the xAI/xSI Ecosystem\nOwn exercise: Distinguish X, xAI and future SI\n\n### Module 2: X Fundamentals\nOwn exercise: Map native X surfaces\n\n### Module 3: The X Algorithm vs The Knowledge Layer\nOwn exercise: Separate relevance from algorithm folklore\n\n### Module 4: X Search and Discoverability\nOwn exercise: Build the fifteen-layer keyword stack\n\n### Module 5: From Posts to Knowledge Objects\nOwn exercise: Create the eleven-field object\n\n### Module 6: The Semantic X Post\nOwn exercise: Compose a semantic short post\n\n### Module 7: X Threads as Knowledge Chains\nOwn exercise: Write the nine-post knowledge chain\n\n### Module 8: X as a Real-Time Knowledge Network\nOwn exercise: Turn signal into verified knowledge\n\n### Module 9: Multimodal xAI Content\nOwn exercise: Align image, text and video\n\n### Module 10: Images, Memes, and Visual Intelligence\nOwn exercise: Contextualize a meme responsibly\n\n### Module 11: Video for xAI/xSI\nOwn exercise: Align image, text and video\n\n### Module 12: Multilingual xAI Content\nOwn exercise: Localize the event context\n\n### Module 13: Entity-First Content\nOwn exercise: Build entity and identity graphs\n\n### Module 14: The X Knowledge Graph\nOwn exercise: Build entity and identity graphs\n\n### Module 15: AI Discoverability (Beyond SEO)\nOwn exercise: Explain retrieval and Grok boundaries\n\n### Module 16: RAG-Ready Content\nOwn exercise: Companion knowledge and truthful claims: mechanisms.md, claims.json, knowledge.json, rag.jsonl\n\n### Module 17: Agent-Ready Content\nOwn exercise: Hash and lint the reviewed files; agent-card.json (three operating systems)\n\n### Module 18: xAI/xSI → AI Answer\nOwn exercise: Apply ten answer checks and seven agent questions\n\n### Module 19: xAI/xSI → AI Agent\nOwn exercise: Apply ten answer checks and seven agent questions\n\n### Module 20: Human Signal vs Synthetic Content\nOwn exercise: Turn signal into verified knowledge\n\n### Module 21: Provenance and Trust\nOwn exercise: Record provenance and a human approval decision; provenance-notes.md\n\n### Module 22: The 10-Level xAI/xSI Content Stack\nOwn exercise: Design the content stack and factory\n\n### Module 23: The B3 xAI/xSI Content Intelligence Stack\nOwn exercise: Design the content stack and factory\n\n### Module 24: X → Multi-Platform Knowledge\nOwn exercise: Recompose and connect nightly learning\n\n### Module 25: Build Bots Better Content Factory\nOwn exercise: Design the content stack and factory\n\n### Module 26: Late Night with Build Bots Better\nOwn exercise: Recompose and connect nightly learning\n\n### Module 27: The B3 Knowledge Flywheel\nOwn exercise: Recompose and connect nightly learning\n\n### Module 28: The X Algorithm vs The Knowledge Algorithm\nOwn exercise: Approve the durable information system\n\n### Module 29: The B3 Virality + Knowledge Model\nOwn exercise: Plan seven experiments and six versions\n\n### Module 30: AI Training Data: What Creators Should Actually Know\nOwn exercise: Explain retrieval and Grok boundaries\n\n### Module 31: Content for Synthetic Intelligence (SI)\nOwn exercise: Distinguish X, xAI and future SI\n\n### Module 32: Beyond the Algorithm\nOwn exercise: Approve the durable information system\n\n### Module 33: B3 AI Readiness Score\nOwn exercise: Use the readiness calculator; studio.html and rubric.json\n\n### Module 34: Build Bots Better xAI/xSI Content Audit\nOwn exercise: Approve the durable information system\n\n### Module 35: Experiment Lab\nOwn exercise: Plan seven experiments and six versions\n\n### Module 36: Build the B3 xAI/xSI Content System\nOwn exercise: Approve the durable information system\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\": \"xAI/xSI\",\n  \"progression\": [\n    \"Human\",\n    \"X distribution\",\n    \"Search\",\n    \"AI clarity\",\n    \"xAI features (availability-dependent)\",\n    \"Future SI (speculative)\",\n    \"Agentic\",\n    \"Intelligence optimization (design framework)\"\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 real-time audience wants a concise event observation with dates and verification. The example is a rainy transit delay update, avoiding fabricated news or universal delay claims.\",\n  \"measurement\": \"Compare the same topic, format, audience and promise. Change one independent variable per audience test.\"\n}\n",
      "filename": "strategy.json",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R036",
      "name": "strategy.json.VERSION_HISTORY.txt",
      "type": "txt",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n",
      "filename": "strategy.json.VERSION_HISTORY.txt",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    },
    {
      "resource_id": "R037",
      "name": "mechanisms.md",
      "type": "md",
      "purpose": "Working resource used by this Build; inspect before running.",
      "contents": "VERSION HISTORY\n2026-10-06 EDT | chatgpt_codex | media-catchup | v1: original learner production resource.\n\n# Discovery mechanisms and truth labels\n\nTraining and fine-tuning alter model weights; publishing a post cannot force either. RLHF/RLAIF uses preference data and is separate from inference. Crawling and public/in-app search build accessible indexes; private posts, robots rules, terms and APIs constrain access. Embeddings represent semantic similarity; vector databases retrieve vectors. RAG retrieves external chunks into context, while context windows are temporary inference inputs. Graphs encode named relationships. Recommendation systems rank candidate content for an audience. AI answers and citations may summarize accessible sources; citations are observed, not guaranteed. Provenance records origin and byte changes. Machine-readable schemas describe content but do not force rich results. Multimodal OCR/ASR interprets image/audio and requires human correction. Agent browsing/retrieval adds goal-driven tool actions. Licensed and enterprise repositories have explicit access contracts. Platform-specific AI features must be checked for account/region/version availability. Future SI learning and coordination is speculative.\n\nTaxonomy: ESTABLISHED requires a direct source; EVIDENCE-SUPPORTED requires reproducible observations; EMERGING describes a dated deployment; HYPOTHESIS is a proposed test; SPECULATION is a future possibility. The shared briefs use different counts/groupings (13,16,18); retain distinctions rather than inventing a uniform number. SI is not a promise of permanent model learning or a synonym for semantic indexing.\n",
      "filename": "mechanisms.md",
      "generated_from": "BUILD_SPEC.json.resources",
      "version": "2.0"
    }
  ],
  "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 short X post 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 short X post for Rainy commute service update, 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 short X post for Rainy commute service update, 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 xAI/xSI Content for the AI, SI, and Agentic Era | BuildBotsBetter",
    "SEO_description": "A reviewed short X post for Rainy commute service update, controlled A/B drafts, complete native production/capstone plans, an evidence rubric, source-linked retrieval objects and hash-checked companion resources.",
    "SEO_keywords": [
      "xai-xsi-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 xAI/xSI requirements",
      "url": "../../specs/xai-xsi-content-ai-si-agentic-era.md"
    },
    {
      "title": "xAI/xSI primary platform guidance",
      "url": "https://help.x.com/en/using-x/about-x-threads"
    },
    {
      "title": "xAI/xSI documented native AI capabilities",
      "url": "https://help.x.com/en/using-x/about-grok"
    }
  ],
  "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": [
      "### Module 1: Understanding the xAI/xSI Ecosystem",
      "### Module 2: X Fundamentals",
      "### Module 3: The X Algorithm vs The Knowledge Layer",
      "### Module 4: X Search and Discoverability",
      "### Module 5: From Posts to Knowledge Objects",
      "### Module 6: The Semantic X Post",
      "### Module 7: X Threads as Knowledge Chains",
      "### Module 8: X as a Real-Time Knowledge Network",
      "### Module 9: Multimodal xAI Content",
      "### Module 10: Images, Memes, and Visual Intelligence",
      "### Module 11: Video for xAI/xSI",
      "### Module 12: Multilingual xAI Content",
      "### Module 13: Entity-First Content",
      "### Module 14: The X Knowledge Graph",
      "### Module 15: AI Discoverability (Beyond SEO)",
      "### Module 16: RAG-Ready Content",
      "### Module 17: Agent-Ready Content",
      "### Module 18: xAI/xSI → AI Answer",
      "### Module 19: xAI/xSI → AI Agent",
      "### Module 20: Human Signal vs Synthetic Content",
      "### Module 21: Provenance and Trust",
      "### Module 22: The 10-Level xAI/xSI Content Stack",
      "### Module 23: The B3 xAI/xSI Content Intelligence Stack",
      "### Module 24: X → Multi-Platform Knowledge",
      "### Module 25: Build Bots Better Content Factory",
      "### Module 26: Late Night with Build Bots Better",
      "### Module 27: The B3 Knowledge Flywheel",
      "### Module 28: The X Algorithm vs The Knowledge Algorithm",
      "### Module 29: The B3 Virality + Knowledge Model",
      "### Module 30: AI Training Data: What Creators Should Actually Know",
      "### Module 31: Content for Synthetic Intelligence (SI)",
      "### Module 32: Beyond the Algorithm",
      "### Module 33: B3 AI Readiness Score",
      "### Module 34: Build Bots Better xAI/xSI Content Audit",
      "### Module 35: Experiment Lab",
      "### Module 36: Build the B3 xAI/xSI Content System"
    ],
    "part_to_exercise": [
      {
        "requirement": "### Module 1: Understanding the xAI/xSI Ecosystem",
        "exercise": "Distinguish X, xAI and future SI"
      },
      {
        "requirement": "### Module 2: X Fundamentals",
        "exercise": "Map native X surfaces"
      },
      {
        "requirement": "### Module 3: The X Algorithm vs The Knowledge Layer",
        "exercise": "Separate relevance from algorithm folklore"
      },
      {
        "requirement": "### Module 4: X Search and Discoverability",
        "exercise": "Build the fifteen-layer keyword stack"
      },
      {
        "requirement": "### Module 5: From Posts to Knowledge Objects",
        "exercise": "Create the eleven-field object"
      },
      {
        "requirement": "### Module 6: The Semantic X Post",
        "exercise": "Compose a semantic short post"
      },
      {
        "requirement": "### Module 7: X Threads as Knowledge Chains",
        "exercise": "Write the nine-post knowledge chain"
      },
      {
        "requirement": "### Module 8: X as a Real-Time Knowledge Network",
        "exercise": "Turn signal into verified knowledge"
      },
      {
        "requirement": "### Module 9: Multimodal xAI Content",
        "exercise": "Align image, text and video"
      },
      {
        "requirement": "### Module 10: Images, Memes, and Visual Intelligence",
        "exercise": "Contextualize a meme responsibly"
      },
      {
        "requirement": "### Module 11: Video for xAI/xSI",
        "exercise": "Align image, text and video"
      },
      {
        "requirement": "### Module 12: Multilingual xAI Content",
        "exercise": "Localize the event context"
      },
      {
        "requirement": "### Module 13: Entity-First Content",
        "exercise": "Build entity and identity graphs"
      },
      {
        "requirement": "### Module 14: The X Knowledge Graph",
        "exercise": "Build entity and identity graphs"
      },
      {
        "requirement": "### Module 15: AI Discoverability (Beyond SEO)",
        "exercise": "Explain retrieval and Grok boundaries"
      },
      {
        "requirement": "### Module 16: RAG-Ready Content",
        "exercise": "Companion knowledge and truthful claims: mechanisms.md, claims.json, knowledge.json, rag.jsonl"
      },
      {
        "requirement": "### Module 17: Agent-Ready Content",
        "exercise": "Hash and lint the reviewed files; agent-card.json (three operating systems)"
      },
      {
        "requirement": "### Module 18: xAI/xSI → AI Answer",
        "exercise": "Apply ten answer checks and seven agent questions"
      },
      {
        "requirement": "### Module 19: xAI/xSI → AI Agent",
        "exercise": "Apply ten answer checks and seven agent questions"
      },
      {
        "requirement": "### Module 20: Human Signal vs Synthetic Content",
        "exercise": "Turn signal into verified knowledge"
      },
      {
        "requirement": "### Module 21: Provenance and Trust",
        "exercise": "Record provenance and a human approval decision; provenance-notes.md"
      },
      {
        "requirement": "### Module 22: The 10-Level xAI/xSI Content Stack",
        "exercise": "Design the content stack and factory"
      },
      {
        "requirement": "### Module 23: The B3 xAI/xSI Content Intelligence Stack",
        "exercise": "Design the content stack and factory"
      },
      {
        "requirement": "### Module 24: X → Multi-Platform Knowledge",
        "exercise": "Recompose and connect nightly learning"
      },
      {
        "requirement": "### Module 25: Build Bots Better Content Factory",
        "exercise": "Design the content stack and factory"
      },
      {
        "requirement": "### Module 26: Late Night with Build Bots Better",
        "exercise": "Recompose and connect nightly learning"
      },
      {
        "requirement": "### Module 27: The B3 Knowledge Flywheel",
        "exercise": "Recompose and connect nightly learning"
      },
      {
        "requirement": "### Module 28: The X Algorithm vs The Knowledge Algorithm",
        "exercise": "Approve the durable information system"
      },
      {
        "requirement": "### Module 29: The B3 Virality + Knowledge Model",
        "exercise": "Plan seven experiments and six versions"
      },
      {
        "requirement": "### Module 30: AI Training Data: What Creators Should Actually Know",
        "exercise": "Explain retrieval and Grok boundaries"
      },
      {
        "requirement": "### Module 31: Content for Synthetic Intelligence (SI)",
        "exercise": "Distinguish X, xAI and future SI"
      },
      {
        "requirement": "### Module 32: Beyond the Algorithm",
        "exercise": "Approve the durable information system"
      },
      {
        "requirement": "### Module 33: B3 AI Readiness Score",
        "exercise": "Use the readiness calculator; studio.html and rubric.json"
      },
      {
        "requirement": "### Module 34: Build Bots Better xAI/xSI Content Audit",
        "exercise": "Approve the durable information system"
      },
      {
        "requirement": "### Module 35: Experiment Lab",
        "exercise": "Plan seven experiments and six versions"
      },
      {
        "requirement": "### Module 36: Build the B3 xAI/xSI Content System",
        "exercise": "Approve the durable information system"
      }
    ],
    "native_exercises": [
      "Distinguish X, xAI and future SI",
      "Map native X surfaces",
      "Observe the real-time audience",
      "Separate relevance from algorithm folklore",
      "Build the fifteen-layer keyword stack",
      "Create the eleven-field object",
      "Compose a semantic short post",
      "Compare the same-topic root pair",
      "Write the nine-post knowledge chain",
      "Turn signal into verified knowledge",
      "Align image, text and video",
      "Contextualize a meme responsibly",
      "Localize the event context",
      "Build entity and identity graphs",
      "Apply ten answer checks and seven agent questions",
      "Explain retrieval and Grok boundaries",
      "Design the content stack and factory",
      "Recompose and connect nightly learning",
      "Plan seven experiments and six versions",
      "Approve the durable information system"
    ],
    "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."
  }
}
