Stations are part authored and part generated, and every field carries which it is. A generated field is put to three deliberately different reviewers — clinical accuracy, applicability to the country’s practice, and exam format — and what each said is stored. Two of three must agree, and any single safety objection withholds the field regardless of the majority. A generated field with no verification record at all cannot be published by any path.
The mechanism that keeps a record honest over time is a content hash stored beside it. Rewrite a verified scenario and its record no longer matches the text, so the station arrives at the publication gate as unverified and blocks. Without that comparison, a verification record is just JSON sitting next to prose that has since changed.
We keep a station whose criteria are deliberately unsafe outside the seeded directory, so the veto can be watched working end to end. A safety check nobody has seen fire is not a safety check.
The one prompt that should see the grid
The reviewer prompt gets the whole station, criteria included — the exact opposite of the actor prompt. The two are not in tension. The actor streams to a candidate who must not be told the mark scheme; the reviewer runs in a seed script with no attempt, no session and no candidate anywhere in the process. A reviewer who cannot see a criterion cannot review it.
And in Canada
The same discipline, one layer deeper: every field of every adapted station is marked as written by the source physician or generated by us, and a model-returned value can never overwrite a physician’s. Adaptations are committed as JSON so a reviewer reads a diff rather than a database, and only title, slug, duration and competencies cross into the public catalogue — real case content does not reach a public page.