review-1.md
c133 · Phase 1 review stop (2026-11-11)
For: Mark. What exists: the content model as data (app/data/trainings/), one training written for a real finding in the lab world, the training mocked in the web app's frame from the assignment through the lesson, the check, the result and the record, and the record on the finding and in an audit log mock. The brief (Phase 0) is in flight in market-analyst; nothing here depends on its text.
Where to look
| What | Where | Why |
|---|---|---|
| The finding with its training | /pages/phase4/mock/finding-detail?findingId=F-A | the strip under What happened: the policy's training (D2), Assigned, the path to it |
| The assignment, as the inbox shows it | ?at=assigned | c137's training-assignment built from F-A, three sentences, Start training |
| The lesson | ?at=lesson | four steps; step 1 is the finding in sentences; step 4 is what to do instead |
| The check | ?at=check | four situations, three choices each; the idea, not the wording |
| Retake | ?at=retake | 3 of 4: the step to reread, not the answer; nothing recorded |
| Passed | ?at=passed | why each answer is right, and the record before it is written |
| Recorded | ?at=recorded | the record, the audit log's three rows, where it shows |
| The record on the finding | finding-detail?findingId=F-A&at=recorded | the strip reads Recorded; History has its row, status unchanged (D9) |
| Honest absence | ?findingId=F-C | a policy without a training says so and names the pilots |
Walk it once end to end from the first link: Open the training as User A → Start training → Next through the four steps → answer → Check my answers → Finish and record → the finding's history. Reset this assignment on the training page starts over. The captures are in the cycle's Visual record under the thread "Phase 1 · the content model and one training".
What was built, in a paragraph
A training is data: types.ts holds the lesson (steps with an illustration each), the check (questions with one right choice, the step each verifies, why the right answer is right), the contact (R5) and the record (R4). unapproved-mcp-servers.ts is the first pilot, written once with {slots}; index.ts fills them from the lab world for the finding the URL names (the date and time, the agent, the device, the team, the server, the session, qcontrol's evidence, the outcome, the policy's sanctioned list, the exception that sanctions the server elsewhere, the policy's owner), builds the assignment message, grades the check (all right passes, a retake keeps what was right), writes the record and its audit rows. The page draws the illustrations from the pawns and the sketch kit, with one motion (a flow along the arrow) that stops under reduced motion (D7). The finding's history gained one event kind, training-completed, which does not move the status.
The calls for you
- The record and HR or legal sensitivity (plan question 2). The record names the person and their machine, the training, the finding, the result and the time; it shows on the finding (the operator), in the audit log (whoever reads it) and, in Phase 2, in Reports (c128: IT, security, auditors, leadership). Three ways to hold it: as is; the person's name in the audit log and on the finding, a count only in Reports; or a plane setting that decides who may read training rows and how long they are kept. Default proposed: the second. The first-run question for Peterson: does a completed training count as personnel data in the organisations he knows?
- Languages (plan question 3). The model is one language; the slots filled from the world are English (the policy's name, the evidence, the exception's reason as the operator wrote it). A
langon the training with one file per language is cheap; translating what the operator wrote is not ours to do. Proposed: English for the pilots,langadded when the authoring pipeline (Phase 3) exists, operator text shown as written. - What the training needs from the finding's data. Every slot came from the lab world, and three of them are thin in the real product: the sanctioned list for the person's team (today the list is global or per agent; a team's view comes through exceptions), the policy's owner (derived from the last person who changed the policy; a real
owneron the policy, c121's model, would be honest), and the exception's reason, which the lesson quotes to the person as written. Call: may the person read an operator's exception reason, or does the lesson say only "sanctioned for GRC after their review"? - What the plane knows between the assignment and the record. A training assignment needs no acknowledgement, so under c137 bones §5 the plane never learns it was opened; the operator's strip shows Assigned, then Recorded, nothing else (R4). The lab shows "mid-training" only because one browser plays both sides. Confirm that is the product.
- Finish and record as a step. The passed page shows the record before it is written and the person presses Finish. The alternative is to record on the pass and show the receipt. Proposed: keep the step; the person sees what is written about them before it is.
- The retake keeps what was right. D3 says retake allowed; the lab clears only the missed questions and points at the steps to reread. The alternative is the whole check again.
- The finding's history as the home of the record. One row, "training completed → open", Manual, the person as actor, the record as the cause; the status does not move (D9). The alternative is a Corrections block of its own on S1, which Reports could reuse. Proposed: the row now, the block when Phase 2 agrees the event shape with Tyler.
- Where the person's page lives. The mock is in the lab's qdash shell with the operator's rail; the person arrives signed in through the plane connection (c131 D13) and should see a reduced frame. c134's call; noted here so the capture is read as the lab's frame, not the person's.
Mark's rulings (2026-11-11, evening; relayed from the c130 session's G1 walk)
- The record: the person's name on the finding and in the audit log; counts only in Reports. The first question for Peterson: does a completed training count as personnel data in the organisations he knows? (D10)
- Languages: English for the pilots;
langwith one file per language when the authoring pipeline exists (Phase 3); operator text shown as written, never translated by us. (D11) - The exception's reason: the operator's words, as written, shown to the person. (D12)
- Between assignment and record the plane learns nothing: Assigned, then Recorded, nothing in between. Confirmed as the product. (D13)
- The Finish step stays: the person sees what will be written before it is. (D14)
- The retake keeps what was right: only the missed questions return, with the steps to reread. (D15)
- The record's home: the history row now; a Corrections block on the finding when Phase 2 agrees the event shape with Tyler. (D16)
- Where the person's page lives: not ruled; c134's call.
Also from G1 that evening: shape.md is accepted, so c133 is formally open. Phase 2 follows.
What is not done
Phase 2 (the record's event shape with Tyler, Reports' correction line), Phase 3 (the content collection, assets, preview, publish), Phase 4 (the two other pilots), Phase 5 (hand-off). The operator's "assign from a finding" (D2 second) and HQ's notices (third) are not in the mock. The c137 operator inbox does not yet show this training-completed: the messaging mock's world (Acme, Mark Parson) and the governance world (User A, mac-a1) are two worlds; one world for the lab's messaging and governance mocks is a Phase 2 question.