[{"data":1,"prerenderedAt":467},["ShallowReactive",2],{"$fERFy8zCMGmbheEU9eRQkOEXi9tmObFHUv5KucRc8oSA":3},{"newThing":4,"project":5,"cycle":8,"sections":24,"threads":458,"otherDocs":459,"documents":461,"images":464,"archiveItems":465,"links":466},null,{"id":6,"label":7,"liveBase":4},"qnative","Qnative (provisional)",{"id":9,"num":10,"dir":11,"name":12,"title":13,"focus":14,"status":15,"statusNote":16,"created":17,"completed":4,"mode":18,"report":4,"recordless":19,"thumbnail":4,"imageCount":20,"artifactCount":21,"lastActivity":22,"hasPickup":19,"hasInitialPrompt":23},"c9",9,"c9.trainings","trainings","Trainings","design c133's remediation trainings taken in the native app, launched from the inbox's training assignments.","active","opened 2026-11-12 from Mark's words, half an hour before a demo — answers `design:c133` D5 and `design:c137` D8; first slice built the same evening: the four published trainings in the app, launched from the inbox","2026-11-12","assemblage (c133's published trainings, c137's training-assignment message, c4's inbox, put together).",false,0,1,"2026-11-13",true,[25,48,393,406],{"key":26,"title":27,"empty":19,"ast":28},"why","Why",{"type":29,"children":30},"root",[31],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36,39,46],{"type":37,"value":38},"text","The inbox already carried a training assignment (bones.md's E7, Secrets in prompts) with a Start training button, but the button said \"not on this build yet\". c133 has four published trainings, voice-checked, served at the design site's ",{"type":32,"tag":40,"props":41,"children":43},"code",{"className":42},[],[44],{"type":37,"value":45},"\u002Fapi\u002Ftrainings",{"type":37,"value":47},". The demo needed the loop closed: a message arrives, the person takes the training in the app, the check, the result.",{"key":49,"title":50,"empty":19,"ast":51},"key-changes","Key Changes",{"type":29,"children":52},[53],{"type":32,"tag":54,"props":55,"children":56},"ul",{},[57,329],{"type":32,"tag":58,"props":59,"children":60},"li",{},[61,67],{"type":32,"tag":62,"props":63,"children":64},"strong",{},[65],{"type":37,"value":66},"The first slice (2026-11-12, before the demo):",{"type":32,"tag":54,"props":68,"children":69},{},[70,112,137,178,195,213,263,281],{"type":32,"tag":58,"props":71,"children":72},{},[73,78,80,86,88,94,96,102,104,110],{"type":32,"tag":62,"props":74,"children":75},{},[76],{"type":37,"value":77},"The content",{"type":37,"value":79}," (",{"type":32,"tag":40,"props":81,"children":83},{"className":82},[],[84],{"type":37,"value":85},"crates\u002Ffixtures\u002Ftrainings\u002F",{"type":37,"value":87},"): the four published trainings, filled for this app by ",{"type":32,"tag":40,"props":89,"children":91},{"className":90},[],[92],{"type":37,"value":93},"scripts\u002Fsync-trainings.py",{"type":37,"value":95}," from design's ",{"type":32,"tag":40,"props":97,"children":99},{"className":98},[],[100],{"type":37,"value":101},"\u002Fapi\u002Ftrainings\u002F\u003Cid>",{"type":37,"value":103}," with the slot values in ",{"type":32,"tag":40,"props":105,"children":107},{"className":106},[],[108],{"type":37,"value":109},"slots.json",{"type":37,"value":111}," (read from the design lab's governance world: a policy's training on its first finding, the topic on its own as User A). Nothing unfilled. Design stays the source: edit the markdown there, run the script.",{"type":32,"tag":58,"props":113,"children":114},{},[115,120,121,127,129,135],{"type":32,"tag":62,"props":116,"children":117},{},[118],{"type":37,"value":119},"The types",{"type":37,"value":79},{"type":32,"tag":40,"props":122,"children":124},{"className":123},[],[125],{"type":37,"value":126},"crates\u002Ftypes\u002Fsrc\u002Ftraining.rs",{"type":37,"value":128},"): design's ",{"type":32,"tag":40,"props":130,"children":132},{"className":131},[],[133],{"type":37,"value":134},"Training",{"type":37,"value":136},", the fields the view draws.",{"type":32,"tag":58,"props":138,"children":139},{},[140,145,146,152,154,160,162,168,170,176],{"type":32,"tag":62,"props":141,"children":142},{},[143],{"type":37,"value":144},"The inbox",{"type":37,"value":79},{"type":32,"tag":40,"props":147,"children":149},{"className":148},[],[150],{"type":37,"value":151},"crates\u002Ffixtures\u002Fmessages\u002Ftraining-assignments.json",{"type":37,"value":153},"): three more training assignments beside E7, one per training (unapproved MCP servers, personal accounts for work, Observe and Enforce), shaped like E7, in ",{"type":32,"tag":40,"props":155,"children":157},{"className":156},[],[158],{"type":37,"value":159},"pilot",{"type":37,"value":161}," and ",{"type":32,"tag":40,"props":163,"children":165},{"className":164},[],[166],{"type":37,"value":167},"connected",{"type":37,"value":169},". ",{"type":32,"tag":40,"props":171,"children":173},{"className":172},[],[174],{"type":37,"value":175},"examples()",{"type":37,"value":177}," stays bones.md's ten; the store's and fixtures' world counts updated (pilot 13, connected 12, threads 12).",{"type":32,"tag":58,"props":179,"children":180},{},[181,186,187,193],{"type":32,"tag":62,"props":182,"children":183},{},[184],{"type":37,"value":185},"The view",{"type":37,"value":79},{"type":32,"tag":40,"props":188,"children":190},{"className":189},[],[191],{"type":37,"value":192},"crates\u002Fapp\u002Fsrc\u002Fpages\u002Ftraining.rs",{"type":37,"value":194},"): Start training opens the training in the inbox's place: the lesson a step at a time (the illustration as its alt text until the scenes are drawn natively), then the check a question at a time with the right answer and the explanation, then the result. Done marks the message done and says completion is recorded (nothing is sent on this build; the record is c133's, the plane's side c134's).",{"type":32,"tag":58,"props":196,"children":197},{},[198,203,205,211],{"type":32,"tag":62,"props":199,"children":200},{},[201],{"type":37,"value":202},"Rebuilt to the design pages (2026-11-12, minutes later, Mark: \"it looks much more like the tour guide, we do want to replicate the training & quizes as constituted in the design pages\"):",{"type":37,"value":204}," the view now follows the lab mock (",{"type":32,"tag":40,"props":206,"children":208},{"className":207},[],[209],{"type":37,"value":210},"app\u002Fpages\u002Fpages\u002Fphase4\u002Fmock\u002Ftraining.vue",{"type":37,"value":212},"): the progress (Assignment · Lesson · Check · Result · Record, the assignment done), the lede naming the policy and the machine, the lesson with its scene beside the text, Back and Next, the step pills; the check as one page of numbered questions with radio choices and \"Check my answers\"; All right with what each answer rests on and the record before it is written, then \"Finish and record\"; Not yet with \"Reread step N\" per missed question and \"Retake the check\" (right answers stay); Recorded. The scenes are framed placeholders carrying their alt text: drawing the sixteen SVG scenes natively is the next port.",{"type":32,"tag":58,"props":214,"children":215},{},[216,221,223,229,231,237,239,245,247,253,255,261],{"type":32,"tag":62,"props":217,"children":218},{},[219],{"type":37,"value":220},"The scenes (2026-11-12, Mark: \"I think we need to implement the scenes, no?\"):",{"type":37,"value":222}," each lesson step now shows its scene as the lab draws it. Design's ",{"type":32,"tag":40,"props":224,"children":226},{"className":225},[],[227],{"type":37,"value":228},"scripts\u002Fexport-training-scenes.mjs",{"type":37,"value":230}," drives the lab's training mock (each training on its fixture's finding, the topic from the library) one step at a time, with motion reduced, and screenshots each scene's figure at 2x in light and dark, border and caption off: 32 PNGs (about 1 MB) in ",{"type":32,"tag":40,"props":232,"children":234},{"className":233},[],[235],{"type":37,"value":236},"crates\u002Ffixtures\u002Ftrainings\u002Fscenes\u002F",{"type":37,"value":238},", indexed by the generated ",{"type":32,"tag":40,"props":240,"children":242},{"className":241},[],[243],{"type":37,"value":244},"crates\u002Ffixtures\u002Fsrc\u002Ftraining_scenes.rs",{"type":37,"value":246},". The view draws the image on the same sunken surface with the alt text as the caption, as ",{"type":32,"tag":40,"props":248,"children":250},{"className":249},[],[251],{"type":37,"value":252},"Scene.vue",{"type":37,"value":254}," does, and follows the app's appearance. The lesson's two columns no longer squeeze the text (",{"type":32,"tag":40,"props":256,"children":258},{"className":257},[],[259],{"type":37,"value":260},"min_w(0)",{"type":37,"value":262}," on both). Still owed: the motion (the flow arrows hold still), and drawing the scenes natively from qguikit's pawns so the text in them can be selected and the files go.",{"type":32,"tag":58,"props":264,"children":265},{},[266,271,273,279],{"type":32,"tag":62,"props":267,"children":268},{},[269],{"type":37,"value":270},"The quiz wording",{"type":37,"value":272}," (design, same day): an editorial pass on all sixteen questions, so the app carries the clearer wording (design ",{"type":32,"tag":40,"props":274,"children":276},{"className":275},[],[277],{"type":37,"value":278},"6b240395ff",{"type":37,"value":280},").",{"type":32,"tag":58,"props":282,"children":283},{},[284,289,291,297,299,305,306,312,314,320,322,327],{"type":32,"tag":62,"props":285,"children":286},{},[287],{"type":37,"value":288},"Checked:",{"type":37,"value":290}," ",{"type":32,"tag":40,"props":292,"children":294},{"className":293},[],[295],{"type":37,"value":296},"types",{"type":37,"value":298},", ",{"type":32,"tag":40,"props":300,"children":302},{"className":301},[],[303],{"type":37,"value":304},"fixtures",{"type":37,"value":161},{"type":32,"tag":40,"props":307,"children":309},{"className":308},[],[310],{"type":37,"value":311},"messages",{"type":37,"value":313}," tests pass; the app builds with ",{"type":32,"tag":40,"props":315,"children":317},{"className":316},[],[318],{"type":37,"value":319},"--features dev",{"type":37,"value":321},"; run on ",{"type":32,"tag":40,"props":323,"children":325},{"className":324},[],[326],{"type":37,"value":159},{"type":37,"value":328},", its guide server reads the inbox with the new assignments. The click-through itself was not driven by an agent (computer use cannot reach a bare debug binary): no story yet.",{"type":32,"tag":58,"props":330,"children":331},{},[332,345,347,353,355,361,363,368,370,376,378,384,386,391],{"type":32,"tag":62,"props":333,"children":334},{},[335,337,343],{"type":37,"value":336},"T-INJECT-1 for design c144's S1 (2026-11-13, ",{"type":32,"tag":40,"props":338,"children":340},{"className":339},[],[341],{"type":37,"value":342},"32c9b03",{"type":37,"value":344},"):",{"type":37,"value":346}," the fifth training, ",{"type":32,"tag":348,"props":349,"children":350},"em",{},[351],{"type":37,"value":352},"Instructions hidden in content",{"type":37,"value":354}," (P-PROMPT-INSPECT, design ",{"type":32,"tag":40,"props":356,"children":358},{"className":357},[],[359],{"type":37,"value":360},"99865de0b0",{"type":37,"value":362},"), is bundled and filled for S1's own finding, ",{"type":32,"tag":348,"props":364,"children":365},{},[366],{"type":37,"value":367},"Phishing for financial records",{"type":37,"value":369},". Its four scenes are in light and dark. The simulation's replay step and its native scene page (",{"type":32,"tag":40,"props":371,"children":373},{"className":372},[],[374],{"type":37,"value":375},"d94716f",{"type":37,"value":377},") read it. Priya's laptop is ",{"type":32,"tag":40,"props":379,"children":381},{"className":380},[],[382],{"type":37,"value":383},"priya-x1",{"type":37,"value":385}," in T-SECRETS-1 and ",{"type":32,"tag":40,"props":387,"children":389},{"className":388},[],[390],{"type":37,"value":109},{"type":37,"value":392},", the qdash seed's name (c132 D6).",{"key":394,"title":395,"empty":19,"ast":396},"outcome","Outcome",{"type":29,"children":397},[398],{"type":32,"tag":33,"props":399,"children":400},{},[401],{"type":32,"tag":348,"props":402,"children":403},{},[404],{"type":37,"value":405},"Open.",{"key":407,"title":408,"empty":19,"ast":409},"extra","Next",{"type":29,"children":410},[411],{"type":32,"tag":54,"props":412,"children":413},{},[414,427,440,445],{"type":32,"tag":58,"props":415,"children":416},{},[417,419,425],{"type":37,"value":418},"The port measured (",{"type":32,"tag":40,"props":420,"children":422},{"className":421},[],[423],{"type":37,"value":424},"\u002Fnative-port",{"type":37,"value":426},": spec-measure on the lab mock, a story per stage, the wipe); the scenes drawn natively, with their motion, in place of the captures.",{"type":32,"tag":58,"props":428,"children":429},{},[430,432,438],{"type":37,"value":431},"The completion as c133's ",{"type":32,"tag":40,"props":433,"children":435},{"className":434},[],[436],{"type":37,"value":437},"training.completed",{"type":37,"value":439}," record, once the plane takes it (c134).",{"type":32,"tag":58,"props":441,"children":442},{},[443],{"type":37,"value":444},"The library reading (a training on its own) and the language choice.",{"type":32,"tag":58,"props":446,"children":447},{},[448,450,456],{"type":37,"value":449},"The four trainings c133 wrote for design c144's wave 1 (design ",{"type":32,"tag":40,"props":451,"children":453},{"className":452},[],[454],{"type":37,"value":455},"463237c3a1",{"type":37,"value":457},"): T-PROVIDERS-1, T-PROVENANCE-1, T-APPROVAL-1 and T-SPEND-1. Bundle each with its native scenario, as T-INJECT-1 went with S1. c144 closed 2026-11-13 with S2–S6 natively carried forward to design c149.",[],[460],"initial-prompt.md",[462],{"file":460,"title":463},"initial prompt",[],[],[],1794599464663]