One last thing before we move on. Same surface as a write step — but the lesson doesn't complete until this passes.
Checkpoint: the full voice pass. The AI drafted a five-variant batch for the Fieldnote relaunch. Lint every variant, print the per-variant verdicts, and build the on-voice queue that goes to Dana.
Write BOTH functions:
lint_copy(text, pack) — as before:
banned phrases from pack["banned"] (in list order, case-insensitive,
violation string "banned: <phrase>"), then "too long" if word
count exceeds pack["max_words"]. Returns the violation list.
on_voice_variants(variants, pack) — returns the list of variant
dicts whose lint_copy result is empty, preserving order.
The harness at the bottom prints one line per variant and the final queue count. Expected output:
E1 email PASS
E2 email FAIL banned: revolutionary
S1 social PASS
S2 social FAIL banned: best-in-class; banned: #1; too long
A1 ads PASS
kept 3/5 — batch goes to Dana for approval