{
  "generatedAt": "2026-05-20T02:31:34.881Z",
  "ready": false,
  "purpose": "Preflight validation for the human-editable reviewer/provider/staging input files before rerunning the heavier handoff gates.",
  "counts": {
    "checks": 7,
    "passing": 0,
    "blocked": 7,
    "missing": 0
  },
  "rows": [
    {
      "Area": "Compliance clinical blanks",
      "File": "data/content/compliance/clinical-blank-decisions.csv",
      "Check": "All blank clinical claim rows have explicit approved_blank decisions with approver, date, rationale, and constraints acknowledgement.",
      "Status": "blocked",
      "Evidence": "0/184 valid approved_blank rows; 184 still pending/invalid.",
      "NextAction": "Compliance owner must fill the CSV or provide source-backed claims, then run bun run compliance:blank-decisions && bun run claims:sync-content.",
      "Guardrail": "Do not invent clinical claims or approve blanks without compliance input."
    },
    {
      "Area": "Product approval decisions",
      "File": "data/content/approvals/product-approval-decisions.csv",
      "Check": "All products have human approve_all rows with all evidence/acknowledgement fields complete.",
      "Status": "blocked",
      "Evidence": "0/190 valid approve_all rows; 190 still pending/invalid.",
      "NextAction": "Umar/JV reviewer must complete the CSV, then run bun run approval:decisions && bun run approval:review-packet.",
      "Guardrail": "Do not self-approve products or treat generated drafts as human approval."
    },
    {
      "Area": "DataForSEO provider response",
      "File": "data/sources/provider-responses/dataforseo-reviews-endpoint-response.json",
      "Check": "Support response proves the Reviews endpoint or replacement endpoint is available and retry-safe without leaking credentials.",
      "Status": "blocked",
      "Evidence": "responseReceived=false; endpointAvailable=false; replacementEndpoint=blank; retrySafe=false; credentialIncluded=false",
      "NextAction": "Wait for DataForSEO support/docs clearance, fill the provider response tracker, then run bun run dataforseo:support-response.",
      "Guardrail": "Use the real pi-fresh-foundation credentials only in shell env; never paste or store secrets in the response tracker."
    },
    {
      "Area": "DataForSEO spend approval",
      "File": "data/sources/approvals/dataforseo-stage1-approval.json",
      "Check": "Stage 1 approval file has approver, date, capped spend, exact target/run/depth caps, and hard-stop/no-secret/post-review acknowledgements.",
      "Status": "blocked",
      "Evidence": "approved=false; maxSpendApproved=0; targetCap=0/10; runLimit=0/1; depth=0/10; hardStop=false; noCredentialStorage=false",
      "NextAction": "Project owner must explicitly fill the approval file after endpoint clearance, then run bun run source:spend-gate.",
      "Guardrail": "Approval alone must not override provider endpoint/support/docs blockers."
    },
    {
      "Area": "Staging import evidence",
      "File": "data/staging/import-logs",
      "Check": "At least one real Matrixify/staging import log JSON exists outside templates.",
      "Status": "blocked",
      "Evidence": "0 import log file(s) found.",
      "NextAction": "Lewis/Euan must save real import logs under data/staging/import-logs/ and rerun bun run staging:evidence.",
      "Guardrail": "Queued templates are not import evidence."
    },
    {
      "Area": "Staging PDP spot checks",
      "File": "data/staging/pdp-checks",
      "Check": "At least 5 real staging PDP spot-check JSON files exist outside the queue/templates.",
      "Status": "blocked",
      "Evidence": "0/5 PDP check file(s) found.",
      "NextAction": "Save real staging URL spot checks under data/staging/pdp-checks/ and rerun bun run staging:evidence.",
      "Guardrail": "Queue files under pdp-check-queue are assignments only, not completed checks."
    },
    {
      "Area": "Staging cutover approval",
      "File": "data/staging/cutover-approval.json",
      "Check": "Cutover approval exists with explicit approval/signoff owner and timestamp.",
      "Status": "blocked",
      "Evidence": "approved=false; approver=blank; approvedAt=blank",
      "NextAction": "Project owner/Lewis/Euan must sign the cutover approval after successful staging checks.",
      "Guardrail": "Do not treat handoff packet generation as cutover approval."
    }
  ],
  "blockingRows": [
    {
      "Area": "Compliance clinical blanks",
      "File": "data/content/compliance/clinical-blank-decisions.csv",
      "Check": "All blank clinical claim rows have explicit approved_blank decisions with approver, date, rationale, and constraints acknowledgement.",
      "Status": "blocked",
      "Evidence": "0/184 valid approved_blank rows; 184 still pending/invalid.",
      "NextAction": "Compliance owner must fill the CSV or provide source-backed claims, then run bun run compliance:blank-decisions && bun run claims:sync-content.",
      "Guardrail": "Do not invent clinical claims or approve blanks without compliance input."
    },
    {
      "Area": "Product approval decisions",
      "File": "data/content/approvals/product-approval-decisions.csv",
      "Check": "All products have human approve_all rows with all evidence/acknowledgement fields complete.",
      "Status": "blocked",
      "Evidence": "0/190 valid approve_all rows; 190 still pending/invalid.",
      "NextAction": "Umar/JV reviewer must complete the CSV, then run bun run approval:decisions && bun run approval:review-packet.",
      "Guardrail": "Do not self-approve products or treat generated drafts as human approval."
    },
    {
      "Area": "DataForSEO provider response",
      "File": "data/sources/provider-responses/dataforseo-reviews-endpoint-response.json",
      "Check": "Support response proves the Reviews endpoint or replacement endpoint is available and retry-safe without leaking credentials.",
      "Status": "blocked",
      "Evidence": "responseReceived=false; endpointAvailable=false; replacementEndpoint=blank; retrySafe=false; credentialIncluded=false",
      "NextAction": "Wait for DataForSEO support/docs clearance, fill the provider response tracker, then run bun run dataforseo:support-response.",
      "Guardrail": "Use the real pi-fresh-foundation credentials only in shell env; never paste or store secrets in the response tracker."
    },
    {
      "Area": "DataForSEO spend approval",
      "File": "data/sources/approvals/dataforseo-stage1-approval.json",
      "Check": "Stage 1 approval file has approver, date, capped spend, exact target/run/depth caps, and hard-stop/no-secret/post-review acknowledgements.",
      "Status": "blocked",
      "Evidence": "approved=false; maxSpendApproved=0; targetCap=0/10; runLimit=0/1; depth=0/10; hardStop=false; noCredentialStorage=false",
      "NextAction": "Project owner must explicitly fill the approval file after endpoint clearance, then run bun run source:spend-gate.",
      "Guardrail": "Approval alone must not override provider endpoint/support/docs blockers."
    },
    {
      "Area": "Staging import evidence",
      "File": "data/staging/import-logs",
      "Check": "At least one real Matrixify/staging import log JSON exists outside templates.",
      "Status": "blocked",
      "Evidence": "0 import log file(s) found.",
      "NextAction": "Lewis/Euan must save real import logs under data/staging/import-logs/ and rerun bun run staging:evidence.",
      "Guardrail": "Queued templates are not import evidence."
    },
    {
      "Area": "Staging PDP spot checks",
      "File": "data/staging/pdp-checks",
      "Check": "At least 5 real staging PDP spot-check JSON files exist outside the queue/templates.",
      "Status": "blocked",
      "Evidence": "0/5 PDP check file(s) found.",
      "NextAction": "Save real staging URL spot checks under data/staging/pdp-checks/ and rerun bun run staging:evidence.",
      "Guardrail": "Queue files under pdp-check-queue are assignments only, not completed checks."
    },
    {
      "Area": "Staging cutover approval",
      "File": "data/staging/cutover-approval.json",
      "Check": "Cutover approval exists with explicit approval/signoff owner and timestamp.",
      "Status": "blocked",
      "Evidence": "approved=false; approver=blank; approvedAt=blank",
      "NextAction": "Project owner/Lewis/Euan must sign the cutover approval after successful staging checks.",
      "Guardrail": "Do not treat handoff packet generation as cutover approval."
    }
  ],
  "files": {
    "markdown": "content_population_exports/reviewer_input_preflight.md",
    "json": "content_population_exports/reviewer_input_preflight.json",
    "csv": "content_population_exports/reviewer_input_preflight.csv"
  }
}
