# Source acquisition approval gate

Generated: 2026-05-20T16:49:26.553Z

Approvals valid: 1/2
Checks passing: 14/23

This gate validates the local approval files that must be filled before any paid provider run. It does not call DataForSEO, Apify, or any paid API.

## Guardrails
- Approval is local and explicit; it does not store provider credentials.
- Approval must match the budget cap and staged run limits exactly.
- A human approval cannot bypass source, budget, provider preflight, or post-run review gates.
- Apify approval also requires a named gap from the DataForSEO pilot review.

## Checks
- [blocked] DataForSEO Stage 1: Approved flag true — approved=false
- [blocked] DataForSEO Stage 1: Approver recorded — missing approver
- [blocked] DataForSEO Stage 1: Approval timestamp recorded — missing timestamp
- [pass] DataForSEO Stage 1: Budget lane enabled — enabled=true
- [pass] DataForSEO Stage 1: Cost plan ready — cost plan ready
- [blocked] DataForSEO Stage 1: Max spend matches budget cap — GBP 0 approved / 5 budget
- [blocked] DataForSEO Stage 1: Target cap matches staged lane — 0 approved / 10 expected
- [blocked] DataForSEO Stage 1: Run limit matches staged lane — 0 approved / 1 expected
- [blocked] DataForSEO Stage 1: Depth/request cap matches staged lane — 0 approved / 100 expected
- [blocked] DataForSEO Stage 1: Hard stop acknowledged — hardStopAcknowledged=false
- [blocked] DataForSEO Stage 1: No credential storage acknowledged — noCredentialStorageAcknowledged=false
- [pass] Apify Stage 2: Approved flag true — approved=true
- [pass] Apify Stage 2: Approver recorded — user
- [pass] Apify Stage 2: Approval timestamp recorded — 2026-05-20T16:48:36.463Z
- [pass] Apify Stage 2: Budget lane enabled — enabled=true
- [pass] Apify Stage 2: Cost plan ready — cost plan ready
- [pass] Apify Stage 2: Max spend matches budget cap — GBP 5 approved / 5 budget
- [pass] Apify Stage 2: Target cap matches staged lane — 3 approved / 3 expected
- [pass] Apify Stage 2: Run limit matches staged lane — 1 approved / 1 expected
- [pass] Apify Stage 2: Depth/request cap matches staged lane — 100 approved / 100 expected
- [pass] Apify Stage 2: Hard stop acknowledged — hardStopAcknowledged=true
- [pass] Apify Stage 2: No credential storage acknowledged — noCredentialStorageAcknowledged=true
- [pass] Apify Stage 2: Named Apify gap recorded — Top-3 raw competitor/social/review evidence expansion under starter budget

## Approval files
- DataForSEO: `data/sources/approvals/dataforseo-stage1-approval.json` (blocked)
- Apify: `data/sources/approvals/apify-stage2-approval.json` (valid)
