Files
justvitamin/content_population_exports/source_acquisition_approval_gate.json
Omair Saleh 056c47581f 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>
2026-06-02 18:50:09 +08:00

288 lines
8.6 KiB
JSON

{
"generatedAt": "2026-05-20T16:49:26.553Z",
"ready": false,
"counts": {
"providers": 2,
"approvalsValid": 1,
"checks": 23,
"passing": 14,
"blocked": 9
},
"files": {
"dataforseoApproval": "data/sources/approvals/dataforseo-stage1-approval.json",
"apifyApproval": "data/sources/approvals/apify-stage2-approval.json",
"reportMd": "content_population_exports/source_acquisition_approval_gate.md",
"reportCsv": "content_population_exports/source_acquisition_approval_gate.csv",
"reportJson": "content_population_exports/source_acquisition_approval_gate.json"
},
"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."
],
"approvals": [
{
"key": "dataforseoStage1",
"provider": "DataForSEO",
"stage": 1,
"file": "data/sources/approvals/dataforseo-stage1-approval.json",
"approved": false,
"valid": false,
"approval": {
"provider": "DataForSEO",
"stage": 1,
"approved": false,
"approvedBy": "",
"approvedAt": "",
"approvalScope": "fill before spending provider credits",
"budgetRef": "data/sources/budgets/source-acquisition-budget.json",
"decisionRef": "content_population_exports/dataforseo_task_preflight.json",
"currency": "GBP",
"maxSpendApproved": 0,
"expectedMaxSpend": 5,
"targetCapApproved": 0,
"expectedTargetCap": 10,
"runLimitApproved": 0,
"expectedRunLimit": 1,
"depthOrRequestCapApproved": 0,
"expectedDepthOrRequestCap": 100,
"hardStopAcknowledged": false,
"noCredentialStorageAcknowledged": false,
"postRunReviewRequired": true,
"namedGapForApify": "",
"notes": "Held because DataForSEO reviews endpoint remains officially marked temporarily unavailable."
}
},
{
"key": "apifyStage2",
"provider": "Apify",
"stage": 2,
"file": "data/sources/approvals/apify-stage2-approval.json",
"approved": true,
"valid": true,
"approval": {
"provider": "Apify",
"stage": 2,
"approved": true,
"approvedBy": "user",
"approvedAt": "2026-05-20T16:48:36.463Z",
"approvalScope": "starter top-3 paid scrape lane only",
"budgetRef": "data/sources/budgets/source-acquisition-budget.json",
"decisionRef": "data/sources/reviews/dataforseo-stage1-review.json",
"currency": "GBP",
"maxSpendApproved": 5,
"expectedMaxSpend": 5,
"targetCapApproved": 3,
"expectedTargetCap": 3,
"runLimitApproved": 1,
"expectedRunLimit": 1,
"depthOrRequestCapApproved": 100,
"expectedDepthOrRequestCap": 100,
"hardStopAcknowledged": true,
"noCredentialStorageAcknowledged": true,
"postRunReviewRequired": true,
"namedGapForApify": "Top-3 raw competitor/social/review evidence expansion under starter budget",
"notes": "User requested a few-dollar first run, then proceed to scrape."
}
}
],
"checks": [
{
"Provider": "DataForSEO",
"Stage": "1",
"Check": "Approved flag true",
"Status": "blocked",
"Blocking": "yes",
"Evidence": "approved=false"
},
{
"Provider": "DataForSEO",
"Stage": "1",
"Check": "Approver recorded",
"Status": "blocked",
"Blocking": "yes",
"Evidence": "missing approver"
},
{
"Provider": "DataForSEO",
"Stage": "1",
"Check": "Approval timestamp recorded",
"Status": "blocked",
"Blocking": "yes",
"Evidence": "missing timestamp"
},
{
"Provider": "DataForSEO",
"Stage": "1",
"Check": "Budget lane enabled",
"Status": "pass",
"Blocking": "yes",
"Evidence": "enabled=true"
},
{
"Provider": "DataForSEO",
"Stage": "1",
"Check": "Cost plan ready",
"Status": "pass",
"Blocking": "yes",
"Evidence": "cost plan ready"
},
{
"Provider": "DataForSEO",
"Stage": "1",
"Check": "Max spend matches budget cap",
"Status": "blocked",
"Blocking": "yes",
"Evidence": "GBP 0 approved / 5 budget"
},
{
"Provider": "DataForSEO",
"Stage": "1",
"Check": "Target cap matches staged lane",
"Status": "blocked",
"Blocking": "yes",
"Evidence": "0 approved / 10 expected"
},
{
"Provider": "DataForSEO",
"Stage": "1",
"Check": "Run limit matches staged lane",
"Status": "blocked",
"Blocking": "yes",
"Evidence": "0 approved / 1 expected"
},
{
"Provider": "DataForSEO",
"Stage": "1",
"Check": "Depth/request cap matches staged lane",
"Status": "blocked",
"Blocking": "yes",
"Evidence": "0 approved / 100 expected"
},
{
"Provider": "DataForSEO",
"Stage": "1",
"Check": "Hard stop acknowledged",
"Status": "blocked",
"Blocking": "yes",
"Evidence": "hardStopAcknowledged=false"
},
{
"Provider": "DataForSEO",
"Stage": "1",
"Check": "No credential storage acknowledged",
"Status": "blocked",
"Blocking": "yes",
"Evidence": "noCredentialStorageAcknowledged=false"
},
{
"Provider": "Apify",
"Stage": "2",
"Check": "Approved flag true",
"Status": "pass",
"Blocking": "yes",
"Evidence": "approved=true"
},
{
"Provider": "Apify",
"Stage": "2",
"Check": "Approver recorded",
"Status": "pass",
"Blocking": "yes",
"Evidence": "user"
},
{
"Provider": "Apify",
"Stage": "2",
"Check": "Approval timestamp recorded",
"Status": "pass",
"Blocking": "yes",
"Evidence": "2026-05-20T16:48:36.463Z"
},
{
"Provider": "Apify",
"Stage": "2",
"Check": "Budget lane enabled",
"Status": "pass",
"Blocking": "yes",
"Evidence": "enabled=true"
},
{
"Provider": "Apify",
"Stage": "2",
"Check": "Cost plan ready",
"Status": "pass",
"Blocking": "yes",
"Evidence": "cost plan ready"
},
{
"Provider": "Apify",
"Stage": "2",
"Check": "Max spend matches budget cap",
"Status": "pass",
"Blocking": "yes",
"Evidence": "GBP 5 approved / 5 budget"
},
{
"Provider": "Apify",
"Stage": "2",
"Check": "Target cap matches staged lane",
"Status": "pass",
"Blocking": "yes",
"Evidence": "3 approved / 3 expected"
},
{
"Provider": "Apify",
"Stage": "2",
"Check": "Run limit matches staged lane",
"Status": "pass",
"Blocking": "yes",
"Evidence": "1 approved / 1 expected"
},
{
"Provider": "Apify",
"Stage": "2",
"Check": "Depth/request cap matches staged lane",
"Status": "pass",
"Blocking": "yes",
"Evidence": "100 approved / 100 expected"
},
{
"Provider": "Apify",
"Stage": "2",
"Check": "Hard stop acknowledged",
"Status": "pass",
"Blocking": "yes",
"Evidence": "hardStopAcknowledged=true"
},
{
"Provider": "Apify",
"Stage": "2",
"Check": "No credential storage acknowledged",
"Status": "pass",
"Blocking": "yes",
"Evidence": "noCredentialStorageAcknowledged=true"
},
{
"Provider": "Apify",
"Stage": "2",
"Check": "Named Apify gap recorded",
"Status": "pass",
"Blocking": "yes",
"Evidence": "Top-3 raw competitor/social/review evidence expansion under starter budget"
}
],
"nextActions": [
"DataForSEO Stage 1: Approved flag true - approved=false",
"DataForSEO Stage 1: Approver recorded - missing approver",
"DataForSEO Stage 1: Approval timestamp recorded - missing timestamp",
"DataForSEO Stage 1: Max spend matches budget cap - GBP 0 approved / 5 budget",
"DataForSEO Stage 1: Target cap matches staged lane - 0 approved / 10 expected",
"DataForSEO Stage 1: Run limit matches staged lane - 0 approved / 1 expected",
"DataForSEO Stage 1: Depth/request cap matches staged lane - 0 approved / 100 expected",
"DataForSEO Stage 1: Hard stop acknowledged - hardStopAcknowledged=false",
"DataForSEO Stage 1: No credential storage acknowledged - noCredentialStorageAcknowledged=false"
]
}