[{"data":1,"prerenderedAt":622},["ShallowReactive",2],{"cycle-doc-design-c133-review-4-secrets.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":20},{"id":5,"title":6},"c133","Remediation Training",{"id":8,"label":9},"design","Design","review-4-secrets.md","c133 · Phase 4 review note, pilot 3: Secrets in prompts (2026-11-11)",[13,14,15,16,17,18,19],"First: one finding added to the lab world","Where to look","What was written","The calls for you, from this pilot","Small things found on the way, not fixed (Phase 2's lines in shared files)","Every open call from Phases 3 and 4","Mark's rulings (2026-11-12)",{"type":21,"children":22},"root",[23,44,50,71,96,109,114,286,299,304,452,457,491,496,541,546,559,582,594,599,604,609],{"type":24,"tag":25,"props":26,"children":27},"element","p",{},[28,35,37,42],{"type":24,"tag":29,"props":30,"children":31},"strong",{},[32],{"type":33,"value":34},"text","For:",{"type":33,"value":36}," Mark. ",{"type":24,"tag":29,"props":38,"children":39},{},[40],{"type":33,"value":41},"This is the stop at the end of Phase 4:",{"type":33,"value":43}," the three pilots of D6 are written, published and can be taken end to end in the mock from their real findings. Every open call from Phases 3 and 4 is collected at the end of this note.",{"type":24,"tag":45,"props":46,"children":48},"h2",{"id":47},"first-one-finding-added-to-the-lab-world",[49],{"type":33,"value":13},{"type":24,"tag":25,"props":51,"children":52},{},[53,55,62,64,69],{"type":33,"value":54},"The world had no finding under Credentials must not be sent to a model (P-CREDENTIALS), and a training does not invent its row. So ",{"type":24,"tag":56,"props":57,"children":59},"code",{"className":58},[],[60],{"type":33,"value":61},"app\u002Fdata\u002Fgovernance-fixture.ts",{"type":33,"value":63}," gained the smallest honest addition, marked ",{"type":24,"tag":56,"props":65,"children":67},{"className":66},[],[68],{"type":33,"value":5},{"type":33,"value":70}," in two comments:",{"type":24,"tag":72,"props":73,"children":74},"ul",{},[75,86],{"type":24,"tag":76,"props":77,"children":78},"li",{},[79,84],{"type":24,"tag":29,"props":80,"children":81},{},[82],{"type":33,"value":83},"F-G:",{"type":33,"value":85}," an AWS access key (the policy's first detector) in a prompt from Priya's Cursor on mac-eng-07, Engineering, on 7 October at 11:47, evidence \"AWS access key AKIA…7Q2F in a prompt at 11:47, from a pasted .env file; sent to the model\", severity critical (the policy's recommendation), Observed, because the policy observes organisation-wide in both worlds; so the key reached the model.",{"type":24,"tag":76,"props":87,"children":88},{},[89,94],{"type":24,"tag":29,"props":90,"children":91},{},[92],{"type":33,"value":93},"S-6:",{"type":33,"value":95}," its session, \"Cursor · deploy script fix · 23 tool calls\". The detect event follows from the world's own rule.",{"type":24,"tag":25,"props":97,"children":98},{},[99,101,107],{"type":33,"value":100},"It sits in the base world, so the c114 world has it too (20 findings there, 23 at the end of the story). Checked after the addition: the 24 phase-4 pages in the registry, the seven report kinds, the findings list (23 findings), F-G's finding, the P-CREDENTIALS policy and Reports render with no console errors. One knock-on outside c133: ",{"type":24,"tag":56,"props":102,"children":104},{"className":103},[],[105],{"type":33,"value":106},"app\u002Fdata\u002Fintegrations-fixture.ts",{"type":33,"value":108}," hardcodes \"the lab world's 22 findings\" (21 high, 1 medium) for the integrations mock; with F-G the world has 23 (22 high, critical folding in). Not edited here; it belongs to that cycle.",{"type":24,"tag":45,"props":110,"children":112},{"id":111},"where-to-look",[113],{"type":33,"value":14},{"type":24,"tag":115,"props":116,"children":117},"table",{},[118,142],{"type":24,"tag":119,"props":120,"children":121},"thead",{},[122],{"type":24,"tag":123,"props":124,"children":125},"tr",{},[126,132,137],{"type":24,"tag":127,"props":128,"children":129},"th",{},[130],{"type":33,"value":131},"What",{"type":24,"tag":127,"props":133,"children":134},{},[135],{"type":33,"value":136},"Where",{"type":24,"tag":127,"props":138,"children":139},{},[140],{"type":33,"value":141},"Why",{"type":24,"tag":143,"props":144,"children":145},"tbody",{},[146,170,192,214,236,258],{"type":24,"tag":123,"props":147,"children":148},{},[149,155,165],{"type":24,"tag":150,"props":151,"children":152},"td",{},[153],{"type":33,"value":154},"The finding",{"type":24,"tag":150,"props":156,"children":157},{},[158],{"type":24,"tag":159,"props":160,"children":162},"a",{"href":161},"\u002Fpages\u002Fphase4\u002Fmock\u002Ffinding-detail?findingId=F-G",[163],{"type":33,"value":164},"finding-detail?findingId=F-G",{"type":24,"tag":150,"props":166,"children":167},{},[168],{"type":33,"value":169},"the new row, with the strip offering Secrets in prompts to Priya",{"type":24,"tag":123,"props":171,"children":172},{},[173,178,187],{"type":24,"tag":150,"props":174,"children":175},{},[176],{"type":33,"value":177},"The training",{"type":24,"tag":150,"props":179,"children":180},{},[181],{"type":24,"tag":159,"props":182,"children":184},{"href":183},"\u002Fpages\u002Fphase4\u002Fmock\u002Ftraining?findingId=F-G",[185],{"type":33,"value":186},"training?findingId=F-G",{"type":24,"tag":150,"props":188,"children":189},{},[190],{"type":33,"value":191},"the assignment, four steps, four questions",{"type":24,"tag":123,"props":193,"children":194},{},[195,200,209],{"type":24,"tag":150,"props":196,"children":197},{},[198],{"type":33,"value":199},"Step 3",{"type":24,"tag":150,"props":201,"children":202},{},[203],{"type":24,"tag":159,"props":204,"children":206},{"href":205},"\u002Fpages\u002Fphase4\u002Fmock\u002Ftraining?findingId=F-G&at=lesson&step=3",[207],{"type":33,"value":208},"?at=lesson&step=3",{"type":24,"tag":150,"props":210,"children":211},{},[212],{"type":33,"value":213},"what to do about this key: it reached the model, so revoke it today and tell IT",{"type":24,"tag":123,"props":215,"children":216},{},[217,222,231],{"type":24,"tag":150,"props":218,"children":219},{},[220],{"type":33,"value":221},"Step 4",{"type":24,"tag":150,"props":223,"children":224},{},[225],{"type":24,"tag":159,"props":226,"children":228},{"href":227},"\u002Fpages\u002Fphase4\u002Fmock\u002Ftraining?findingId=F-G&at=lesson&step=4",[229],{"type":33,"value":230},"?at=lesson&step=4",{"type":24,"tag":150,"props":232,"children":233},{},[234],{"type":33,"value":235},"a reference, not the secret; what qcontrol checks, read from the policy's detectors, and the check that is off",{"type":24,"tag":123,"props":237,"children":238},{},[239,244,253],{"type":24,"tag":150,"props":240,"children":241},{},[242],{"type":33,"value":243},"Corrections",{"type":24,"tag":150,"props":245,"children":246},{},[247],{"type":24,"tag":159,"props":248,"children":250},{"href":249},"\u002Fpages\u002Fphase4\u002Fmock\u002Freports\u002Ffindings?findingId=F-G&at=recorded",[251],{"type":33,"value":252},"reports\u002Ffindings?findingId=F-G&at=recorded",{"type":24,"tag":150,"props":254,"children":255},{},[256],{"type":33,"value":257},"five findings with a training across the three pilots, counts only (D10)",{"type":24,"tag":123,"props":259,"children":260},{},[261,266,281],{"type":24,"tag":150,"props":262,"children":263},{},[264],{"type":33,"value":265},"The collection",{"type":24,"tag":150,"props":267,"children":268},{},[269,274,276],{"type":24,"tag":159,"props":270,"children":272},{"href":271},"\u002Fpages\u002Fphase4\u002Ftrainings",[273],{"type":33,"value":271},{"type":33,"value":275}," and ",{"type":24,"tag":159,"props":277,"children":279},{"href":278},"\u002Fapi\u002Ftrainings",[280],{"type":33,"value":278},{"type":24,"tag":150,"props":282,"children":283},{},[284],{"type":33,"value":285},"three trainings published, the voice check passing on each, nothing withheld",{"type":24,"tag":25,"props":287,"children":288},{},[289,291,297],{"type":33,"value":290},"The captures are under the thread \"Phase 4 · pilot 3, Secrets in prompts\" (",{"type":24,"tag":56,"props":292,"children":294},{"className":293},[],[295],{"type":33,"value":296},"scripts\u002Fshot-programs\u002Fc133-p4-secrets.json",{"type":33,"value":298},", thirteen shots, with the collection complete and Corrections across the three).",{"type":24,"tag":45,"props":300,"children":302},{"id":301},"what-was-written",[303],{"type":33,"value":15},{"type":24,"tag":72,"props":305,"children":306},{},[307,317,327,384,424,442],{"type":24,"tag":76,"props":308,"children":309},{},[310,315],{"type":24,"tag":29,"props":311,"children":312},{},[313],{"type":33,"value":314},"The lesson, four steps:",{"type":33,"value":316}," what happened on mac-eng-07 (the finding in sentences; why nothing was blocked); why a key in a prompt is a key disclosed (the copies a sent prompt leaves: the transcript, the provider's logs, the tools it reached; a prompt cannot be called back); what to do about this key (revoke and reissue today, tell IT); what to do instead (a reference, not the secret; look in a file before pasting it; what qcontrol checks for and what it does not).",{"type":24,"tag":76,"props":318,"children":319},{},[320,325],{"type":24,"tag":29,"props":321,"children":322},{},[323],{"type":33,"value":324},"The check, four questions:",{"type":33,"value":326}," a deleted conversation, what makes a disclosed key safe, how to give an agent a password, what an unflagged prompt proves. The right choices sit second, first, third, second.",{"type":24,"tag":76,"props":328,"children":329},{},[330,335,337,343,345,351,353,359,361,367,368,374,376,382],{"type":24,"tag":29,"props":331,"children":332},{},[333],{"type":33,"value":334},"The slots",{"type":33,"value":336}," for a data-class finding (",{"type":24,"tag":56,"props":338,"children":340},{"className":339},[],[341],{"type":33,"value":342},"slots.ts",{"type":33,"value":344},", kind ",{"type":24,"tag":56,"props":346,"children":348},{"className":347},[],[349],{"type":33,"value":350},"dataClass",{"type":33,"value":352},"): the data class with its article, the policy's detectors as a sentence (read from its configuration: AWS access keys, private keys (PEM) and OAuth tokens), the one that is off (generic API keys), and the outcome-dependent sentences: ",{"type":24,"tag":56,"props":354,"children":356},{"className":355},[],[357],{"type":33,"value":358},"outcome",{"type":33,"value":360},", ",{"type":24,"tag":56,"props":362,"children":364},{"className":363},[],[365],{"type":33,"value":366},"blocked",{"type":33,"value":360},{"type":24,"tag":56,"props":369,"children":371},{"className":370},[],[372],{"type":33,"value":373},"keyAdvice",{"type":33,"value":375}," (revoke it if it reached the model; keep it out of the next prompt if the prompt was stopped), ",{"type":24,"tag":56,"props":377,"children":379},{"className":378},[],[380],{"type":33,"value":381},"modelGot",{"type":33,"value":383}," for the scene.",{"type":24,"tag":76,"props":385,"children":386},{},[387,392,394,400,402,408,409,415,416,422],{"type":24,"tag":29,"props":388,"children":389},{},[390],{"type":33,"value":391},"Four scenes:",{"type":33,"value":393}," ",{"type":24,"tag":56,"props":395,"children":397},{"className":396},[],[398],{"type":33,"value":399},"secret-prompt",{"type":33,"value":401}," (the one motion), ",{"type":24,"tag":56,"props":403,"children":405},{"className":404},[],[406],{"type":33,"value":407},"secret-copies",{"type":33,"value":360},{"type":24,"tag":56,"props":410,"children":412},{"className":411},[],[413],{"type":33,"value":414},"secret-rotate",{"type":33,"value":360},{"type":24,"tag":56,"props":417,"children":419},{"className":418},[],[420],{"type":33,"value":421},"secret-reference",{"type":33,"value":423},".",{"type":24,"tag":76,"props":425,"children":426},{},[427,432,434,440],{"type":24,"tag":29,"props":428,"children":429},{},[430],{"type":33,"value":431},"Voice:",{"type":33,"value":433}," every sentence as Priya reads it on F-G and every scene label through ",{"type":24,"tag":56,"props":435,"children":437},{"className":436},[],[438],{"type":33,"value":439},"check-brand-voice",{"type":33,"value":441}," (productUI): zero violations. The preview page's check passes on 50 texts.",{"type":24,"tag":76,"props":443,"children":444},{},[445,450],{"type":24,"tag":29,"props":446,"children":447},{},[448],{"type":33,"value":449},"Taken end to end",{"type":33,"value":451}," in the browser pane from F-G's strip: the four steps, a wrong answer, the retake keeping three, the pass, Finish, the history row; no console errors; the scenes checked in dark mode.",{"type":24,"tag":45,"props":453,"children":455},{"id":454},"the-calls-for-you-from-this-pilot",[456],{"type":33,"value":16},{"type":24,"tag":458,"props":459,"children":460},"ol",{},[461,471,481],{"type":24,"tag":76,"props":462,"children":463},{},[464,469],{"type":24,"tag":29,"props":465,"children":466},{},[467],{"type":33,"value":468},"Keep F-G in the world.",{"type":33,"value":470}," It is the smallest honest row for this pilot, in both worlds. The alternative is an Oct 19-only seed (as F-D to F-F are), which would leave the c114 world without it. Proposed: keep it in the base world; tell the integrations mock's owner its count is now 23.",{"type":24,"tag":76,"props":472,"children":473},{},[474,479],{"type":24,"tag":29,"props":475,"children":476},{},[477],{"type":33,"value":478},"Naming the check that is off.",{"type":33,"value":480}," Step 4 and the fourth question's explanation say \"The check for generic API keys is off, so not every secret is caught\", read from the policy's configuration. It teaches that keeping secrets out is the person's job; it also tells everyone where detection has a gap. The alternative is \"not every secret is caught\" without naming the check. Proposed: name it; the gap is the organisation's setting and the lesson is honest about it.",{"type":24,"tag":76,"props":482,"children":483},{},[484,489],{"type":24,"tag":29,"props":485,"children":486},{},[487],{"type":33,"value":488},"Rotation is the person's act, not the record's.",{"type":33,"value":490}," The training asks Priya to revoke the key and tell IT; the record says only that the training was passed (R4). Whether the key was revoked is IT's to confirm, outside the training. Proposed: keep it so; a \"rotated\" field would make the record a checklist the person fills in about themselves.",{"type":24,"tag":45,"props":492,"children":494},{"id":493},"small-things-found-on-the-way-not-fixed-phase-2s-lines-in-shared-files",[495],{"type":33,"value":17},{"type":24,"tag":72,"props":497,"children":498},{},[499,512],{"type":24,"tag":76,"props":500,"children":501},{},[502,504,510],{"type":33,"value":503},"Corrections in Reports shows \"0 in this window\" for a record written at the cutoff (",{"type":24,"tag":56,"props":505,"children":507},{"className":506},[],[508],{"type":33,"value":509},"app\u002Fdata\u002Ftrainings\u002Freports.ts",{"type":33,"value":511},", the window's end against the record's day).",{"type":24,"tag":76,"props":513,"children":514},{},[515,517,523,525,531,533,539],{"type":33,"value":516},"Its source line in ",{"type":24,"tag":56,"props":518,"children":520},{"className":519},[],[521],{"type":33,"value":522},"app\u002Fdata\u002Freports-c128-specs.ts",{"type":33,"value":524}," still names ",{"type":24,"tag":56,"props":526,"children":528},{"className":527},[],[529],{"type":33,"value":530},"training.completed",{"type":33,"value":532},"; the lab writes ",{"type":24,"tag":56,"props":534,"children":536},{"className":535},[],[537],{"type":33,"value":538},"training.completed.policy",{"type":33,"value":540}," since D27.",{"type":24,"tag":45,"props":542,"children":544},{"id":543},"every-open-call-from-phases-3-and-4",[545],{"type":33,"value":18},{"type":24,"tag":25,"props":547,"children":548},{},[549,551,557],{"type":33,"value":550},"From ",{"type":24,"tag":159,"props":552,"children":554},{"href":553},"\u002Fcycles\u002Fdesign\u002Fc133\u002Fdoc\u002Freview-3",[555],{"type":33,"value":556},"review-3.md",{"type":33,"value":558},", the pipeline:",{"type":24,"tag":458,"props":560,"children":561},{},[562,567,572,577],{"type":24,"tag":76,"props":563,"children":564},{},[565],{"type":33,"value":566},"The right answers ship in the published data (the web app grades, D3). Proposed: keep.",{"type":24,"tag":76,"props":568,"children":569},{},[570],{"type":33,"value":571},"How the apps reach the API behind Access. Proposed: the publish step's JSON copied into the plane at release.",{"type":24,"tag":76,"props":573,"children":574},{},[575],{"type":33,"value":576},"A language with no file. Proposed: show English and say so.",{"type":24,"tag":76,"props":578,"children":579},{},[580],{"type":33,"value":581},"When the version moves. Proposed: a change of meaning bumps it; a typo fix does not, though the hash moves.",{"type":24,"tag":25,"props":583,"children":584},{},[585,586,592],{"type":33,"value":550},{"type":24,"tag":159,"props":587,"children":589},{"href":588},"\u002Fcycles\u002Fdesign\u002Fc133\u002Fdoc\u002Freview-4-accounts",[590],{"type":33,"value":591},"review-4-accounts.md",{"type":33,"value":593},", personal accounts:\n5. The operator's reason in the third person, shown to the person it names (D12). Proposed: keep D12.\n6. The self-report in step 4. Proposed: keep it, and ask Peterson with the D10 question.\n7. The right answer's position in T-MCP-1 (always the second choice). Proposed: reorder the file; no new version.",{"type":24,"tag":25,"props":595,"children":596},{},[597],{"type":33,"value":598},"From this note, secrets in prompts:\n8. Keep F-G in the base world. Proposed: keep.\n9. Name the check that is off. Proposed: name it.\n10. Rotation stays outside the record. Proposed: keep it outside.",{"type":24,"tag":25,"props":600,"children":601},{},[602],{"type":33,"value":603},"Still waiting outside these: Tyler on D22–D27, the brief's PR in market-analyst, Peterson on personnel data. Next after your review: Phase 5, the hand-off to c134 (the pages and the record) and c131 (the notice and the link), and the library page in the web app.",{"type":24,"tag":45,"props":605,"children":607},{"id":606},"marks-rulings-2026-11-12",[608],{"type":33,"value":19},{"type":24,"tag":25,"props":610,"children":611},{},[612,614,620],{"type":33,"value":613},"Walked call by call with the design session; all ten as proposed, recorded as D28–D37 in ",{"type":24,"tag":56,"props":615,"children":617},{"className":616},[],[618],{"type":33,"value":619},"plan.md",{"type":33,"value":621},": the right answers stay in the published data (1, D28); the publish step's JSON goes into the plane at release (2, D29); English with a line when a language has no file (3, D30); the version moves on meaning (4, D31); the operator's reason shown as written (5, D32); the self-report kept, asked of Peterson (6, D33); T-MCP-1's answers reordered in the file (7, D34); F-G stays in the base world (8, D35); the lesson names the check that is off (9, D36); rotation stays outside the record (10, D37). Next: the two small things found above and D34's reorder, then Phase 5.",1794599382991]