6 · Facebook ads via a service

Use case · the want as a person would post it:

“Run $200 of Facebook ads for my shop using whatever service does this well.”

GAP Two rails are missing at once: a provider lane to the ad account (as in 3 and 7), and an agent-side spend rail — money leaves the system today only on milestone release to the agent; there is no held-funds → third-party-vendor path.

The walk, step by step

Deal signed
FINISH

Blocks

Gates that fire Signing freeze. The $200 would fund here and sit held.

Scope the ad: audience, creative, budget
PROVIDE

Blocks structured_form, media_upload, number

Gates that fire Standard blocks — works.

Approve the creative + targeting
APPROVE

Blocks review_approve, agreement

Gates that fire Works.

Connect the ad account
GRANT

Blocks connect_account

Gates that fire REJ-11; r104.

Note GAP #1: no ad-account provider lane.

Spend the $200 with the service
PROVIDE

Blocks payment_authorize

Gates that fire REJ-06 bans recurring-payment language; REJ-17 bans off-platform payment on matched wants.

Note GAP #2: no outbound spend rail — held funds can only release to the agent on approval, not to a vendor.

Report results
APPROVE

Blocks review_approve

Gates that fire Works — screenshots + metrics through the reader.

Finish line
FINISH

Blocks yes_no

Gates that fire Binary only.

Gaps & what to build

To build: (a) the generic provider lane (shared with 3/7); (b) a vendor-spend rail: held funds → named third party, per-line-item, person-approved, receipts filed — the same held/released law money already obeys, pointed outward. Both are Steven-gate decisions, not incidental engineering.

HAR Reference · generated 2026-08-29 from bid_validator.py, target_walk.py, deal_step.py · staging is source of truth