{
  "generatedAt": "2026-05-20T02:31:35.449Z",
  "ready": false,
  "purpose": "Acceptance guide for every owner-editable evidence file. It explains exactly what counts as valid evidence and what remains invalid without filling or approving anything.",
  "counts": {
    "lanes": 7,
    "currentlyBlocked": 7
  },
  "rows": [
    {
      "Lane": "Compliance clinical blanks",
      "Owner": "Compliance owner / Umar",
      "EditableFile": "data/content/compliance/clinical-blank-decisions.csv",
      "RequiredEvidence": "For each SKU: decision=approved_blank OR source-backed claim refs must be provided and synced.",
      "RequiredFields": "decision=approved_blank; approvedBy non-empty; approvedAt ISO/date; rationale non-empty; constraintsAcknowledged=yes",
      "ValidExample": "decision=approved_blank; approvedBy=<real compliance owner>; approvedAt=<actual review date>; rationale=<why blank is safe>; constraintsAcknowledged=yes",
      "InvalidExamples": "pending rows; blank approver/date/rationale; constraintsAcknowledged=no; generic clinical claims without source refs",
      "ValidatorCommand": "bun run compliance:blank-decisions && bun run claims:sync-content && bun run export:content",
      "Guardrail": "Do not invent clinical claims. Blank clinical module needs explicit compliance approval.",
      "CurrentStatus": "blocked",
      "CurrentEvidence": "0/184 valid approved_blank rows; 184 still pending/invalid.",
      "CurrentNextAction": "Compliance owner must fill the CSV or provide source-backed claims, then run bun run compliance:blank-decisions && bun run claims:sync-content."
    },
    {
      "Lane": "Product approval decisions",
      "Owner": "Umar / JV reviewer",
      "EditableFile": "data/content/approvals/product-approval-decisions.csv",
      "RequiredEvidence": "For each product: human review of content, compliance, images, export, and supporting evidence.",
      "RequiredFields": "decision=approve_all; approvedBy non-empty; approvedAt ISO/date; reviewEvidence non-empty; contentReviewed=yes; complianceReviewed=yes; imagesReviewed=yes; exportReviewed=yes; noFakeEvidenceAcknowledged=yes",
      "ValidExample": "decision=approve_all; approvedBy=<real reviewer>; approvedAt=<actual review date>; reviewEvidence=<packet/link/notes>; all review acknowledgements=yes",
      "InvalidExamples": "self-approval; blank reviewEvidence; any acknowledgement=no; approving generated draft assets without human review",
      "ValidatorCommand": "bun run approval:decisions && bun run approval:review-packet && bun run export:content",
      "Guardrail": "Do not self-approve products or treat generated drafts as human approval.",
      "CurrentStatus": "blocked",
      "CurrentEvidence": "0/190 valid approve_all rows; 190 still pending/invalid.",
      "CurrentNextAction": "Umar/JV reviewer must complete the CSV, then run bun run approval:decisions && bun run approval:review-packet."
    },
    {
      "Lane": "DataForSEO provider response",
      "Owner": "Research / project owner",
      "EditableFile": "data/sources/provider-responses/dataforseo-reviews-endpoint-response.json",
      "RequiredEvidence": "DataForSEO support/docs confirm Amazon Reviews endpoint or replacement endpoint is available and retry-safe.",
      "RequiredFields": "responseReceived=true; responseReceivedAt date; endpointAvailable=true OR replacementEndpoint non-empty; providerSaysRetrySafe=true; credentialIncludedInSupportThread=false; responderName/rawResponseSummary filled",
      "ValidExample": "responseReceived=true; endpointAvailable=true; providerSaysRetrySafe=true; credentialIncludedInSupportThread=false; rawResponseSummary=<support answer summary>",
      "InvalidExamples": "support not received; endpoint still unavailable; retrySafe=false; credentials pasted into support response or tracker",
      "ValidatorCommand": "bun run dataforseo:support-response && bun run dataforseo:task-preflight",
      "Guardrail": "Use pi-fresh-foundation .env credentials only through shell env; never print or paste secrets.",
      "CurrentStatus": "blocked",
      "CurrentEvidence": "responseReceived=false; endpointAvailable=false; replacementEndpoint=blank; retrySafe=false; credentialIncluded=false",
      "CurrentNextAction": "Wait for DataForSEO support/docs clearance, fill the provider response tracker, then run bun run dataforseo:support-response."
    },
    {
      "Lane": "DataForSEO spend approval",
      "Owner": "Research / project owner",
      "EditableFile": "data/sources/approvals/dataforseo-stage1-approval.json",
      "RequiredEvidence": "Explicit owner approval for exactly one capped Stage 1 run after endpoint clearance.",
      "RequiredFields": "approved=true; approvedBy non-empty; approvedAt date; maxSpendApproved within expected cap; targetCapApproved=9; runLimitApproved=1; depthOrRequestCapApproved=10; hardStopAcknowledged=true; noCredentialStorageAcknowledged=true; postRunReviewRequired=true",
      "ValidExample": "approved=true only after endpoint is available; maxSpendApproved<=expectedMaxSpend; exact target/run/depth caps recorded",
      "InvalidExamples": "approval before endpoint clearance; maxSpendApproved=0; caps do not match; hard stop/no-secret acknowledgements false",
      "ValidatorCommand": "bun run source:spend-gate && bun run source:refresh-packet",
      "Guardrail": "Approval alone must not override provider endpoint/support/docs blockers.",
      "CurrentStatus": "blocked",
      "CurrentEvidence": "approved=false; maxSpendApproved=0; targetCap=0/10; runLimit=0/1; depth=0/10; hardStop=false; noCredentialStorage=false",
      "CurrentNextAction": "Project owner must explicitly fill the approval file after endpoint clearance, then run bun run source:spend-gate."
    },
    {
      "Lane": "Staging import evidence",
      "Owner": "Lewis/Euan + dashboard owner",
      "EditableFile": "data/staging/import-logs/*.json",
      "RequiredEvidence": "Real Matrixify staging import logs for metaobjects, smart collections, and products.",
      "RequiredFields": "importType matching expected type; environment=staging; importedAt date; importedBy real person; successfulRows>=expected; failedRows=0; sourceFile/matrixifyJobUrl or notes filled",
      "ValidExample": "One JSON per import type from actual Matrixify staging run with failedRows=0 and enough successfulRows",
      "InvalidExamples": "template JSON copied as evidence; failedRows>0; production environment; missing importedBy/importedAt",
      "ValidatorCommand": "bun run staging:evidence && bun run staging:checklist",
      "Guardrail": "Queued templates are not import evidence.",
      "CurrentStatus": "blocked",
      "CurrentEvidence": "0 import log file(s) found.",
      "CurrentNextAction": "Lewis/Euan must save real import logs under data/staging/import-logs/ and rerun bun run staging:evidence."
    },
    {
      "Lane": "Staging PDP spot checks",
      "Owner": "Lewis/Euan + dashboard owner",
      "EditableFile": "data/staging/pdp-checks/*.json",
      "RequiredEvidence": "At least 5 real staging PDP URL checks with all checks passing and no issues.",
      "RequiredFields": "sku; handle; stagingUrl; checkedAt; checkedBy; checks object values all pass; issues=[]",
      "ValidExample": "Five or more real staging product URLs checked by a named reviewer with every required PDP check=pass",
      "InvalidExamples": "queue files used as evidence; fewer than 5 checks; any issue recorded; any check not pass; fake/non-staging URL",
      "ValidatorCommand": "bun run staging:evidence && bun run staging:checklist",
      "Guardrail": "Queue files under pdp-check-queue are assignments only, not completed checks.",
      "CurrentStatus": "blocked",
      "CurrentEvidence": "0/5 PDP check file(s) found.",
      "CurrentNextAction": "Save real staging URL spot checks under data/staging/pdp-checks/ and rerun bun run staging:evidence."
    },
    {
      "Lane": "Staging cutover approval",
      "Owner": "Lewis/Euan + project owner",
      "EditableFile": "data/staging/cutover-approval.json",
      "RequiredEvidence": "Cutover approval signed only after clean import logs and PDP spot checks pass.",
      "RequiredFields": "approved=true; approvedBy non-empty; approvedAt date; stagingImportEvidence path; pdpSpotCheckEvidence path; knownRisksAccepted array; notes optional",
      "ValidExample": "approved=true with real approver/date after staging:evidence passes",
      "InvalidExamples": "approved=false; blank approver/date; approval before staging evidence; treating tracker creation as signoff",
      "ValidatorCommand": "bun run staging:evidence && bun run staging:checklist && bun run verify:handoff",
      "Guardrail": "Do not treat handoff packet generation as cutover approval.",
      "CurrentStatus": "blocked",
      "CurrentEvidence": "approved=false; approver=blank; approvedAt=blank",
      "CurrentNextAction": "Project owner/Lewis/Euan must sign the cutover approval after successful staging checks."
    }
  ],
  "files": {
    "markdown": "content_population_exports/owner_evidence_acceptance_guide.md",
    "json": "content_population_exports/owner_evidence_acceptance_guide.json",
    "csv": "content_population_exports/owner_evidence_acceptance_guide.csv"
  }
}
