promptdojo_

Batch plan and calendar — creative at volume, gated before it ships — step 6 of 7

This gate is leaking. The teaser-story row has status: approved but an empty approved_by — someone flipped the status without putting a name on it — and the current gate schedules it anyway. In September that's an unreviewed AI draft going out under the brand's name.

Fix publish_queue so a row needs BOTH status == "approved" AND a non-empty approved_by to reach the queue.

Expected output:

queue: 2 rows
09-02 launch-email -> approved by dana
09-05 winback -> approved by sam
The break is on lines 11, 12 — but read the whole snippet first.

full-screen editor opens — close anytime to keep reading.