Checkpoint
One last thing before we move on. Same surface as a write step — but the lesson doesn't complete until this passes.
Checkpoint: the send gate. Same three tickets, both sides of the proxy printed — what would leave for the model, and who (if anyone) gets the real values back.
Write proxy_gate(ticket):
- Print
{id}: - Mask as in the last step (
[KIND_n],nfrom 1 inpiiorder). Printoutbound: {masked} - Collect leftover
KNOWNvalues still in the masked text, inKNOWNorder. If any → printleftover: {values comma-joined}andverdict: BLOCKED — raw PII - Elif reviewer is falsy or
"auto"→ printleftover: noneandverdict: BLOCKED — no named human - Else unmask
MODEL_DRAFT[id]and printleftover: noneandfor {reviewer}: {restored}
Expected output:
exc-441:
outbound: Member [MEMBER_1] at [EMAIL_2] — late refill. Call [PHONE_3].
leftover: none
for vera: We'll call 415-555-0142 about MBR-104221 and email [email protected].
exc-442:
outbound: Member [MEMBER_1] called from 415-555-0142.
leftover: 415-555-0142
verdict: BLOCKED — raw PII
exc-443:
outbound: Email [EMAIL_1] about the missed window.
leftover: none
verdict: BLOCKED — no named human