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