[{"data":1,"prerenderedAt":1838},["ShallowReactive",2],{"cycle-doc-design-c133-authoring.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":22},{"id":5,"title":6},"c133","Remediation Training",{"id":8,"label":9},"design","Design","authoring.md","c133 · Authoring a training (Phase 3, 2026-11-11)",[13,14,15,16,17,18,19,20,21],"Where a training lives","The file","What happened on {device}","{server} is sanctioned for {exceptionTeam}. Is it sanctioned for {team}?","What happens when an agent connects a server","Slots","Scenes","Voice","What the parser refuses",{"type":23,"children":24},"root",[25,63,69,113,166,171,184,951,979,984,1019,1219,1269,1329,1334,1485,1513,1548,1553,1611,1616,1773,1778,1823,1828,1833],{"type":26,"tag":27,"props":28,"children":29},"element","p",{},[30,37,39,46,48,53,55,61],{"type":26,"tag":31,"props":32,"children":33},"strong",{},[34],{"type":35,"value":36},"text","For:",{"type":35,"value":38}," whoever writes the next training (the ",{"type":26,"tag":40,"props":41,"children":43},"code",{"className":42},[],[44],{"type":35,"value":45},"\u002Ftraining",{"type":35,"value":47}," skill carries the loop; this is the format). ",{"type":26,"tag":31,"props":49,"children":50},{},[51],{"type":35,"value":52},"Rulings it follows:",{"type":35,"value":54}," D4 (the design site is the studio), D7 (illustrations and short animations, no video), D11 (English for the pilots, one file per language), D12 (the operator's words as written), R1–R6 (",{"type":26,"tag":40,"props":56,"children":58},{"className":57},[],[59],{"type":35,"value":60},"plan.md",{"type":35,"value":62},").",{"type":26,"tag":64,"props":65,"children":67},"h2",{"id":66},"where-a-training-lives",[68],{"type":35,"value":13},{"type":26,"tag":27,"props":70,"children":71},{},[72,74,80,82,88,90,95,97,103,105,111],{"type":35,"value":73},"One markdown file per training and language: ",{"type":26,"tag":40,"props":75,"children":77},{"className":76},[],[78],{"type":35,"value":79},"app\u002Fdata\u002Ftrainings\u002F\u003Clang>\u002F\u003Cslug>.md",{"type":35,"value":81},". The files sit beside the model and the parser, not under ",{"type":26,"tag":40,"props":83,"children":85},{"className":84},[],[86],{"type":35,"value":87},"content\u002F",{"type":35,"value":89},": Nuxt Content hides ",{"type":26,"tag":40,"props":91,"children":93},{"className":92},[],[94],{"type":35,"value":87},{"type":35,"value":96}," from Vite's watcher, so a file there never reached the lab's preview until a restart (found in Phase 4; the collection reads this folder through its ",{"type":26,"tag":40,"props":98,"children":100},{"className":99},[],[101],{"type":35,"value":102},"cwd",{"type":35,"value":104}," source, ",{"type":26,"tag":40,"props":106,"children":108},{"className":107},[],[109],{"type":35,"value":110},"*\u002F*.md",{"type":35,"value":112},"). The folder is the language, the file name is the slug; the parser checks both against the frontmatter, so a translation can never shadow another training. A translation keeps the id and the version of the file it translates. Operator text that a slot fills (an exception's reason, a policy's name) is shown as written, never translated by us (D11).",{"type":26,"tag":27,"props":114,"children":115},{},[116,118,124,126,132,134,140,142,148,150,156,158,164],{"type":35,"value":117},"Two readers, one parser (",{"type":26,"tag":40,"props":119,"children":121},{"className":120},[],[122],{"type":35,"value":123},"app\u002Fdata\u002Ftrainings\u002Fparse.ts",{"type":35,"value":125},"): the lab reads the files at build time (",{"type":26,"tag":40,"props":127,"children":129},{"className":128},[],[130],{"type":35,"value":131},"app\u002Fdata\u002Ftrainings\u002Findex.ts",{"type":35,"value":133},", so an edit reloads the mock), and the API reads the content collection ",{"type":26,"tag":40,"props":135,"children":137},{"className":136},[],[138],{"type":35,"value":139},"trainings",{"type":35,"value":141}," (",{"type":26,"tag":40,"props":143,"children":145},{"className":144},[],[146],{"type":35,"value":147},"content.config.ts",{"type":35,"value":149},") and serves what the apps read (",{"type":26,"tag":40,"props":151,"children":153},{"className":152},[],[154],{"type":35,"value":155},"publish.md",{"type":35,"value":157},"). A file with problems is withheld from both and listed with its problems on the preview page, ",{"type":26,"tag":159,"props":160,"children":162},"a",{"href":161},"\u002Fpages\u002Fphase4\u002Ftrainings",[163],{"type":35,"value":161},{"type":35,"value":165},".",{"type":26,"tag":64,"props":167,"children":169},{"id":168},"the-file",[170],{"type":35,"value":14},{"type":26,"tag":172,"props":173,"children":179},"pre",{"className":174,"code":175,"language":176,"meta":177,"style":178},"language-md","---\nid: T-MCP-1\nslug: unapproved-mcp-servers\ntitle: Unapproved MCP servers\npolicyId: P-MCP\nminutes: 3\nversion: 1\nlang: en\ncontact:\n  owner: \"{owner}\"\n  how: \"Contact IT from the message that brought you here, or reply to it; {owner} reads the replies for this policy.\"\n---\n\n\u003C!-- the author's notes: which finding it was written for, what was checked -->\n\n# Assignment\n\nhappened: On {date}, {agent} on {device} connected to the {server} server, which is not sanctioned for {team}; {blocked}.\nmatters: A {minutesWord} training shows what an MCP server can do on your behalf and how to get one sanctioned when your work needs it.\n\n# Lesson\n\n## What happened on {device}\n\nid: what-happened\nscene: connection\nanimated: yes\nalt: {agent} on {device} connects to the {server} server, which sits outside the sanctioned list for {team}.\n\nOn {date} at {time}, {agent} on {device} connected to …\n\n# Check\n\n## {server} is sanctioned for {exceptionTeam}. Is it sanctioned for {team}?\n\nid: q-per-team\nstep: why-the-list\nexplain: Sanctioning follows a review for one team's data; another team asks for its own.\n\n- [ ] Yes, a sanctioned server is sanctioned for everyone\n- [x] No, servers are sanctioned per team after a review of what they reach\n- [ ] Yes, once anyone on {exceptionTeam} has used it\n\n# Library\n\n## What happens when an agent connects a server\n\nid: what-happened\nalt: {agent} on {device} connects to the {server} server, which sits outside the sanctioned list for {team}.\n\nAn agent can connect an MCP server in the middle of a session …\n","md","","undefined",[180],{"type":26,"tag":40,"props":181,"children":182},{"__ignoreMap":177},[183],{"type":35,"value":175},{"type":26,"tag":185,"props":186,"children":187},"table",{},[188,220],{"type":26,"tag":189,"props":190,"children":191},"thead",{},[192],{"type":26,"tag":193,"props":194,"children":195},"tr",{},[196,202,215],{"type":26,"tag":197,"props":198,"children":199},"th",{},[200],{"type":35,"value":201},"Part",{"type":26,"tag":197,"props":203,"children":204},{},[205,207,213],{"type":35,"value":206},"Maps onto (",{"type":26,"tag":40,"props":208,"children":210},{"className":209},[],[211],{"type":35,"value":212},"types.ts",{"type":35,"value":214},")",{"type":26,"tag":197,"props":216,"children":217},{},[218],{"type":35,"value":219},"Rule",{"type":26,"tag":221,"props":222,"children":223},"tbody",{},[224,257,282,307,332,429,454,479,504,537,577,618,681,703,736,803,847],{"type":26,"tag":193,"props":225,"children":226},{},[227,237,246],{"type":26,"tag":228,"props":229,"children":230},"td",{},[231],{"type":26,"tag":40,"props":232,"children":234},{"className":233},[],[235],{"type":35,"value":236},"id",{"type":26,"tag":228,"props":238,"children":239},{},[240],{"type":26,"tag":40,"props":241,"children":243},{"className":242},[],[244],{"type":35,"value":245},"Training.id",{"type":26,"tag":228,"props":247,"children":248},{},[249,255],{"type":26,"tag":40,"props":250,"children":252},{"className":251},[],[253],{"type":35,"value":254},"T-\u003CHAZARD>-\u003Cn>",{"type":35,"value":256},", as c137's E7 names it",{"type":26,"tag":193,"props":258,"children":259},{},[260,269,277],{"type":26,"tag":228,"props":261,"children":262},{},[263],{"type":26,"tag":40,"props":264,"children":266},{"className":265},[],[267],{"type":35,"value":268},"slug",{"type":26,"tag":228,"props":270,"children":271},{},[272],{"type":26,"tag":40,"props":273,"children":275},{"className":274},[],[276],{"type":35,"value":268},{"type":26,"tag":228,"props":278,"children":279},{},[280],{"type":35,"value":281},"kebab-case; the file's name",{"type":26,"tag":193,"props":283,"children":284},{},[285,294,302],{"type":26,"tag":228,"props":286,"children":287},{},[288],{"type":26,"tag":40,"props":289,"children":291},{"className":290},[],[292],{"type":35,"value":293},"title",{"type":26,"tag":228,"props":295,"children":296},{},[297],{"type":26,"tag":40,"props":298,"children":300},{"className":299},[],[301],{"type":35,"value":293},{"type":26,"tag":228,"props":303,"children":304},{},[305],{"type":35,"value":306},"the person's words, 40 characters at most",{"type":26,"tag":193,"props":308,"children":309},{},[310,319,327],{"type":26,"tag":228,"props":311,"children":312},{},[313],{"type":26,"tag":40,"props":314,"children":316},{"className":315},[],[317],{"type":35,"value":318},"policyId",{"type":26,"tag":228,"props":320,"children":321},{},[322],{"type":26,"tag":40,"props":323,"children":325},{"className":324},[],[326],{"type":35,"value":318},{"type":26,"tag":228,"props":328,"children":329},{},[330],{"type":35,"value":331},"the policy that assigns it (D2); one training per policy",{"type":26,"tag":193,"props":333,"children":334},{},[335,354,363],{"type":26,"tag":228,"props":336,"children":337},{},[338,344,346,352],{"type":26,"tag":40,"props":339,"children":341},{"className":340},[],[342],{"type":35,"value":343},"topic.id",{"type":35,"value":345},", ",{"type":26,"tag":40,"props":347,"children":349},{"className":348},[],[350],{"type":35,"value":351},"topic.label",{"type":35,"value":353}," (Phase 7, D49)",{"type":26,"tag":228,"props":355,"children":356},{},[357],{"type":26,"tag":40,"props":358,"children":360},{"className":359},[],[361],{"type":35,"value":362},"topic",{"type":26,"tag":228,"props":364,"children":365},{},[366,368,373,375,381,383,389,391,397,398,404,405,411,413,419,421,427],{"type":35,"value":367},"in place of ",{"type":26,"tag":40,"props":369,"children":371},{"className":370},[],[372],{"type":35,"value":318},{"type":35,"value":374}," for a training on a topic, one of the c125 guide's concepts (D50): a kebab-case id and the person's words, 40 characters at most. A training has a policy or a topic, never both. A topic training answers no finding: its ",{"type":26,"tag":40,"props":376,"children":378},{"className":377},[],[379],{"type":35,"value":380},"# Assignment",{"type":35,"value":382}," needs only ",{"type":26,"tag":40,"props":384,"children":386},{"className":385},[],[387],{"type":35,"value":388},"matters:",{"type":35,"value":390},", it is written for anyone with only the reader's slots (",{"type":26,"tag":40,"props":392,"children":394},{"className":393},[],[395],{"type":35,"value":396},"device",{"type":35,"value":345},{"type":26,"tag":40,"props":399,"children":401},{"className":400},[],[402],{"type":35,"value":403},"team",{"type":35,"value":345},{"type":26,"tag":40,"props":406,"children":408},{"className":407},[],[409],{"type":35,"value":410},"agent",{"type":35,"value":412},"), it needs no ",{"type":26,"tag":40,"props":414,"children":416},{"className":415},[],[417],{"type":35,"value":418},"# Library",{"type":35,"value":420},", and its contact owner is IT. The first is ",{"type":26,"tag":40,"props":422,"children":424},{"className":423},[],[425],{"type":35,"value":426},"en\u002Fobserve-and-enforce.md",{"type":35,"value":428}," (T-MODES-1)",{"type":26,"tag":193,"props":430,"children":431},{},[432,441,449],{"type":26,"tag":228,"props":433,"children":434},{},[435],{"type":26,"tag":40,"props":436,"children":438},{"className":437},[],[439],{"type":35,"value":440},"minutes",{"type":26,"tag":228,"props":442,"children":443},{},[444],{"type":26,"tag":40,"props":445,"children":447},{"className":446},[],[448],{"type":35,"value":440},{"type":26,"tag":228,"props":450,"children":451},{},[452],{"type":35,"value":453},"one to three (R1)",{"type":26,"tag":193,"props":455,"children":456},{},[457,466,474],{"type":26,"tag":228,"props":458,"children":459},{},[460],{"type":26,"tag":40,"props":461,"children":463},{"className":462},[],[464],{"type":35,"value":465},"version",{"type":26,"tag":228,"props":467,"children":468},{},[469],{"type":26,"tag":40,"props":470,"children":472},{"className":471},[],[473],{"type":35,"value":465},{"type":26,"tag":228,"props":475,"children":476},{},[477],{"type":35,"value":478},"a whole number; bump it when the meaning of a step, a question or a right answer changes (a record names the version it was passed against); a typo fix does not bump",{"type":26,"tag":193,"props":480,"children":481},{},[482,491,499],{"type":26,"tag":228,"props":483,"children":484},{},[485],{"type":26,"tag":40,"props":486,"children":488},{"className":487},[],[489],{"type":35,"value":490},"lang",{"type":26,"tag":228,"props":492,"children":493},{},[494],{"type":26,"tag":40,"props":495,"children":497},{"className":496},[],[498],{"type":35,"value":490},{"type":26,"tag":228,"props":500,"children":501},{},[502],{"type":35,"value":503},"two letters; the folder's name (D11)",{"type":26,"tag":193,"props":505,"children":506},{},[507,523,532],{"type":26,"tag":228,"props":508,"children":509},{},[510,516,517],{"type":26,"tag":40,"props":511,"children":513},{"className":512},[],[514],{"type":35,"value":515},"contact.owner",{"type":35,"value":345},{"type":26,"tag":40,"props":518,"children":520},{"className":519},[],[521],{"type":35,"value":522},"contact.how",{"type":26,"tag":228,"props":524,"children":525},{},[526],{"type":26,"tag":40,"props":527,"children":529},{"className":528},[],[530],{"type":35,"value":531},"contact",{"type":26,"tag":228,"props":533,"children":534},{},[535],{"type":35,"value":536},"the path to a person (R5)",{"type":26,"tag":193,"props":538,"children":539},{},[540,563,572],{"type":26,"tag":228,"props":541,"children":542},{},[543,548,550,556,558],{"type":26,"tag":40,"props":544,"children":546},{"className":545},[],[547],{"type":35,"value":380},{"type":35,"value":549}," · ",{"type":26,"tag":40,"props":551,"children":553},{"className":552},[],[554],{"type":35,"value":555},"happened:",{"type":35,"value":557}," ",{"type":26,"tag":40,"props":559,"children":561},{"className":560},[],[562],{"type":35,"value":388},{"type":26,"tag":228,"props":564,"children":565},{},[566],{"type":26,"tag":40,"props":567,"children":569},{"className":568},[],[570],{"type":35,"value":571},"assignment",{"type":26,"tag":228,"props":573,"children":574},{},[575],{"type":35,"value":576},"the message's first two sentences (c137 R2); the third, what to do next, is every training's",{"type":26,"tag":193,"props":578,"children":579},{},[580,596,605],{"type":26,"tag":228,"props":581,"children":582},{},[583,589,590],{"type":26,"tag":40,"props":584,"children":586},{"className":585},[],[587],{"type":35,"value":588},"# Lesson",{"type":35,"value":549},{"type":26,"tag":40,"props":591,"children":593},{"className":592},[],[594],{"type":35,"value":595},"## \u003Cheading>",{"type":26,"tag":228,"props":597,"children":598},{},[599],{"type":26,"tag":40,"props":600,"children":602},{"className":601},[],[603],{"type":35,"value":604},"lesson[]",{"type":26,"tag":228,"props":606,"children":607},{},[608,610,616],{"type":35,"value":609},"three to five steps; the first names what happened on this machine, one says what to do instead (",{"type":26,"tag":40,"props":611,"children":613},{"className":612},[],[614],{"type":35,"value":615},"instead: yes",{"type":35,"value":617},", R2)",{"type":26,"tag":193,"props":619,"children":620},{},[621,660,676],{"type":26,"tag":228,"props":622,"children":623},{},[624,626,632,633,639,640,646,647,653,654],{"type":35,"value":625},"the step's block: ",{"type":26,"tag":40,"props":627,"children":629},{"className":628},[],[630],{"type":35,"value":631},"id:",{"type":35,"value":557},{"type":26,"tag":40,"props":634,"children":636},{"className":635},[],[637],{"type":35,"value":638},"scene:",{"type":35,"value":557},{"type":26,"tag":40,"props":641,"children":643},{"className":642},[],[644],{"type":35,"value":645},"alt:",{"type":35,"value":557},{"type":26,"tag":40,"props":648,"children":650},{"className":649},[],[651],{"type":35,"value":652},"animated:",{"type":35,"value":557},{"type":26,"tag":40,"props":655,"children":657},{"className":656},[],[658],{"type":35,"value":659},"instead:",{"type":26,"tag":228,"props":661,"children":662},{},[663,669,670],{"type":26,"tag":40,"props":664,"children":666},{"className":665},[],[667],{"type":35,"value":668},"LessonStep.id",{"type":35,"value":345},{"type":26,"tag":40,"props":671,"children":673},{"className":672},[],[674],{"type":35,"value":675},"illustration",{"type":26,"tag":228,"props":677,"children":678},{},[679],{"type":35,"value":680},"every step has an id, a scene and an alt sentence (the caption and what a screen reader hears)",{"type":26,"tag":193,"props":682,"children":683},{},[684,689,698],{"type":26,"tag":228,"props":685,"children":686},{},[687],{"type":35,"value":688},"the step's paragraphs",{"type":26,"tag":228,"props":690,"children":691},{},[692],{"type":26,"tag":40,"props":693,"children":695},{"className":694},[],[696],{"type":35,"value":697},"body[]",{"type":26,"tag":228,"props":699,"children":700},{},[701],{"type":35,"value":702},"one to three short paragraphs; a soft-wrapped line joins its paragraph",{"type":26,"tag":193,"props":704,"children":705},{},[706,722,731],{"type":26,"tag":228,"props":707,"children":708},{},[709,715,716],{"type":26,"tag":40,"props":710,"children":712},{"className":711},[],[713],{"type":35,"value":714},"# Check",{"type":35,"value":549},{"type":26,"tag":40,"props":717,"children":719},{"className":718},[],[720],{"type":35,"value":721},"## \u003Cquestion>",{"type":26,"tag":228,"props":723,"children":724},{},[725],{"type":26,"tag":40,"props":726,"children":728},{"className":727},[],[729],{"type":35,"value":730},"check[]",{"type":26,"tag":228,"props":732,"children":733},{},[734],{"type":35,"value":735},"three to five questions on the idea, not the sentences (R3)",{"type":26,"tag":193,"props":737,"children":738},{},[739,763,786],{"type":26,"tag":228,"props":740,"children":741},{},[742,744,749,750,756,757],{"type":35,"value":743},"the question's block: ",{"type":26,"tag":40,"props":745,"children":747},{"className":746},[],[748],{"type":35,"value":631},{"type":35,"value":557},{"type":26,"tag":40,"props":751,"children":753},{"className":752},[],[754],{"type":35,"value":755},"step:",{"type":35,"value":557},{"type":26,"tag":40,"props":758,"children":760},{"className":759},[],[761],{"type":35,"value":762},"explain:",{"type":26,"tag":228,"props":764,"children":765},{},[766,772,773,779,780],{"type":26,"tag":40,"props":767,"children":769},{"className":768},[],[770],{"type":35,"value":771},"Question.id",{"type":35,"value":345},{"type":26,"tag":40,"props":774,"children":776},{"className":775},[],[777],{"type":35,"value":778},"stepId",{"type":35,"value":345},{"type":26,"tag":40,"props":781,"children":783},{"className":782},[],[784],{"type":35,"value":785},"explain",{"type":26,"tag":228,"props":787,"children":788},{},[789,794,796,801],{"type":26,"tag":40,"props":790,"children":792},{"className":791},[],[793],{"type":35,"value":755},{"type":35,"value":795}," names the lesson step it verifies (a retake points back there, D15); ",{"type":26,"tag":40,"props":797,"children":799},{"className":798},[],[800],{"type":35,"value":762},{"type":35,"value":802}," is shown only once the check is passed",{"type":26,"tag":193,"props":804,"children":805},{},[806,825,834],{"type":26,"tag":228,"props":807,"children":808},{},[809,811,817,819],{"type":35,"value":810},"the choices, ",{"type":26,"tag":40,"props":812,"children":814},{"className":813},[],[815],{"type":35,"value":816},"- [ ]",{"type":35,"value":818}," and ",{"type":26,"tag":40,"props":820,"children":822},{"className":821},[],[823],{"type":35,"value":824},"- [x]",{"type":26,"tag":228,"props":826,"children":827},{},[828],{"type":26,"tag":40,"props":829,"children":831},{"className":830},[],[832],{"type":35,"value":833},"choices[]",{"type":26,"tag":228,"props":835,"children":836},{},[837,839,845],{"type":35,"value":838},"two to four, exactly one ",{"type":26,"tag":40,"props":840,"children":842},{"className":841},[],[843],{"type":35,"value":844},"[x]",{"type":35,"value":846}," (D3); their ids are a, b, c, d by position",{"type":26,"tag":193,"props":848,"children":849},{},[850,865,881],{"type":26,"tag":228,"props":851,"children":852},{},[853,858,860],{"type":26,"tag":40,"props":854,"children":856},{"className":855},[],[857],{"type":35,"value":418},{"type":35,"value":859}," (optional; Phase 6, D38) · ",{"type":26,"tag":40,"props":861,"children":863},{"className":862},[],[864],{"type":35,"value":595},{"type":26,"tag":228,"props":866,"children":867},{},[868,874,875],{"type":26,"tag":40,"props":869,"children":871},{"className":870},[],[872],{"type":35,"value":873},"library.lesson[]",{"type":35,"value":345},{"type":26,"tag":40,"props":876,"children":878},{"className":877},[],[879],{"type":35,"value":880},"library.check[]",{"type":26,"tag":228,"props":882,"children":883},{},[884,886,891,893,898,900,906,908,913,915,920,922,927,929,934,936,942,943,949],{"type":35,"value":885},"words for a reading with no finding (a training taken on its own from the library). Each entry names by ",{"type":26,"tag":40,"props":887,"children":889},{"className":888},[],[890],{"type":35,"value":631},{"type":35,"value":892}," the step or question it replaces and is written in that one's grammar: a step's heading, ",{"type":26,"tag":40,"props":894,"children":896},{"className":895},[],[897],{"type":35,"value":645},{"type":35,"value":899}," and one to three paragraphs, keeping its scene, motion and ",{"type":26,"tag":40,"props":901,"children":903},{"className":902},[],[904],{"type":35,"value":905},"instead",{"type":35,"value":907}," unless it says ",{"type":26,"tag":40,"props":909,"children":911},{"className":910},[],[912],{"type":35,"value":638},{"type":35,"value":914}," or ",{"type":26,"tag":40,"props":916,"children":918},{"className":917},[],[919],{"type":35,"value":652},{"type":35,"value":921},"; a question's prompt, ",{"type":26,"tag":40,"props":923,"children":925},{"className":924},[],[926],{"type":35,"value":762},{"type":35,"value":928}," and choices, keeping the step it verifies unless it says ",{"type":26,"tag":40,"props":930,"children":932},{"className":931},[],[933],{"type":35,"value":755},{"type":35,"value":935},". Write one for every step or question that tells the finding (what happened on this machine, advice that depends on whether the thing was blocked); the rest read as written. Use only the slots the library fills (",{"type":26,"tag":40,"props":937,"children":939},{"className":938},[],[940],{"type":35,"value":941},"library.ts",{"type":35,"value":557},{"type":26,"tag":40,"props":944,"children":946},{"className":945},[],[947],{"type":35,"value":948},"librarySlots",{"type":35,"value":950},": the reader, the policy and its configuration). The preview page says how a training reads on its own and what it still leaves out",{"type":26,"tag":27,"props":952,"children":953},{},[954,956,962,964,970,971,977],{"type":35,"value":955},"Quote a frontmatter value that starts with ",{"type":26,"tag":40,"props":957,"children":959},{"className":958},[],[960],{"type":35,"value":961},"{",{"type":35,"value":963}," or holds ",{"type":26,"tag":40,"props":965,"children":967},{"className":966},[],[968],{"type":35,"value":969},": ",{"type":35,"value":141},{"type":26,"tag":40,"props":972,"children":974},{"className":973},[],[975],{"type":35,"value":976},"owner: \"{owner}\"",{"type":35,"value":978},"). HTML comments are the author's notes and never reach the person. The body's lines are plain text: no emphasis, no links, no lists in a step.",{"type":26,"tag":64,"props":980,"children":982},{"id":981},"slots",[983],{"type":35,"value":18},{"type":26,"tag":27,"props":985,"children":986},{},[987,989,995,997,1003,1005,1010,1012,1017],{"type":35,"value":988},"A training is written once and filled from the finding (plan §Patterns). ",{"type":26,"tag":40,"props":990,"children":992},{"className":991},[],[993],{"type":35,"value":994},"{name}",{"type":35,"value":996}," stays as written in the file and in the API; the lab fills it from the world in ",{"type":26,"tag":40,"props":998,"children":1000},{"className":999},[],[1001],{"type":35,"value":1002},"app\u002Fdata\u002Ftrainings\u002Fslots.ts",{"type":35,"value":1004},"; an app fills it from its own finding (",{"type":26,"tag":40,"props":1006,"children":1008},{"className":1007},[],[1009],{"type":35,"value":155},{"type":35,"value":1011}," §Slots). A slot the finding's kind does not provide stays visible as ",{"type":26,"tag":40,"props":1013,"children":1015},{"className":1014},[],[1016],{"type":35,"value":994},{"type":35,"value":1018},", and the preview page names it.",{"type":26,"tag":185,"props":1020,"children":1021},{},[1022,1042],{"type":26,"tag":189,"props":1023,"children":1024},{},[1025],{"type":26,"tag":193,"props":1026,"children":1027},{},[1028,1032,1037],{"type":26,"tag":197,"props":1029,"children":1030},{},[1031],{"type":35,"value":18},{"type":26,"tag":197,"props":1033,"children":1034},{},[1035],{"type":35,"value":1036},"Read from",{"type":26,"tag":197,"props":1038,"children":1039},{},[1040],{"type":35,"value":1041},"For",{"type":26,"tag":221,"props":1043,"children":1044},{},[1045,1134,1162],{"type":26,"tag":193,"props":1046,"children":1047},{},[1048,1124,1129],{"type":26,"tag":228,"props":1049,"children":1050},{},[1051,1057,1058,1064,1065,1070,1071,1076,1077,1082,1083,1089,1090,1096,1097,1103,1104,1110,1111,1117,1118],{"type":26,"tag":40,"props":1052,"children":1054},{"className":1053},[],[1055],{"type":35,"value":1056},"date",{"type":35,"value":557},{"type":26,"tag":40,"props":1059,"children":1061},{"className":1060},[],[1062],{"type":35,"value":1063},"time",{"type":35,"value":557},{"type":26,"tag":40,"props":1066,"children":1068},{"className":1067},[],[1069],{"type":35,"value":410},{"type":35,"value":557},{"type":26,"tag":40,"props":1072,"children":1074},{"className":1073},[],[1075],{"type":35,"value":396},{"type":35,"value":557},{"type":26,"tag":40,"props":1078,"children":1080},{"className":1079},[],[1081],{"type":35,"value":403},{"type":35,"value":557},{"type":26,"tag":40,"props":1084,"children":1086},{"className":1085},[],[1087],{"type":35,"value":1088},"person",{"type":35,"value":557},{"type":26,"tag":40,"props":1091,"children":1093},{"className":1092},[],[1094],{"type":35,"value":1095},"session",{"type":35,"value":557},{"type":26,"tag":40,"props":1098,"children":1100},{"className":1099},[],[1101],{"type":35,"value":1102},"evidence",{"type":35,"value":557},{"type":26,"tag":40,"props":1105,"children":1107},{"className":1106},[],[1108],{"type":35,"value":1109},"policy",{"type":35,"value":557},{"type":26,"tag":40,"props":1112,"children":1114},{"className":1113},[],[1115],{"type":35,"value":1116},"owner",{"type":35,"value":557},{"type":26,"tag":40,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":35,"value":1123},"resource",{"type":26,"tag":228,"props":1125,"children":1126},{},[1127],{"type":35,"value":1128},"the finding, its session, its policy, the policy's last human change",{"type":26,"tag":228,"props":1130,"children":1131},{},[1132],{"type":35,"value":1133},"every training",{"type":26,"tag":193,"props":1135,"children":1136},{},[1137,1146,1158],{"type":26,"tag":228,"props":1138,"children":1139},{},[1140],{"type":26,"tag":40,"props":1141,"children":1143},{"className":1142},[],[1144],{"type":35,"value":1145},"minutesWord",{"type":26,"tag":228,"props":1147,"children":1148},{},[1149,1151,1156],{"type":35,"value":1150},"the training's ",{"type":26,"tag":40,"props":1152,"children":1154},{"className":1153},[],[1155],{"type":35,"value":440},{"type":35,"value":1157}," (\"three-minute\")",{"type":26,"tag":228,"props":1159,"children":1160},{},[1161],{"type":35,"value":1133},{"type":26,"tag":193,"props":1163,"children":1164},{},[1165,1209,1214],{"type":26,"tag":228,"props":1166,"children":1167},{},[1168,1174,1175,1181,1182,1188,1189,1195,1196,1202,1203],{"type":26,"tag":40,"props":1169,"children":1171},{"className":1170},[],[1172],{"type":35,"value":1173},"server",{"type":35,"value":557},{"type":26,"tag":40,"props":1176,"children":1178},{"className":1177},[],[1179],{"type":35,"value":1180},"sanctioned",{"type":35,"value":557},{"type":26,"tag":40,"props":1183,"children":1185},{"className":1184},[],[1186],{"type":35,"value":1187},"exceptionTeam",{"type":35,"value":557},{"type":26,"tag":40,"props":1190,"children":1192},{"className":1191},[],[1193],{"type":35,"value":1194},"exceptionSentence",{"type":35,"value":557},{"type":26,"tag":40,"props":1197,"children":1199},{"className":1198},[],[1200],{"type":35,"value":1201},"outcome",{"type":35,"value":557},{"type":26,"tag":40,"props":1204,"children":1206},{"className":1205},[],[1207],{"type":35,"value":1208},"blocked",{"type":26,"tag":228,"props":1210,"children":1211},{},[1212],{"type":35,"value":1213},"the MCP-server finding, the policy's sanctioned list (c121 configuration), the team exception that allows the server elsewhere",{"type":26,"tag":228,"props":1215,"children":1216},{},[1217],{"type":35,"value":1218},"MCP servers (T-MCP-1)",{"type":26,"tag":27,"props":1220,"children":1221},{},[1222,1224,1230,1232,1238,1240,1246,1248,1254,1255,1261,1263,1268],{"type":35,"value":1223},"A new hazard adds its kind's slots to ",{"type":26,"tag":40,"props":1225,"children":1227},{"className":1226},[],[1228],{"type":35,"value":1229},"KIND_SLOTS",{"type":35,"value":1231}," in ",{"type":26,"tag":40,"props":1233,"children":1235},{"className":1234},[],[1236],{"type":35,"value":1237},"slots.ts",{"type":35,"value":1239}," (keyed by the finding's ",{"type":26,"tag":40,"props":1241,"children":1243},{"className":1242},[],[1244],{"type":35,"value":1245},"resource.kind",{"type":35,"value":1247},") and its words in a file. Phase 4 adds the kinds ",{"type":26,"tag":40,"props":1249,"children":1251},{"className":1250},[],[1252],{"type":35,"value":1253},"account",{"type":35,"value":818},{"type":26,"tag":40,"props":1256,"children":1258},{"className":1257},[],[1259],{"type":35,"value":1260},"dataClass",{"type":35,"value":1262},"; their slots are listed in the review notes and in ",{"type":26,"tag":40,"props":1264,"children":1266},{"className":1265},[],[1267],{"type":35,"value":1237},{"type":35,"value":165},{"type":26,"tag":27,"props":1270,"children":1271},{},[1272,1274,1280,1282,1288,1289,1295,1296,1302,1303,1308,1309,1314,1316,1321,1322,1327],{"type":35,"value":1273},"When a policy's findings share a kind with another policy's but the kind's slots would say the wrong thing, the policy keys its own in ",{"type":26,"tag":40,"props":1275,"children":1277},{"className":1276},[],[1278],{"type":35,"value":1279},"POLICY_SLOTS",{"type":35,"value":1281},", which wins over the kind. The first (2026-11-12, T-INJECT-1 for c144 S1) is P-PROMPT-INSPECT, whose finding names the MCP server the content came through: ",{"type":26,"tag":40,"props":1283,"children":1285},{"className":1284},[],[1286],{"type":35,"value":1287},"via",{"type":35,"value":345},{"type":26,"tag":40,"props":1290,"children":1292},{"className":1291},[],[1293],{"type":35,"value":1294},"heuristics",{"type":35,"value":345},{"type":26,"tag":40,"props":1297,"children":1299},{"className":1298},[],[1300],{"type":35,"value":1301},"heuristicsOffSentence",{"type":35,"value":345},{"type":26,"tag":40,"props":1304,"children":1306},{"className":1305},[],[1307],{"type":35,"value":1201},{"type":35,"value":345},{"type":26,"tag":40,"props":1310,"children":1312},{"className":1311},[],[1313],{"type":35,"value":1208},{"type":35,"value":1315},". The library fills ",{"type":26,"tag":40,"props":1317,"children":1319},{"className":1318},[],[1320],{"type":35,"value":1294},{"type":35,"value":818},{"type":26,"tag":40,"props":1323,"children":1325},{"className":1324},[],[1326],{"type":35,"value":1301},{"type":35,"value":1328}," from the policy's configuration.",{"type":26,"tag":27,"props":1330,"children":1331},{},[1332],{"type":35,"value":1333},"Four more followed on 2026-11-13, for the trainings c144's wave 1 wanted:",{"type":26,"tag":1335,"props":1336,"children":1337},"ul",{},[1338,1392,1430,1454],{"type":26,"tag":1339,"props":1340,"children":1341},"li",{},[1342,1344,1350,1351,1357,1358,1364,1365,1370,1371,1376,1378,1383,1385,1391],{"type":35,"value":1343},"P-PROVIDERS: ",{"type":26,"tag":40,"props":1345,"children":1347},{"className":1346},[],[1348],{"type":35,"value":1349},"provider",{"type":35,"value":345},{"type":26,"tag":40,"props":1352,"children":1354},{"className":1353},[],[1355],{"type":35,"value":1356},"approved",{"type":35,"value":345},{"type":26,"tag":40,"props":1359,"children":1361},{"className":1360},[],[1362],{"type":35,"value":1363},"providerGot",{"type":35,"value":345},{"type":26,"tag":40,"props":1366,"children":1368},{"className":1367},[],[1369],{"type":35,"value":1201},{"type":35,"value":345},{"type":26,"tag":40,"props":1372,"children":1374},{"className":1373},[],[1375],{"type":35,"value":1208},{"type":35,"value":1377}," (its kind, ",{"type":26,"tag":40,"props":1379,"children":1381},{"className":1380},[],[1382],{"type":35,"value":1349},{"type":35,"value":1384},", is shared with P-SPEND's ",{"type":26,"tag":40,"props":1386,"children":1388},{"className":1387},[],[1389],{"type":35,"value":1390},"spend",{"type":35,"value":62},{"type":26,"tag":1339,"props":1393,"children":1394},{},[1395,1397,1403,1404,1410,1411,1417,1418,1423,1424,1429],{"type":35,"value":1396},"P-PROVENANCE: ",{"type":26,"tag":40,"props":1398,"children":1400},{"className":1399},[],[1401],{"type":35,"value":1402},"component",{"type":35,"value":345},{"type":26,"tag":40,"props":1405,"children":1407},{"className":1406},[],[1408],{"type":35,"value":1409},"pinned",{"type":35,"value":345},{"type":26,"tag":40,"props":1412,"children":1414},{"className":1413},[],[1415],{"type":35,"value":1416},"pinnedSentence",{"type":35,"value":345},{"type":26,"tag":40,"props":1419,"children":1421},{"className":1420},[],[1422],{"type":35,"value":1201},{"type":35,"value":345},{"type":26,"tag":40,"props":1425,"children":1427},{"className":1426},[],[1428],{"type":35,"value":1208},{"type":35,"value":165},{"type":26,"tag":1339,"props":1431,"children":1432},{},[1433,1435,1441,1442,1447,1448,1453],{"type":35,"value":1434},"P-TOOL-APPROVAL: ",{"type":26,"tag":40,"props":1436,"children":1438},{"className":1437},[],[1439],{"type":35,"value":1440},"tool",{"type":35,"value":345},{"type":26,"tag":40,"props":1443,"children":1445},{"className":1444},[],[1446],{"type":35,"value":1201},{"type":35,"value":345},{"type":26,"tag":40,"props":1449,"children":1451},{"className":1450},[],[1452],{"type":35,"value":1208},{"type":35,"value":165},{"type":26,"tag":1339,"props":1455,"children":1456},{},[1457,1459,1465,1466,1472,1473,1478,1479,1484],{"type":35,"value":1458},"P-SPEND: ",{"type":26,"tag":40,"props":1460,"children":1462},{"className":1461},[],[1463],{"type":35,"value":1464},"ceiling",{"type":35,"value":345},{"type":26,"tag":40,"props":1467,"children":1469},{"className":1468},[],[1470],{"type":35,"value":1471},"ceilings",{"type":35,"value":345},{"type":26,"tag":40,"props":1474,"children":1476},{"className":1475},[],[1477],{"type":35,"value":1201},{"type":35,"value":345},{"type":26,"tag":40,"props":1480,"children":1482},{"className":1481},[],[1483],{"type":35,"value":1208},{"type":35,"value":165},{"type":26,"tag":27,"props":1486,"children":1487},{},[1488,1490,1496,1498,1503,1505,1511],{"type":35,"value":1489},"The slots a policy's configuration alone fills (the approved list, the pinned list, the ceilings, the heuristics) are ",{"type":26,"tag":40,"props":1491,"children":1493},{"className":1492},[],[1494],{"type":35,"value":1495},"POLICY_CONFIG_SLOTS",{"type":35,"value":1497},". The library reads that map for any policy in ",{"type":26,"tag":40,"props":1499,"children":1501},{"className":1500},[],[1502],{"type":35,"value":1279},{"type":35,"value":1504},", so a new policy with no finding to fill from adds one entry there. A scene that names the finding's own thing (the provider, the skill, the tool) names it in general when the slot is missing, and leaves that slot out of its ",{"type":26,"tag":40,"props":1506,"children":1508},{"className":1507},[],[1509],{"type":35,"value":1510},"reads",{"type":35,"value":1512},", so the library keeps the step.",{"type":26,"tag":27,"props":1514,"children":1515},{},[1516,1518,1524,1526,1532,1533,1539,1541,1547],{"type":35,"value":1517},"A training's contact, ",{"type":26,"tag":40,"props":1519,"children":1521},{"className":1520},[],[1522],{"type":35,"value":1523},"{owner}",{"type":35,"value":1525},", is the last person to change the policy. Change actors that are not people are skipped: ",{"type":26,"tag":40,"props":1527,"children":1529},{"className":1528},[],[1530],{"type":35,"value":1531},"qdash",{"type":35,"value":345},{"type":26,"tag":40,"props":1534,"children":1536},{"className":1535},[],[1537],{"type":35,"value":1538},"clock",{"type":35,"value":1540},", and c144's ",{"type":26,"tag":40,"props":1542,"children":1544},{"className":1543},[],[1545],{"type":35,"value":1546},"Theatre",{"type":35,"value":165},{"type":26,"tag":64,"props":1549,"children":1551},{"id":1550},"scenes",[1552],{"type":35,"value":19},{"type":26,"tag":27,"props":1554,"children":1555},{},[1556,1561,1563,1569,1571,1577,1579,1585,1587,1593,1595,1601,1603,1609],{"type":26,"tag":31,"props":1557,"children":1558},{},[1559],{"type":35,"value":1560},"Decision (Phase 3):",{"type":35,"value":1562}," a scene stays a component, one file per scene, in a catalogue. Each drawing is ",{"type":26,"tag":40,"props":1564,"children":1566},{"className":1565},[],[1567],{"type":35,"value":1568},"app\u002Fcomponents\u002Ftraining\u002Fscenes\u002F\u003CName>.vue",{"type":35,"value":1570},", catalogued in ",{"type":26,"tag":40,"props":1572,"children":1574},{"className":1573},[],[1575],{"type":35,"value":1576},"app\u002Fdata\u002Ftrainings\u002Fscenes.ts",{"type":35,"value":1578}," under a kebab-case name that says what the picture shows (",{"type":26,"tag":40,"props":1580,"children":1582},{"className":1581},[],[1583],{"type":35,"value":1584},"sanctioned-list",{"type":35,"value":1586},", not ",{"type":26,"tag":40,"props":1588,"children":1590},{"className":1589},[],[1591],{"type":35,"value":1592},"step-3",{"type":35,"value":1594},"), with the training that drew it (",{"type":26,"tag":40,"props":1596,"children":1598},{"className":1597},[],[1599],{"type":35,"value":1600},"from",{"type":35,"value":1602},"), the slots it reads and whether it moves. ",{"type":26,"tag":40,"props":1604,"children":1606},{"className":1605},[],[1607],{"type":35,"value":1608},"Scene.vue",{"type":35,"value":1610}," frames it (the sunken card and the caption) and maps the name to the drawing; a catalogued scene without a drawing is a type error, and a file that names a scene the catalogue lacks is drawn as a dashed placeholder and flagged on the preview page.",{"type":26,"tag":27,"props":1612,"children":1613},{},[1614],{"type":35,"value":1615},"Why a component and not an asset file: the scenes read the finding (the server's name, the team, the owner, the sanctioned list, the account) and the theme's tokens, so the same drawing is true for every finding of its kind and in light and dark. An exported SVG or an animation file can do neither.",{"type":26,"tag":1335,"props":1617,"children":1618},{},[1619,1647,1696,1730,1748],{"type":26,"tag":1339,"props":1620,"children":1621},{},[1622,1627,1629,1637,1638,1645],{"type":26,"tag":31,"props":1623,"children":1624},{},[1625],{"type":35,"value":1626},"Inspiration:",{"type":35,"value":1628}," Rob Genova's informational drawings in ",{"type":26,"tag":159,"props":1630,"children":1634},{"href":1631,"rel":1632},"https:\u002F\u002Fqpoint.io\u002Fblog\u002Fthe-hidden-agent-surface",[1633],"nofollow",[1635],{"type":35,"value":1636},"The Hidden Agent Surface",{"type":35,"value":818},{"type":26,"tag":159,"props":1639,"children":1642},{"href":1640,"rel":1641},"https:\u002F\u002Fqpoint.io\u002Fblog\u002Fyour-agents-need-a-dynamic-sandbox",[1633],[1643],{"type":35,"value":1644},"Your Agents Need a Dynamic Sandbox",{"type":35,"value":1646}," (named by Mark, 2026-11-12). Each makes one idea per drawing: flat, labelled, the pixel agent pawn, an attempt as an arrow ending in what happened. Look at them before drawing a new scene. All twelve current scenes are drawn together at the bottom of the preview page.",{"type":26,"tag":1339,"props":1648,"children":1649},{},[1650,1655,1657,1663,1664,1670,1672,1678,1680,1686,1688,1694],{"type":26,"tag":31,"props":1651,"children":1652},{},[1653],{"type":35,"value":1654},"The cast:",{"type":35,"value":1656}," the layer's pixel pawns (",{"type":26,"tag":40,"props":1658,"children":1660},{"className":1659},[],[1661],{"type":35,"value":1662},"AgentPawn",{"type":35,"value":345},{"type":26,"tag":40,"props":1665,"children":1667},{"className":1666},[],[1668],{"type":35,"value":1669},"EndpointPawn",{"type":35,"value":1671},", and the rest; art through ",{"type":26,"tag":40,"props":1673,"children":1675},{"className":1674},[],[1676],{"type":35,"value":1677},"\u003Cimg>",{"type":35,"value":1679},", never ",{"type":26,"tag":40,"props":1681,"children":1683},{"className":1682},[],[1684],{"type":35,"value":1685},"UxIcon",{"type":35,"value":1687},") and the sketch kit (",{"type":26,"tag":40,"props":1689,"children":1691},{"className":1690},[],[1692],{"type":35,"value":1693},"SketchBox",{"type":35,"value":1695},", its kinds and tones). New art per lesson is the exception, not the rule (D7, plan §Patterns).",{"type":26,"tag":1339,"props":1697,"children":1698},{},[1699,1704,1706,1712,1714,1720,1722,1728],{"type":26,"tag":31,"props":1700,"children":1701},{},[1702],{"type":35,"value":1703},"Motion:",{"type":35,"value":1705}," one kind, the flow along ",{"type":26,"tag":40,"props":1707,"children":1709},{"className":1708},[],[1710],{"type":35,"value":1711},"TrainingFlowArrow",{"type":35,"value":1713}," (dashes moving along the line), switched on per step with ",{"type":26,"tag":40,"props":1715,"children":1717},{"className":1716},[],[1718],{"type":35,"value":1719},"animated: yes",{"type":35,"value":1721},". It stops under ",{"type":26,"tag":40,"props":1723,"children":1725},{"className":1724},[],[1726],{"type":35,"value":1727},"prefers-reduced-motion",{"type":35,"value":1729},". A new motion goes behind the same media query, inside the scene's own scoped style, or it does not ship.",{"type":26,"tag":1339,"props":1731,"children":1732},{},[1733,1738,1740,1746],{"type":26,"tag":31,"props":1734,"children":1735},{},[1736],{"type":35,"value":1737},"Shared scenes:",{"type":35,"value":1739}," a scene any training can use says ",{"type":26,"tag":40,"props":1741,"children":1743},{"className":1742},[],[1744],{"type":35,"value":1745},"from: 'shared'",{"type":35,"value":1747},"; reuse one before drawing another.",{"type":26,"tag":1339,"props":1749,"children":1750},{},[1751,1756,1758,1764,1766,1771],{"type":26,"tag":31,"props":1752,"children":1753},{},[1754],{"type":35,"value":1755},"Hand-drawn art",{"type":35,"value":1757}," (Mark's drawings may replace a sketch, CLAUDE.md c130): the file goes in ",{"type":26,"tag":40,"props":1759,"children":1761},{"className":1760},[],[1762],{"type":35,"value":1763},"public\u002Ftrainings\u002F\u003Cslug>\u002F\u003Cscene>.svg",{"type":35,"value":1765}," and a scene component shows it as an ",{"type":26,"tag":40,"props":1767,"children":1769},{"className":1768},[],[1770],{"type":35,"value":1677},{"type":35,"value":1772}," with the step's alt, so the catalogue stays the one index of scenes. None exists yet.",{"type":26,"tag":64,"props":1774,"children":1776},{"id":1775},"voice",[1777],{"type":35,"value":20},{"type":26,"tag":27,"props":1779,"children":1780},{},[1781,1783,1789,1791,1797,1799,1805,1807,1813,1815,1821],{"type":35,"value":1782},"Every sentence goes through the brand MCP's ",{"type":26,"tag":40,"props":1784,"children":1786},{"className":1785},[],[1787],{"type":35,"value":1788},"check-brand-voice",{"type":35,"value":1790}," (context ",{"type":26,"tag":40,"props":1792,"children":1794},{"className":1793},[],[1795],{"type":35,"value":1796},"productUI",{"type":35,"value":1798},") with zero violations before the file is committed: the file as written and filled for at least one real finding. The preview page reruns the same rules (",{"type":26,"tag":40,"props":1800,"children":1802},{"className":1801},[],[1803],{"type":35,"value":1804},"app\u002Fdata\u002Ftrainings\u002Fvoice.ts",{"type":35,"value":1806},", mirrored from ",{"type":26,"tag":40,"props":1808,"children":1810},{"className":1809},[],[1811],{"type":35,"value":1812},"mcp\u002Fsrc\u002Ftools.ts",{"type":35,"value":1814},") on the file and on every finding of its policy, so a later edit cannot slip a violation in unseen. The register: a safety briefing, not a reprimand (R6); the brand's essential guide (",{"type":26,"tag":40,"props":1816,"children":1818},{"className":1817},[],[1819],{"type":35,"value":1820},"brand\u002Fqpoint_brand_essential_guide_v1.5.md",{"type":35,"value":1822},"): plain, precise, no hype, no em dashes.",{"type":26,"tag":64,"props":1824,"children":1826},{"id":1825},"what-the-parser-refuses",[1827],{"type":35,"value":21},{"type":26,"tag":27,"props":1829,"children":1830},{},[1831],{"type":35,"value":1832},"A file is withheld, with the reason, when: an id, slug, policy, lang or version is malformed; the title is over 40 characters; minutes are outside one to three; contact is missing; a section is missing; a step has no id, scene, alt or paragraph, has more than three paragraphs, or a list; there are fewer than three or more than five steps or questions; no step says what to do instead; a question has no step, names a step the lesson lacks, has no explain, has a paragraph, has fewer than two or more than four choices, or not exactly one right; two steps or two questions share an id; the folder or file name disagrees with the frontmatter; a library entry has no id, names an id the lesson and the check lack, appears twice, or breaks the grammar of the step or question it replaces; a file has both a policy and a topic, or neither, or a topic whose id isn't kebab-case or whose label is missing or over 40 characters.",{"type":26,"tag":1834,"props":1835,"children":1836},"style",{},[1837],{"type":35,"value":177},1794599293144]