feat: editorial review dashboard + elite-grade pilot batch (5 SKUs)

Ships the second dashboard surface — a Pattern Library + Preview Theatre — that
presents the 4-section PDP pilot batch back to Umar, compliance, and the board
in an editorial format. Adds the full data layer that drives it: 5 source-backed
per-SKU drafts at QA 100/100, 15 competitor PDP semantic extracts, PubMed
evidence packs, EFSA claims library extension, JV brand voice guide, hand-curated
product FAQs, and the Matrixify-ready CSV exports for Lewis.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Omair Saleh
2026-06-02 18:20:17 +08:00
parent e470e113ee
commit 056c47581f
3302 changed files with 391779 additions and 854 deletions
@@ -0,0 +1,43 @@
# 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)