{"ok":false,"checkedAt":"2026-06-02T19:18:17.758Z","profileVersion":"moral-trade-document-coverage-v0.7-2026-05","purpose":"Requirement-to-evidence coverage map for the Moral Trade improvement documents: the public validator suite should show which implementation artifacts answer each recommendation without inventing production evidence.","validation":{"status":"fail","validatorName":"moral-trade-document-coverage","validatorVersion":"moral-trade-document-coverage-validator-v0.8","profileVersion":"moral-trade-document-coverage-v0.7-2026-05","sourceDocumentCount":2,"sourceStackCount":12,"testingPlanLayerCount":7,"requirementCount":7,"sourceDocumentArtifacts":[{"key":"moral_trade_feature_audit_markdown","path":"moral trade4.md","artifactHash":null,"expectedHash":"sha256:8d9c8cc38efcc51011306b93019a400c0236af9aa1c8989444e45744fde6cd11","present":false,"hashMatches":false},{"key":"moral_trade_feature_audit_pdf","path":"Improving the Moral Trade Feature at MoralTrade.org.pdf","artifactHash":null,"expectedHash":"sha256:c006e0c0bfcb915b45585c24d39a4216ac1e61721bf24e12d859240240b0f509","present":false,"hashMatches":false}],"routeEvidenceArtifacts":[{"route":"/api/moral-trade/ai-governance/health","candidateFiles":["src/app/api/moral-trade/ai-governance/health/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/api-contract","candidateFiles":["src/app/api/moral-trade/api-contract/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/background-rls-audit/contract","candidateFiles":["src/app/api/moral-trade/background-rls-audit/contract/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/challenge-appeal/contract","candidateFiles":["src/app/api/moral-trade/challenge-appeal/contract/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/copilot/contract","candidateFiles":["src/app/api/moral-trade/copilot/contract/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/copilot/review","candidateFiles":["src/app/api/moral-trade/copilot/review/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/data-model/contract","candidateFiles":["src/app/api/moral-trade/data-model/contract/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/disclosure/contract","candidateFiles":["src/app/api/moral-trade/disclosure/contract/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/document-coverage/health","candidateFiles":["src/app/api/moral-trade/document-coverage/health/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/evaluation/health","candidateFiles":["src/app/api/moral-trade/evaluation/health/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/externality/health","candidateFiles":["src/app/api/moral-trade/externality/health/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/health","candidateFiles":["src/app/api/moral-trade/health/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/incident-response/health","candidateFiles":["src/app/api/moral-trade/incident-response/health/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/match-signal/contract","candidateFiles":["src/app/api/moral-trade/match-signal/contract/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/operations/health","candidateFiles":["src/app/api/moral-trade/operations/health/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/performance/health","candidateFiles":["src/app/api/moral-trade/performance/health/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/policy-bundle/contract","candidateFiles":["src/app/api/moral-trade/policy-bundle/contract/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/private-overlap/contract","candidateFiles":["src/app/api/moral-trade/private-overlap/contract/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/provenance/schema","candidateFiles":["src/app/api/moral-trade/provenance/schema/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/reasoning/packets","candidateFiles":["src/app/api/moral-trade/reasoning/packets/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/review-workflow/contract","candidateFiles":["src/app/api/moral-trade/review-workflow/contract/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/review-workflow/evaluate","candidateFiles":["src/app/api/moral-trade/review-workflow/evaluate/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/schemas","candidateFiles":["src/app/api/moral-trade/schemas/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/security/health","candidateFiles":["src/app/api/moral-trade/security/health/route.ts"],"present":false,"resolvedFile":null},{"route":"/api/moral-trade/transparency/report","candidateFiles":["src/app/api/moral-trade/transparency/report/route.ts"],"present":false,"resolvedFile":null},{"route":"/moral-trade/technical-spec","candidateFiles":["src/app/moral-trade/technical-spec/page.tsx"],"present":false,"resolvedFile":null},{"route":"/validation","candidateFiles":["src/app/validation/page.tsx"],"present":false,"resolvedFile":null}],"canonicalInstructionHash":null,"checks":[{"id":"source:moral_trade_feature_audit_markdown","label":"Improving the Moral Trade Feature at MoralTrade.org markdown","status":"fail","evidence":"Missing phrase(s): formalize the core moral-trade data model and public validator suite | instrumented workflow cards | provenance-first evidence objects | schema-bound drafting, critique, and verification copilot | Never rank moral value globally | Evaluation metrics"},{"id":"source:moral_trade_feature_audit_pdf","label":"Improving the Moral Trade Feature at MoralTrade.org PDF","status":"fail","evidence":"Improving the Moral Trade Feature at MoralTrade.org.pdf is optional and absent."},{"id":"source-artifact:moral_trade_feature_audit_markdown","label":"moral trade4.md source artifact hash","status":"fail","evidence":"moral trade4.md missing"},{"id":"source-artifact:moral_trade_feature_audit_pdf","label":"Improving the Moral Trade Feature at MoralTrade.org.pdf source artifact hash","status":"fail","evidence":"Improving the Moral Trade Feature at MoralTrade.org.pdf missing"},{"id":"route-evidence:/api/moral-trade/ai-governance/health","label":"/api/moral-trade/ai-governance/health resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/ai-governance/health/route.ts"},{"id":"route-evidence:/api/moral-trade/api-contract","label":"/api/moral-trade/api-contract resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/api-contract/route.ts"},{"id":"route-evidence:/api/moral-trade/background-rls-audit/contract","label":"/api/moral-trade/background-rls-audit/contract resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/background-rls-audit/contract/route.ts"},{"id":"route-evidence:/api/moral-trade/challenge-appeal/contract","label":"/api/moral-trade/challenge-appeal/contract resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/challenge-appeal/contract/route.ts"},{"id":"route-evidence:/api/moral-trade/copilot/contract","label":"/api/moral-trade/copilot/contract resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/copilot/contract/route.ts"},{"id":"route-evidence:/api/moral-trade/copilot/review","label":"/api/moral-trade/copilot/review resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/copilot/review/route.ts"},{"id":"route-evidence:/api/moral-trade/data-model/contract","label":"/api/moral-trade/data-model/contract resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/data-model/contract/route.ts"},{"id":"route-evidence:/api/moral-trade/disclosure/contract","label":"/api/moral-trade/disclosure/contract resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/disclosure/contract/route.ts"},{"id":"route-evidence:/api/moral-trade/document-coverage/health","label":"/api/moral-trade/document-coverage/health resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/document-coverage/health/route.ts"},{"id":"route-evidence:/api/moral-trade/evaluation/health","label":"/api/moral-trade/evaluation/health resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/evaluation/health/route.ts"},{"id":"route-evidence:/api/moral-trade/externality/health","label":"/api/moral-trade/externality/health resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/externality/health/route.ts"},{"id":"route-evidence:/api/moral-trade/health","label":"/api/moral-trade/health resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/health/route.ts"},{"id":"route-evidence:/api/moral-trade/incident-response/health","label":"/api/moral-trade/incident-response/health resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/incident-response/health/route.ts"},{"id":"route-evidence:/api/moral-trade/match-signal/contract","label":"/api/moral-trade/match-signal/contract resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/match-signal/contract/route.ts"},{"id":"route-evidence:/api/moral-trade/operations/health","label":"/api/moral-trade/operations/health resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/operations/health/route.ts"},{"id":"route-evidence:/api/moral-trade/performance/health","label":"/api/moral-trade/performance/health resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/performance/health/route.ts"},{"id":"route-evidence:/api/moral-trade/policy-bundle/contract","label":"/api/moral-trade/policy-bundle/contract resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/policy-bundle/contract/route.ts"},{"id":"route-evidence:/api/moral-trade/private-overlap/contract","label":"/api/moral-trade/private-overlap/contract resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/private-overlap/contract/route.ts"},{"id":"route-evidence:/api/moral-trade/provenance/schema","label":"/api/moral-trade/provenance/schema resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/provenance/schema/route.ts"},{"id":"route-evidence:/api/moral-trade/reasoning/packets","label":"/api/moral-trade/reasoning/packets resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/reasoning/packets/route.ts"},{"id":"route-evidence:/api/moral-trade/review-workflow/contract","label":"/api/moral-trade/review-workflow/contract resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/review-workflow/contract/route.ts"},{"id":"route-evidence:/api/moral-trade/review-workflow/evaluate","label":"/api/moral-trade/review-workflow/evaluate resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/review-workflow/evaluate/route.ts"},{"id":"route-evidence:/api/moral-trade/schemas","label":"/api/moral-trade/schemas resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/schemas/route.ts"},{"id":"route-evidence:/api/moral-trade/security/health","label":"/api/moral-trade/security/health resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/security/health/route.ts"},{"id":"route-evidence:/api/moral-trade/transparency/report","label":"/api/moral-trade/transparency/report resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/api/moral-trade/transparency/report/route.ts"},{"id":"route-evidence:/moral-trade/technical-spec","label":"/moral-trade/technical-spec resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/moral-trade/technical-spec/page.tsx"},{"id":"route-evidence:/validation","label":"/validation resolves to a Next.js route artifact","status":"fail","evidence":"Missing route artifact; checked src/app/validation/page.tsx"},{"id":"instruction:canonical-build","label":"Canonical build instruction is present and validator-bound","status":"fail","evidence":"docs/moral-trade/codex-build-instruction.md missing, missingPhrases=Core Moral Trade Codex Build Instruction|canonical repository instruction|validator-backed, privacy-preserving, reviewable product behavior|No global platform ranking of moral value.|No autonomous outreach or counterparty disclosure.|No raw private-feed mining.|Matching and copilot output remain factor-code, confidence-band, consent-gated, and human-reviewed.|Required Public Contracts|Required Local Gates|Review Checklist|does not prove live production liquidity, missingCommands=node --import tsx --test src/lib/moral-trade/*.test.ts src/lib/background-ai-shadow.test.ts src/lib/background-networking.test.ts src/lib/background-notification-policy.test.ts src/lib/background-notifications.test.ts src/lib/background-privacy-controls.test.ts src/lib/background-explanations.test.ts src/lib/background-opportunity-briefs.test.ts src/lib/background-private-overlap.test.ts src/lib/wish-registry.test.ts src/lib/public-route-smoke.test.ts|npm run lint|git diff --check|npm run build, missingRoutes=/api/moral-trade/health|/api/moral-trade/document-coverage/health|/api/moral-trade/api-contract|/api/moral-trade/data-model/contract|/api/moral-trade/schemas|/api/moral-trade/copilot/contract|/api/moral-trade/review-workflow/contract|/api/moral-trade/reasoning/packets|/api/moral-trade/provenance/schema|/api/moral-trade/match-signal/contract|/api/moral-trade/disclosure/contract|/api/moral-trade/challenge-appeal/contract|/api/moral-trade/evaluation/health|/api/moral-trade/operations/health|/api/moral-trade/security/health|/api/moral-trade/performance/health|/api/moral-trade/incident-response/health|/api/moral-trade/externality/health|/api/moral-trade/ai-governance/health|/api/moral-trade/private-overlap/contract|/api/moral-trade/transparency/report"},{"id":"source-stack:toby_ord_moral_trade","label":"amirrorclear.net / Toby Ord, Moral Trade implementation trace","status":"fail","evidence":"priority=highest, evidence=0/3, routes=2, missingEvidence=src/lib/moral-trade/protocol.ts|src/lib/proposal-review.ts|src/app/anti-threat-baseline/page.tsx"},{"id":"source-stack:moraltrade_public_materials","label":"MoralTrade.org public materials implementation trace","status":"fail","evidence":"priority=highest, evidence=0/3, routes=2, missingEvidence=docs/moral-trade/codex-build-instruction.md|src/app/moral-trade/technical-spec/page.tsx|src/lib/moral-trade/api-contract.ts"},{"id":"source-stack:oecd_due_diligence","label":"OECD Due Diligence Guidance for Responsible Business Conduct implementation trace","status":"fail","evidence":"priority=high, evidence=1/2, routes=1, missingEvidence=src/lib/moral-trade/externality.ts"},{"id":"source-stack:un_guiding_principles","label":"UN Guiding Principles on Business and Human Rights implementation trace","status":"fail","evidence":"priority=high, evidence=1/2, routes=2, missingEvidence=src/lib/moral-trade/challenge-appeal.ts"},{"id":"source-stack:ilo_principles","label":"ILO MNE Declaration and Fundamental Principles and Rights at Work implementation trace","status":"fail","evidence":"priority=high, evidence=1/2, routes=1, missingEvidence=src/lib/moral-trade/externality.ts"},{"id":"source-stack:eti_fairtrade_standards","label":"ETI Base Code and Fairtrade Standards implementation trace","status":"fail","evidence":"priority=high, evidence=1/2, routes=1, missingEvidence=src/lib/moral-trade/externality.ts"},{"id":"source-stack:open_supply_hub","label":"Open Supply Hub implementation trace","status":"fail","evidence":"priority=high, evidence=1/2, routes=2, missingEvidence=src/lib/moral-trade/provenance.ts"},{"id":"source-stack:w3c_prov","label":"W3C PROV implementation trace","status":"fail","evidence":"priority=high, evidence=1/2, routes=1, missingEvidence=src/lib/moral-trade/provenance.ts"},{"id":"source-stack:gs1_epcis","label":"GS1 EPCIS 2.0 implementation trace","status":"fail","evidence":"priority=medium_high, evidence=0/1, routes=1, missingEvidence=src/lib/moral-trade/provenance.ts"},{"id":"source-stack:nist_ai_rmf_xai","label":"NIST AI RMF 1.0 and NIST XAI principles implementation trace","status":"fail","evidence":"priority=high, evidence=1/3, routes=2, missingEvidence=src/lib/moral-trade/ai-governance.ts|src/lib/moral-trade/copilot.ts"},{"id":"source-stack:fairness_and_ml_docs","label":"Hardt/Price/Srebro, Kleinberg/Mullainathan/Raghavan, Model Cards, and Datasheets for Datasets implementation trace","status":"fail","evidence":"priority=high, evidence=2/4, routes=2, missingEvidence=src/lib/moral-trade/evaluation.ts|src/lib/moral-trade/ai-governance.ts"},{"id":"source-stack:human_ai_interaction","label":"Amershi et al. and Kulesza et al. implementation trace","status":"fail","evidence":"priority=high, evidence=1/3, routes=2, missingEvidence=src/lib/moral-trade/copilot.ts|src/lib/moral-trade/evaluation.ts"},{"id":"testing-plan:schema_tests","label":"Schema tests coverage","status":"fail","evidence":"evidence=0/3, tests=0/3, routes=3, missingEvidence=src/lib/moral-trade/protocol.ts|src/lib/moral-trade/data-model.ts|src/lib/moral-trade/schema-registry.ts, missingTests=src/lib/moral-trade/protocol.test.ts|src/lib/moral-trade/data-model.test.ts|src/lib/moral-trade/schema-registry.test.ts"},{"id":"testing-plan:policy_tests","label":"Policy tests coverage","status":"fail","evidence":"evidence=0/3, tests=0/3, routes=3, missingEvidence=src/lib/moral-trade/policy-bundle.ts|src/lib/moral-trade/copilot.ts|src/lib/proposal-review.ts, missingTests=src/lib/moral-trade/policy-bundle.test.ts|src/lib/moral-trade/copilot.test.ts|src/lib/proposal-review.test.ts"},{"id":"testing-plan:evidence_tests","label":"Evidence tests coverage","status":"fail","evidence":"evidence=0/3, tests=0/3, routes=2, missingEvidence=src/lib/moral-trade/provenance.ts|src/lib/moral-trade/evidence-persistence.ts|src/lib/moral-trade/agreement-write-path.ts, missingTests=src/lib/moral-trade/provenance.test.ts|src/lib/moral-trade/evidence-persistence.test.ts|src/lib/moral-trade/agreement-write-path.test.ts"},{"id":"testing-plan:privacy_tests","label":"Privacy tests coverage","status":"fail","evidence":"evidence=0/4, tests=0/4, routes=3, missingEvidence=src/lib/moral-trade/disclosure.ts|src/lib/moral-trade/match-signal.ts|src/lib/background-privacy-controls.ts|src/lib/moral-trade/transparency-report.ts, missingTests=src/lib/moral-trade/disclosure.test.ts|src/lib/moral-trade/match-signal.test.ts|src/lib/background-privacy-controls.test.ts|src/lib/moral-trade/transparency-report.test.ts"},{"id":"testing-plan:fairness_tests","label":"Fairness tests coverage","status":"fail","evidence":"evidence=1/3, tests=0/2, routes=2, missingEvidence=src/lib/moral-trade/evaluation.ts|src/lib/moral-trade/ai-governance.ts, missingTests=src/lib/moral-trade/evaluation.test.ts|src/lib/moral-trade/ai-governance.test.ts"},{"id":"testing-plan:ux_tests","label":"UX tests coverage","status":"fail","evidence":"evidence=1/3, tests=0/2, routes=2, missingEvidence=src/lib/moral-trade/evaluation.ts|src/app/moral-trade/technical-spec/page.tsx, missingTests=src/lib/moral-trade/evaluation.test.ts|src/lib/public-route-smoke.test.ts"},{"id":"testing-plan:resilience_tests","label":"Resilience tests coverage","status":"fail","evidence":"evidence=0/4, tests=0/4, routes=3, missingEvidence=src/lib/moral-trade/operations.ts|src/lib/moral-trade/performance.ts|src/lib/moral-trade/copilot.ts|src/lib/moral-trade/offer-write-path.ts, missingTests=src/lib/moral-trade/operations.test.ts|src/lib/moral-trade/performance.test.ts|src/lib/moral-trade/copilot.test.ts|src/lib/moral-trade/offer-write-path.test.ts"},{"id":"requirement:core_data_model_public_validator_suite","label":"Core data model and public validators","status":"fail","evidence":"evidence=0/5, evidencePhrases=0/3, tests=0/3, routes=3, sources=linked, missingEvidence=src/lib/moral-trade/protocol.ts|src/lib/moral-trade/data-model.ts|src/lib/moral-trade/schema-registry.ts|src/app/api/moral-trade/data-model/contract/route.ts|src/app/api/moral-trade/schemas/route.ts, missingEvidencePhrases=MORAL_TRADE_SCHEMA_REGISTRY_VERSION|validateMoralTradeSchemaRegistry|profile-json-schema-conformance, missingTests=src/lib/moral-trade/protocol.test.ts|src/lib/moral-trade/data-model.test.ts|src/lib/moral-trade/schema-registry.test.ts"},{"id":"requirement:workflow_cards_factor_codes","label":"Workflow cards and factor codes","status":"fail","evidence":"evidence=0/5, evidencePhrases=0/3, tests=0/3, routes=3, sources=linked, missingEvidence=src/lib/proposal-review.ts|src/app/offers/[offerId]/page.tsx|src/app/offers/examples/[exampleId]/page.tsx|src/app/moral-trade/page.tsx|src/app/reasoning-center/page.tsx, missingEvidencePhrases=getOfferReviewWorkflowCards|no_global_moral_ranking|reviewer_summary, missingTests=src/lib/proposal-review.test.ts|src/lib/public-route-smoke.test.ts|src/lib/moral-trade/reasoning-packets.test.ts"},{"id":"requirement:provenance_first_evidence","label":"Provenance-first evidence objects","status":"fail","evidence":"evidence=2/5, evidencePhrases=2/4, tests=0/3, routes=1, sources=linked, missingEvidence=src/lib/moral-trade/provenance.ts|src/lib/moral-trade/evidence-persistence.ts|src/lib/moral-trade/agreement-write-path.ts, missingEvidencePhrases=MoralTradeProvenanceActivity|persistence-append-only-policies, missingTests=src/lib/moral-trade/provenance.test.ts|src/lib/moral-trade/evidence-persistence.test.ts|src/lib/moral-trade/agreement-write-path.test.ts"},{"id":"requirement:schema_bound_copilot","label":"Schema-bound copilot","status":"fail","evidence":"evidence=1/5, evidencePhrases=1/3, tests=0/2, routes=3, sources=linked, missingEvidence=src/lib/moral-trade/copilot.ts|src/app/api/moral-trade/copilot/contract/route.ts|src/app/api/moral-trade/copilot/review/route.ts|src/lib/moral-trade/policy-bundle.ts, missingEvidencePhrases=MoralTradeCopilotOutput|validateMoralTradeCopilotOutput, missingTests=src/lib/moral-trade/copilot.test.ts|src/lib/moral-trade/policy-bundle.test.ts"},{"id":"requirement:privacy_match_disclosure_guardrails","label":"Privacy, matching, and disclosure guardrails","status":"fail","evidence":"evidence=0/5, evidencePhrases=0/3, tests=0/3, routes=3, sources=linked, missingEvidence=src/lib/moral-trade/match-signal.ts|src/lib/moral-trade/disclosure.ts|src/lib/background-privacy-controls.ts|src/app/api/moral-trade/match-signal/evaluate/route.ts|src/app/api/moral-trade/disclosure/evaluate/route.ts, missingEvidencePhrases=redacted_profile_match_preview_only|evaluateMoralTradeDisclosureGrant|raw_source_notes_redacted, missingTests=src/lib/moral-trade/match-signal.test.ts|src/lib/moral-trade/disclosure.test.ts|src/lib/background-privacy-controls.test.ts"},{"id":"requirement:externality_challenge_appeal_review","label":"Externality, challenge, and appeal review","status":"fail","evidence":"evidence=0/4, evidencePhrases=0/4, tests=0/3, routes=3, sources=linked, missingEvidence=src/lib/moral-trade/externality.ts|src/lib/moral-trade/challenge-appeal.ts|src/lib/moral-trade/protocol.ts|src/app/validation/page.tsx, missingEvidencePhrases=evaluateMoralTradeExternalityReview|affected_party_standing|challenge_window_required|deterministic_challenge_appeal_scope_only, missingTests=src/lib/moral-trade/externality.test.ts|src/lib/moral-trade/challenge-appeal.test.ts|src/lib/moral-trade/protocol.test.ts"},{"id":"requirement:evaluation_operations_security_performance","label":"Evaluation, operations, security, and performance gates","status":"fail","evidence":"evidence=0/9, evidencePhrases=0/8, tests=0/9, routes=8, sources=linked, missingEvidence=src/lib/moral-trade/evaluation.ts|src/lib/moral-trade/operations.ts|src/lib/moral-trade/security.ts|src/lib/moral-trade/performance.ts|src/lib/moral-trade/incident-response.ts|src/lib/moral-trade/transparency-report.ts|src/lib/moral-trade/ai-governance.ts|src/lib/moral-trade/api-contract.ts|src/lib/moral-trade/email-copy.ts, missingEvidencePhrases=validateMoralTradeEvaluationProfile|validateMoralTradeOperationsProfile|validateMoralTradeSecurityProfile|validateMoralTradePerformanceProfile|validateMoralTradeIncidentResponseProfile|MORAL_TRADE_TRANSPARENCY_REPORT_VERSION|validateMoralTradeAiGovernanceProfile|sampleDocumentationPacketFailures, missingTests=src/lib/moral-trade/evaluation.test.ts|src/lib/moral-trade/operations.test.ts|src/lib/moral-trade/security.test.ts|src/lib/moral-trade/performance.test.ts|src/lib/moral-trade/incident-response.test.ts|src/lib/moral-trade/transparency-report.test.ts|src/lib/moral-trade/ai-governance.test.ts|src/lib/moral-trade/api-contract.test.ts|src/lib/moral-trade/email-copy.test.ts"},{"id":"structure:requirement-coverage","label":"Coverage includes every document recommendation family","status":"pass","evidence":"core_data_model_public_validator_suite, workflow_cards_factor_codes, provenance_first_evidence, schema_bound_copilot, privacy_match_disclosure_guardrails, externality_challenge_appeal_review, evaluation_operations_security_performance"},{"id":"structure:unique-keys","label":"Coverage keys are unique","status":"pass","evidence":"No duplicate keys."},{"id":"structure:recommended-source-stack","label":"Coverage maps every recommended source-stack family","status":"pass","evidence":"toby_ord_moral_trade, moraltrade_public_materials, oecd_due_diligence, un_guiding_principles, ilo_principles, eti_fairtrade_standards, open_supply_hub, w3c_prov, gs1_epcis, nist_ai_rmf_xai, fairness_and_ml_docs, human_ai_interaction"},{"id":"structure:testing-plan-coverage","label":"Coverage maps every report testing-plan layer","status":"pass","evidence":"schema_tests, policy_tests, evidence_tests, privacy_tests, fairness_tests, ux_tests, resilience_tests"},{"id":"structure:non-claims","label":"Coverage publishes non-claims","status":"pass","evidence":"This coverage profile proves repository artifacts and validator coverage, not live production liquidity or successful real-world trades. | The attached PDF and Markdown source are verified as present and hash-checked; the Markdown source is the phrase-checked requirements artifact used by this validator. | MPGF production evidence files remain separately governed and are not fabricated by this Moral Trade document-coverage profile."}],"blockers":["source:moral_trade_feature_audit_markdown: Improving the Moral Trade Feature at MoralTrade.org markdown","source:moral_trade_feature_audit_pdf: Improving the Moral Trade Feature at MoralTrade.org PDF","source-artifact:moral_trade_feature_audit_markdown: moral trade4.md source artifact hash","source-artifact:moral_trade_feature_audit_pdf: Improving the Moral Trade Feature at MoralTrade.org.pdf source artifact hash","route-evidence:/api/moral-trade/ai-governance/health: /api/moral-trade/ai-governance/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/api-contract: /api/moral-trade/api-contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/background-rls-audit/contract: /api/moral-trade/background-rls-audit/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/challenge-appeal/contract: /api/moral-trade/challenge-appeal/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/copilot/contract: /api/moral-trade/copilot/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/copilot/review: /api/moral-trade/copilot/review resolves to a Next.js route artifact","route-evidence:/api/moral-trade/data-model/contract: /api/moral-trade/data-model/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/disclosure/contract: /api/moral-trade/disclosure/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/document-coverage/health: /api/moral-trade/document-coverage/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/evaluation/health: /api/moral-trade/evaluation/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/externality/health: /api/moral-trade/externality/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/health: /api/moral-trade/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/incident-response/health: /api/moral-trade/incident-response/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/match-signal/contract: /api/moral-trade/match-signal/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/operations/health: /api/moral-trade/operations/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/performance/health: /api/moral-trade/performance/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/policy-bundle/contract: /api/moral-trade/policy-bundle/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/private-overlap/contract: /api/moral-trade/private-overlap/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/provenance/schema: /api/moral-trade/provenance/schema resolves to a Next.js route artifact","route-evidence:/api/moral-trade/reasoning/packets: /api/moral-trade/reasoning/packets resolves to a Next.js route artifact","route-evidence:/api/moral-trade/review-workflow/contract: /api/moral-trade/review-workflow/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/review-workflow/evaluate: /api/moral-trade/review-workflow/evaluate resolves to a Next.js route artifact","route-evidence:/api/moral-trade/schemas: /api/moral-trade/schemas resolves to a Next.js route artifact","route-evidence:/api/moral-trade/security/health: /api/moral-trade/security/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/transparency/report: /api/moral-trade/transparency/report resolves to a Next.js route artifact","route-evidence:/moral-trade/technical-spec: /moral-trade/technical-spec resolves to a Next.js route artifact","route-evidence:/validation: /validation resolves to a Next.js route artifact","instruction:canonical-build: Canonical build instruction is present and validator-bound","source-stack:toby_ord_moral_trade: amirrorclear.net / Toby Ord, Moral Trade implementation trace","source-stack:moraltrade_public_materials: MoralTrade.org public materials implementation trace","source-stack:oecd_due_diligence: OECD Due Diligence Guidance for Responsible Business Conduct implementation trace","source-stack:un_guiding_principles: UN Guiding Principles on Business and Human Rights implementation trace","source-stack:ilo_principles: ILO MNE Declaration and Fundamental Principles and Rights at Work implementation trace","source-stack:eti_fairtrade_standards: ETI Base Code and Fairtrade Standards implementation trace","source-stack:open_supply_hub: Open Supply Hub implementation trace","source-stack:w3c_prov: W3C PROV implementation trace","source-stack:gs1_epcis: GS1 EPCIS 2.0 implementation trace","source-stack:nist_ai_rmf_xai: NIST AI RMF 1.0 and NIST XAI principles implementation trace","source-stack:fairness_and_ml_docs: Hardt/Price/Srebro, Kleinberg/Mullainathan/Raghavan, Model Cards, and Datasheets for Datasets implementation trace","source-stack:human_ai_interaction: Amershi et al. and Kulesza et al. implementation trace","testing-plan:schema_tests: Schema tests coverage","testing-plan:policy_tests: Policy tests coverage","testing-plan:evidence_tests: Evidence tests coverage","testing-plan:privacy_tests: Privacy tests coverage","testing-plan:fairness_tests: Fairness tests coverage","testing-plan:ux_tests: UX tests coverage","testing-plan:resilience_tests: Resilience tests coverage","requirement:core_data_model_public_validator_suite: Core data model and public validators","requirement:workflow_cards_factor_codes: Workflow cards and factor codes","requirement:provenance_first_evidence: Provenance-first evidence objects","requirement:schema_bound_copilot: Schema-bound copilot","requirement:privacy_match_disclosure_guardrails: Privacy, matching, and disclosure guardrails","requirement:externality_challenge_appeal_review: Externality, challenge, and appeal review","requirement:evaluation_operations_security_performance: Evaluation, operations, security, and performance gates"]},"sourceDocumentArtifacts":[{"key":"moral_trade_feature_audit_markdown","path":"moral trade4.md","artifactHash":null,"expectedHash":"sha256:8d9c8cc38efcc51011306b93019a400c0236af9aa1c8989444e45744fde6cd11","present":false,"hashMatches":false},{"key":"moral_trade_feature_audit_pdf","path":"Improving the Moral Trade Feature at MoralTrade.org.pdf","artifactHash":null,"expectedHash":"sha256:c006e0c0bfcb915b45585c24d39a4216ac1e61721bf24e12d859240240b0f509","present":false,"hashMatches":false}],"sourceStackReferences":[{"key":"toby_ord_moral_trade","priority":"highest","source":"amirrorclear.net / Toby Ord, Moral Trade","guidance":"Default baselines, Pareto improvement, factual trust, counterfactual trust, bargaining, and perverse-incentive controls.","evidenceFiles":["src/lib/moral-trade/protocol.ts","src/lib/proposal-review.ts","src/app/anti-threat-baseline/page.tsx"],"routeEvidence":["/api/moral-trade/health","/validation"]},{"key":"moraltrade_public_materials","priority":"highest","source":"MoralTrade.org public materials","guidance":"Current product commitments, safety boundaries, deterministic matching posture, privacy model, and review-state language remain authoritative.","evidenceFiles":["docs/moral-trade/codex-build-instruction.md","src/app/moral-trade/technical-spec/page.tsx","src/lib/moral-trade/api-contract.ts"],"routeEvidence":["/moral-trade/technical-spec","/api/moral-trade/document-coverage/health"]},{"key":"oecd_due_diligence","priority":"high","source":"OECD Due Diligence Guidance for Responsible Business Conduct","guidance":"Use the six-step due-diligence process for policy embedding, impact identification, mitigation, tracking, communication, and remediation.","evidenceFiles":["config/moral-trade/externality-profile.json","src/lib/moral-trade/externality.ts"],"routeEvidence":["/api/moral-trade/externality/health"]},{"key":"un_guiding_principles","priority":"high","source":"UN Guiding Principles on Business and Human Rights","guidance":"Externality and remedy logic must preserve affected-party standing, human-rights impact review, and remedy paths.","evidenceFiles":["config/moral-trade/externality-profile.json","src/lib/moral-trade/challenge-appeal.ts"],"routeEvidence":["/api/moral-trade/externality/health","/api/moral-trade/challenge-appeal/contract"]},{"key":"ilo_principles","priority":"high","source":"ILO MNE Declaration and Fundamental Principles and Rights at Work","guidance":"Labor, supplier, pressure, forced-labor, child-labor, discrimination, association, and workplace claims require explicit externality standards.","evidenceFiles":["config/moral-trade/externality-profile.json","src/lib/moral-trade/externality.ts"],"routeEvidence":["/api/moral-trade/externality/health"]},{"key":"eti_fairtrade_standards","priority":"high","source":"ETI Base Code and Fairtrade Standards","guidance":"Ethical-trade, destination, producer, and certification-style claims need practical standard gates before reliance.","evidenceFiles":["config/moral-trade/externality-profile.json","src/lib/moral-trade/externality.ts"],"routeEvidence":["/api/moral-trade/externality/health"]},{"key":"open_supply_hub","priority":"high","source":"Open Supply Hub","guidance":"Supplier-like external entities need public identifier, deduplication, and traceability discipline.","evidenceFiles":["src/lib/moral-trade/provenance.ts","config/moral-trade/externality-profile.json"],"routeEvidence":["/api/moral-trade/provenance/schema","/api/moral-trade/externality/health"]},{"key":"w3c_prov","priority":"high","source":"W3C PROV","guidance":"Evidence claims should be represented as entities, activities, agents, traceability events, and scoped claim-artifact links.","evidenceFiles":["src/lib/moral-trade/provenance.ts","supabase/migrations/20260529_moral_trade_provenance_persistence.sql"],"routeEvidence":["/api/moral-trade/provenance/schema"]},{"key":"gs1_epcis","priority":"medium_high","source":"GS1 EPCIS 2.0","guidance":"Event-style traceability should keep interoperable what/where/why/agent records for external evidence.","evidenceFiles":["src/lib/moral-trade/provenance.ts"],"routeEvidence":["/api/moral-trade/provenance/schema"]},{"key":"nist_ai_rmf_xai","priority":"high","source":"NIST AI RMF 1.0 and NIST XAI principles","guidance":"Any AI assistance needs governance, explainability, privacy, security, accountability, human control, and documented explanation layers.","evidenceFiles":["config/moral-trade/ai-governance-profile.json","src/lib/moral-trade/ai-governance.ts","src/lib/moral-trade/copilot.ts"],"routeEvidence":["/api/moral-trade/ai-governance/health","/api/moral-trade/copilot/contract"]},{"key":"fairness_and_ml_docs","priority":"high","source":"Hardt/Price/Srebro, Kleinberg/Mullainathan/Raghavan, Model Cards, and Datasheets for Datasets","guidance":"Fairness trade-offs, benchmark slices, model cards, datasheets, and promotion audits are required before any ML scaling.","evidenceFiles":["config/moral-trade/evaluation-profile.json","config/moral-trade/ai-governance-profile.json","src/lib/moral-trade/evaluation.ts","src/lib/moral-trade/ai-governance.ts"],"routeEvidence":["/api/moral-trade/evaluation/health","/api/moral-trade/ai-governance/health"]},{"key":"human_ai_interaction","priority":"high","source":"Amershi et al. and Kulesza et al.","guidance":"Human-AI interaction should use staged explanation, bounded outputs, reviewer summaries, reversible assistance, and explanatory debugging.","evidenceFiles":["config/moral-trade/copilot-contract.json","src/lib/moral-trade/copilot.ts","src/lib/moral-trade/evaluation.ts"],"routeEvidence":["/api/moral-trade/copilot/contract","/api/moral-trade/evaluation/health"]}],"testingPlanCoverage":[{"key":"schema_tests","label":"Schema tests","passCondition":"No invalid state transitions; no missing required fields enter matchable status.","evidenceFiles":["src/lib/moral-trade/protocol.ts","src/lib/moral-trade/data-model.ts","src/lib/moral-trade/schema-registry.ts"],"testFiles":["src/lib/moral-trade/protocol.test.ts","src/lib/moral-trade/data-model.test.ts","src/lib/moral-trade/schema-registry.test.ts"],"routeEvidence":["/api/moral-trade/health","/api/moral-trade/data-model/contract","/api/moral-trade/schemas"]},{"key":"policy_tests","label":"Policy tests","passCondition":"Seeded threats, coercion, fraud, illegal asks, doxxing, political-campaign offsets, and escalated-harm fixtures never silently pass.","evidenceFiles":["src/lib/moral-trade/policy-bundle.ts","src/lib/moral-trade/copilot.ts","src/lib/proposal-review.ts"],"testFiles":["src/lib/moral-trade/policy-bundle.test.ts","src/lib/moral-trade/copilot.test.ts","src/lib/proposal-review.test.ts"],"routeEvidence":["/api/moral-trade/policy-bundle/contract","/api/moral-trade/copilot/review","/api/moral-trade/review-workflow/evaluate"]},{"key":"evidence_tests","label":"Evidence tests","passCondition":"Wrong-scope, duplicate, stale, unhashable, or unreviewed artifacts cannot produce reviewed completion.","evidenceFiles":["src/lib/moral-trade/provenance.ts","src/lib/moral-trade/evidence-persistence.ts","src/lib/moral-trade/agreement-write-path.ts"],"testFiles":["src/lib/moral-trade/provenance.test.ts","src/lib/moral-trade/evidence-persistence.test.ts","src/lib/moral-trade/agreement-write-path.test.ts"],"routeEvidence":["/api/moral-trade/provenance/schema","/api/moral-trade/reasoning/packets"]},{"key":"privacy_tests","label":"Privacy tests","passCondition":"Exact wish text, sensitive constraints, raw source notes, contact details, and private match text stay out of public cards and analytics.","evidenceFiles":["src/lib/moral-trade/disclosure.ts","src/lib/moral-trade/match-signal.ts","src/lib/background-privacy-controls.ts","src/lib/moral-trade/transparency-report.ts"],"testFiles":["src/lib/moral-trade/disclosure.test.ts","src/lib/moral-trade/match-signal.test.ts","src/lib/background-privacy-controls.test.ts","src/lib/moral-trade/transparency-report.test.ts"],"routeEvidence":["/api/moral-trade/disclosure/contract","/api/moral-trade/match-signal/contract","/api/moral-trade/transparency/report"]},{"key":"fairness_tests","label":"Fairness tests","passCondition":"Cause-area, geography, mode, privacy-stage, and governed sensitive-attribute surfacing deviations are thresholded, redacted, and reviewed.","evidenceFiles":["config/moral-trade/evaluation-profile.json","src/lib/moral-trade/evaluation.ts","src/lib/moral-trade/ai-governance.ts"],"testFiles":["src/lib/moral-trade/evaluation.test.ts","src/lib/moral-trade/ai-governance.test.ts"],"routeEvidence":["/api/moral-trade/evaluation/health","/api/moral-trade/ai-governance/health"]},{"key":"ux_tests","label":"UX tests","passCondition":"Time to first valid draft, explanation usefulness, reviewer efficiency, and overrule stability improve or receive a public reason code before promotion.","evidenceFiles":["config/moral-trade/evaluation-profile.json","src/lib/moral-trade/evaluation.ts","src/app/moral-trade/technical-spec/page.tsx"],"testFiles":["src/lib/moral-trade/evaluation.test.ts","src/lib/public-route-smoke.test.ts"],"routeEvidence":["/api/moral-trade/evaluation/health","/moral-trade/technical-spec"]},{"key":"resilience_tests","label":"Resilience tests","passCondition":"Copilot failures, provider outages, route errors, and state-transition replays fall back to deterministic or manual paths without mutating state.","evidenceFiles":["src/lib/moral-trade/operations.ts","src/lib/moral-trade/performance.ts","src/lib/moral-trade/copilot.ts","src/lib/moral-trade/offer-write-path.ts"],"testFiles":["src/lib/moral-trade/operations.test.ts","src/lib/moral-trade/performance.test.ts","src/lib/moral-trade/copilot.test.ts","src/lib/moral-trade/offer-write-path.test.ts"],"routeEvidence":["/api/moral-trade/operations/health","/api/moral-trade/performance/health","/api/moral-trade/copilot/review"]}],"canonicalInstruction":{"path":"docs/moral-trade/codex-build-instruction.md","requiredPhraseCount":11,"verificationCommands":["node --import tsx --test src/lib/moral-trade/*.test.ts src/lib/background-ai-shadow.test.ts src/lib/background-networking.test.ts src/lib/background-notification-policy.test.ts src/lib/background-notifications.test.ts src/lib/background-privacy-controls.test.ts src/lib/background-explanations.test.ts src/lib/background-opportunity-briefs.test.ts src/lib/background-private-overlap.test.ts src/lib/wish-registry.test.ts src/lib/public-route-smoke.test.ts","npm run lint","git diff --check","npm run build"],"routeEvidence":["/api/moral-trade/health","/api/moral-trade/document-coverage/health","/api/moral-trade/api-contract","/api/moral-trade/data-model/contract","/api/moral-trade/schemas","/api/moral-trade/copilot/contract","/api/moral-trade/review-workflow/contract","/api/moral-trade/reasoning/packets","/api/moral-trade/provenance/schema","/api/moral-trade/match-signal/contract","/api/moral-trade/disclosure/contract","/api/moral-trade/challenge-appeal/contract","/api/moral-trade/evaluation/health","/api/moral-trade/operations/health","/api/moral-trade/security/health","/api/moral-trade/performance/health","/api/moral-trade/incident-response/health","/api/moral-trade/externality/health","/api/moral-trade/ai-governance/health","/api/moral-trade/private-overlap/contract","/api/moral-trade/transparency/report"],"artifactHash":null},"publicContract":{"sourceDocuments":[{"artifactHash":null,"expectedHash":"sha256:8d9c8cc38efcc51011306b93019a400c0236af9aa1c8989444e45744fde6cd11","key":"moral_trade_feature_audit_markdown","label":"Improving the Moral Trade Feature at MoralTrade.org markdown","path":"moral trade4.md","required":true,"requiredPhraseCount":6},{"artifactHash":null,"expectedHash":"sha256:c006e0c0bfcb915b45585c24d39a4216ac1e61721bf24e12d859240240b0f509","key":"moral_trade_feature_audit_pdf","label":"Improving the Moral Trade Feature at MoralTrade.org PDF","path":"Improving the Moral Trade Feature at MoralTrade.org.pdf","required":true,"requiredPhraseCount":0}],"canonicalInstruction":{"path":"docs/moral-trade/codex-build-instruction.md","requiredPhraseCount":11,"verificationCommands":["node --import tsx --test src/lib/moral-trade/*.test.ts src/lib/background-ai-shadow.test.ts src/lib/background-networking.test.ts src/lib/background-notification-policy.test.ts src/lib/background-notifications.test.ts src/lib/background-privacy-controls.test.ts src/lib/background-explanations.test.ts src/lib/background-opportunity-briefs.test.ts src/lib/background-private-overlap.test.ts src/lib/wish-registry.test.ts src/lib/public-route-smoke.test.ts","npm run lint","git diff --check","npm run build"],"routeEvidence":["/api/moral-trade/health","/api/moral-trade/document-coverage/health","/api/moral-trade/api-contract","/api/moral-trade/data-model/contract","/api/moral-trade/schemas","/api/moral-trade/copilot/contract","/api/moral-trade/review-workflow/contract","/api/moral-trade/reasoning/packets","/api/moral-trade/provenance/schema","/api/moral-trade/match-signal/contract","/api/moral-trade/disclosure/contract","/api/moral-trade/challenge-appeal/contract","/api/moral-trade/evaluation/health","/api/moral-trade/operations/health","/api/moral-trade/security/health","/api/moral-trade/performance/health","/api/moral-trade/incident-response/health","/api/moral-trade/externality/health","/api/moral-trade/ai-governance/health","/api/moral-trade/private-overlap/contract","/api/moral-trade/transparency/report"],"artifactHash":null},"sourceStackReferences":[{"key":"toby_ord_moral_trade","priority":"highest","source":"amirrorclear.net / Toby Ord, Moral Trade","guidance":"Default baselines, Pareto improvement, factual trust, counterfactual trust, bargaining, and perverse-incentive controls.","evidenceFiles":["src/lib/moral-trade/protocol.ts","src/lib/proposal-review.ts","src/app/anti-threat-baseline/page.tsx"],"routeEvidence":["/api/moral-trade/health","/validation"]},{"key":"moraltrade_public_materials","priority":"highest","source":"MoralTrade.org public materials","guidance":"Current product commitments, safety boundaries, deterministic matching posture, privacy model, and review-state language remain authoritative.","evidenceFiles":["docs/moral-trade/codex-build-instruction.md","src/app/moral-trade/technical-spec/page.tsx","src/lib/moral-trade/api-contract.ts"],"routeEvidence":["/moral-trade/technical-spec","/api/moral-trade/document-coverage/health"]},{"key":"oecd_due_diligence","priority":"high","source":"OECD Due Diligence Guidance for Responsible Business Conduct","guidance":"Use the six-step due-diligence process for policy embedding, impact identification, mitigation, tracking, communication, and remediation.","evidenceFiles":["config/moral-trade/externality-profile.json","src/lib/moral-trade/externality.ts"],"routeEvidence":["/api/moral-trade/externality/health"]},{"key":"un_guiding_principles","priority":"high","source":"UN Guiding Principles on Business and Human Rights","guidance":"Externality and remedy logic must preserve affected-party standing, human-rights impact review, and remedy paths.","evidenceFiles":["config/moral-trade/externality-profile.json","src/lib/moral-trade/challenge-appeal.ts"],"routeEvidence":["/api/moral-trade/externality/health","/api/moral-trade/challenge-appeal/contract"]},{"key":"ilo_principles","priority":"high","source":"ILO MNE Declaration and Fundamental Principles and Rights at Work","guidance":"Labor, supplier, pressure, forced-labor, child-labor, discrimination, association, and workplace claims require explicit externality standards.","evidenceFiles":["config/moral-trade/externality-profile.json","src/lib/moral-trade/externality.ts"],"routeEvidence":["/api/moral-trade/externality/health"]},{"key":"eti_fairtrade_standards","priority":"high","source":"ETI Base Code and Fairtrade Standards","guidance":"Ethical-trade, destination, producer, and certification-style claims need practical standard gates before reliance.","evidenceFiles":["config/moral-trade/externality-profile.json","src/lib/moral-trade/externality.ts"],"routeEvidence":["/api/moral-trade/externality/health"]},{"key":"open_supply_hub","priority":"high","source":"Open Supply Hub","guidance":"Supplier-like external entities need public identifier, deduplication, and traceability discipline.","evidenceFiles":["src/lib/moral-trade/provenance.ts","config/moral-trade/externality-profile.json"],"routeEvidence":["/api/moral-trade/provenance/schema","/api/moral-trade/externality/health"]},{"key":"w3c_prov","priority":"high","source":"W3C PROV","guidance":"Evidence claims should be represented as entities, activities, agents, traceability events, and scoped claim-artifact links.","evidenceFiles":["src/lib/moral-trade/provenance.ts","supabase/migrations/20260529_moral_trade_provenance_persistence.sql"],"routeEvidence":["/api/moral-trade/provenance/schema"]},{"key":"gs1_epcis","priority":"medium_high","source":"GS1 EPCIS 2.0","guidance":"Event-style traceability should keep interoperable what/where/why/agent records for external evidence.","evidenceFiles":["src/lib/moral-trade/provenance.ts"],"routeEvidence":["/api/moral-trade/provenance/schema"]},{"key":"nist_ai_rmf_xai","priority":"high","source":"NIST AI RMF 1.0 and NIST XAI principles","guidance":"Any AI assistance needs governance, explainability, privacy, security, accountability, human control, and documented explanation layers.","evidenceFiles":["config/moral-trade/ai-governance-profile.json","src/lib/moral-trade/ai-governance.ts","src/lib/moral-trade/copilot.ts"],"routeEvidence":["/api/moral-trade/ai-governance/health","/api/moral-trade/copilot/contract"]},{"key":"fairness_and_ml_docs","priority":"high","source":"Hardt/Price/Srebro, Kleinberg/Mullainathan/Raghavan, Model Cards, and Datasheets for Datasets","guidance":"Fairness trade-offs, benchmark slices, model cards, datasheets, and promotion audits are required before any ML scaling.","evidenceFiles":["config/moral-trade/evaluation-profile.json","config/moral-trade/ai-governance-profile.json","src/lib/moral-trade/evaluation.ts","src/lib/moral-trade/ai-governance.ts"],"routeEvidence":["/api/moral-trade/evaluation/health","/api/moral-trade/ai-governance/health"]},{"key":"human_ai_interaction","priority":"high","source":"Amershi et al. and Kulesza et al.","guidance":"Human-AI interaction should use staged explanation, bounded outputs, reviewer summaries, reversible assistance, and explanatory debugging.","evidenceFiles":["config/moral-trade/copilot-contract.json","src/lib/moral-trade/copilot.ts","src/lib/moral-trade/evaluation.ts"],"routeEvidence":["/api/moral-trade/copilot/contract","/api/moral-trade/evaluation/health"]}],"testingPlanCoverage":[{"key":"schema_tests","label":"Schema tests","passCondition":"No invalid state transitions; no missing required fields enter matchable status.","evidenceFiles":["src/lib/moral-trade/protocol.ts","src/lib/moral-trade/data-model.ts","src/lib/moral-trade/schema-registry.ts"],"testFiles":["src/lib/moral-trade/protocol.test.ts","src/lib/moral-trade/data-model.test.ts","src/lib/moral-trade/schema-registry.test.ts"],"routeEvidence":["/api/moral-trade/health","/api/moral-trade/data-model/contract","/api/moral-trade/schemas"]},{"key":"policy_tests","label":"Policy tests","passCondition":"Seeded threats, coercion, fraud, illegal asks, doxxing, political-campaign offsets, and escalated-harm fixtures never silently pass.","evidenceFiles":["src/lib/moral-trade/policy-bundle.ts","src/lib/moral-trade/copilot.ts","src/lib/proposal-review.ts"],"testFiles":["src/lib/moral-trade/policy-bundle.test.ts","src/lib/moral-trade/copilot.test.ts","src/lib/proposal-review.test.ts"],"routeEvidence":["/api/moral-trade/policy-bundle/contract","/api/moral-trade/copilot/review","/api/moral-trade/review-workflow/evaluate"]},{"key":"evidence_tests","label":"Evidence tests","passCondition":"Wrong-scope, duplicate, stale, unhashable, or unreviewed artifacts cannot produce reviewed completion.","evidenceFiles":["src/lib/moral-trade/provenance.ts","src/lib/moral-trade/evidence-persistence.ts","src/lib/moral-trade/agreement-write-path.ts"],"testFiles":["src/lib/moral-trade/provenance.test.ts","src/lib/moral-trade/evidence-persistence.test.ts","src/lib/moral-trade/agreement-write-path.test.ts"],"routeEvidence":["/api/moral-trade/provenance/schema","/api/moral-trade/reasoning/packets"]},{"key":"privacy_tests","label":"Privacy tests","passCondition":"Exact wish text, sensitive constraints, raw source notes, contact details, and private match text stay out of public cards and analytics.","evidenceFiles":["src/lib/moral-trade/disclosure.ts","src/lib/moral-trade/match-signal.ts","src/lib/background-privacy-controls.ts","src/lib/moral-trade/transparency-report.ts"],"testFiles":["src/lib/moral-trade/disclosure.test.ts","src/lib/moral-trade/match-signal.test.ts","src/lib/background-privacy-controls.test.ts","src/lib/moral-trade/transparency-report.test.ts"],"routeEvidence":["/api/moral-trade/disclosure/contract","/api/moral-trade/match-signal/contract","/api/moral-trade/transparency/report"]},{"key":"fairness_tests","label":"Fairness tests","passCondition":"Cause-area, geography, mode, privacy-stage, and governed sensitive-attribute surfacing deviations are thresholded, redacted, and reviewed.","evidenceFiles":["config/moral-trade/evaluation-profile.json","src/lib/moral-trade/evaluation.ts","src/lib/moral-trade/ai-governance.ts"],"testFiles":["src/lib/moral-trade/evaluation.test.ts","src/lib/moral-trade/ai-governance.test.ts"],"routeEvidence":["/api/moral-trade/evaluation/health","/api/moral-trade/ai-governance/health"]},{"key":"ux_tests","label":"UX tests","passCondition":"Time to first valid draft, explanation usefulness, reviewer efficiency, and overrule stability improve or receive a public reason code before promotion.","evidenceFiles":["config/moral-trade/evaluation-profile.json","src/lib/moral-trade/evaluation.ts","src/app/moral-trade/technical-spec/page.tsx"],"testFiles":["src/lib/moral-trade/evaluation.test.ts","src/lib/public-route-smoke.test.ts"],"routeEvidence":["/api/moral-trade/evaluation/health","/moral-trade/technical-spec"]},{"key":"resilience_tests","label":"Resilience tests","passCondition":"Copilot failures, provider outages, route errors, and state-transition replays fall back to deterministic or manual paths without mutating state.","evidenceFiles":["src/lib/moral-trade/operations.ts","src/lib/moral-trade/performance.ts","src/lib/moral-trade/copilot.ts","src/lib/moral-trade/offer-write-path.ts"],"testFiles":["src/lib/moral-trade/operations.test.ts","src/lib/moral-trade/performance.test.ts","src/lib/moral-trade/copilot.test.ts","src/lib/moral-trade/offer-write-path.test.ts"],"routeEvidence":["/api/moral-trade/operations/health","/api/moral-trade/performance/health","/api/moral-trade/copilot/review"]}],"requirements":[{"key":"core_data_model_public_validator_suite","label":"Core data model and public validators","recommendation":"Formalize the core Moral Trade data model, state transitions, schemas, and public validator suite in the MPGF style.","sourceDocumentKeys":["moral_trade_feature_audit_markdown"],"evidenceFiles":["src/lib/moral-trade/protocol.ts","src/lib/moral-trade/data-model.ts","src/lib/moral-trade/schema-registry.ts","src/app/api/moral-trade/data-model/contract/route.ts","src/app/api/moral-trade/schemas/route.ts"],"requiredEvidencePhrases":["MORAL_TRADE_SCHEMA_REGISTRY_VERSION","validateMoralTradeSchemaRegistry","profile-json-schema-conformance"],"testFiles":["src/lib/moral-trade/protocol.test.ts","src/lib/moral-trade/data-model.test.ts","src/lib/moral-trade/schema-registry.test.ts"],"routeEvidence":["/api/moral-trade/health","/api/moral-trade/data-model/contract","/api/moral-trade/schemas"]},{"key":"workflow_cards_factor_codes","label":"Workflow cards and factor codes","recommendation":"Replace text-heavy reliance decisions with workflow cards that expose why a draft passed, failed, or needs review using structured factor codes.","sourceDocumentKeys":["moral_trade_feature_audit_markdown"],"evidenceFiles":["src/lib/proposal-review.ts","src/app/offers/[offerId]/page.tsx","src/app/offers/examples/[exampleId]/page.tsx","src/app/moral-trade/page.tsx","src/app/reasoning-center/page.tsx"],"requiredEvidencePhrases":["getOfferReviewWorkflowCards","no_global_moral_ranking","reviewer_summary"],"testFiles":["src/lib/proposal-review.test.ts","src/lib/public-route-smoke.test.ts","src/lib/moral-trade/reasoning-packets.test.ts"],"routeEvidence":["/api/moral-trade/review-workflow/contract","/api/moral-trade/review-workflow/evaluate","/api/moral-trade/reasoning/packets"]},{"key":"provenance_first_evidence","label":"Provenance-first evidence objects","recommendation":"Track evidence as entities, activities, agents, traceability events, artifact hashes, and append-only state transitions.","sourceDocumentKeys":["moral_trade_feature_audit_markdown"],"evidenceFiles":["src/lib/moral-trade/provenance.ts","src/lib/moral-trade/evidence-persistence.ts","src/lib/moral-trade/agreement-write-path.ts","supabase/migrations/20260529_moral_trade_provenance_persistence.sql","supabase/migrations/20260529_moral_trade_review_decision_idempotency.sql"],"requiredEvidencePhrases":["MoralTradeProvenanceActivity","provenance_agent","traceability_event","persistence-append-only-policies"],"testFiles":["src/lib/moral-trade/provenance.test.ts","src/lib/moral-trade/evidence-persistence.test.ts","src/lib/moral-trade/agreement-write-path.test.ts"],"routeEvidence":["/api/moral-trade/provenance/schema"]},{"key":"schema_bound_copilot","label":"Schema-bound copilot","recommendation":"Use Codex only for bounded drafting, critique, evidence checklists, and reviewer summaries; never for hidden moral ranking, outreach, private-feed mining, or state changes.","sourceDocumentKeys":["moral_trade_feature_audit_markdown"],"evidenceFiles":["config/moral-trade/copilot-contract.json","src/lib/moral-trade/copilot.ts","src/app/api/moral-trade/copilot/contract/route.ts","src/app/api/moral-trade/copilot/review/route.ts","src/lib/moral-trade/policy-bundle.ts"],"requiredEvidencePhrases":["MoralTradeCopilotOutput","no_global_moral_ranking","validateMoralTradeCopilotOutput"],"testFiles":["src/lib/moral-trade/copilot.test.ts","src/lib/moral-trade/policy-bundle.test.ts"],"routeEvidence":["/api/moral-trade/copilot/contract","/api/moral-trade/copilot/review","/api/moral-trade/policy-bundle/contract"]},{"key":"privacy_match_disclosure_guardrails","label":"Privacy, matching, and disclosure guardrails","recommendation":"Keep exact wishes, contact details, raw source notes, and counterparties hidden until staged consent validates; matching remains rule-based and redacted.","sourceDocumentKeys":["moral_trade_feature_audit_markdown"],"evidenceFiles":["src/lib/moral-trade/match-signal.ts","src/lib/moral-trade/disclosure.ts","src/lib/background-privacy-controls.ts","src/app/api/moral-trade/match-signal/evaluate/route.ts","src/app/api/moral-trade/disclosure/evaluate/route.ts"],"requiredEvidencePhrases":["redacted_profile_match_preview_only","evaluateMoralTradeDisclosureGrant","raw_source_notes_redacted"],"testFiles":["src/lib/moral-trade/match-signal.test.ts","src/lib/moral-trade/disclosure.test.ts","src/lib/background-privacy-controls.test.ts"],"routeEvidence":["/api/moral-trade/match-signal/contract","/api/moral-trade/disclosure/contract","/api/moral-trade/background-rls-audit/contract"]},{"key":"externality_challenge_appeal_review","label":"Externality, challenge, and appeal review","recommendation":"Separate factual proof, counterfactual baseline credibility, externality review, challenge windows, remedies, standing, and narrow appeal scope.","sourceDocumentKeys":["moral_trade_feature_audit_markdown"],"evidenceFiles":["src/lib/moral-trade/externality.ts","src/lib/moral-trade/challenge-appeal.ts","src/lib/moral-trade/protocol.ts","src/app/validation/page.tsx"],"requiredEvidencePhrases":["evaluateMoralTradeExternalityReview","affected_party_standing","challenge_window_required","deterministic_challenge_appeal_scope_only"],"testFiles":["src/lib/moral-trade/externality.test.ts","src/lib/moral-trade/challenge-appeal.test.ts","src/lib/moral-trade/protocol.test.ts"],"routeEvidence":["/api/moral-trade/externality/health","/api/moral-trade/challenge-appeal/contract","/validation"]},{"key":"evaluation_operations_security_performance","label":"Evaluation, operations, security, and performance gates","recommendation":"Publish evaluation metrics, privacy-safe reporting, route resilience, API/security posture, rate limits, retention, incident response, and guarded rollout gates before claiming readiness.","sourceDocumentKeys":["moral_trade_feature_audit_markdown"],"evidenceFiles":["src/lib/moral-trade/evaluation.ts","src/lib/moral-trade/operations.ts","src/lib/moral-trade/security.ts","src/lib/moral-trade/performance.ts","src/lib/moral-trade/incident-response.ts","src/lib/moral-trade/transparency-report.ts","src/lib/moral-trade/ai-governance.ts","src/lib/moral-trade/api-contract.ts","src/lib/moral-trade/email-copy.ts"],"requiredEvidencePhrases":["validateMoralTradeEvaluationProfile","validateMoralTradeOperationsProfile","validateMoralTradeSecurityProfile","validateMoralTradePerformanceProfile","validateMoralTradeIncidentResponseProfile","MORAL_TRADE_TRANSPARENCY_REPORT_VERSION","validateMoralTradeAiGovernanceProfile","sampleDocumentationPacketFailures"],"testFiles":["src/lib/moral-trade/evaluation.test.ts","src/lib/moral-trade/operations.test.ts","src/lib/moral-trade/security.test.ts","src/lib/moral-trade/performance.test.ts","src/lib/moral-trade/incident-response.test.ts","src/lib/moral-trade/transparency-report.test.ts","src/lib/moral-trade/ai-governance.test.ts","src/lib/moral-trade/api-contract.test.ts","src/lib/moral-trade/email-copy.test.ts"],"routeEvidence":["/api/moral-trade/evaluation/health","/api/moral-trade/operations/health","/api/moral-trade/security/health","/api/moral-trade/performance/health","/api/moral-trade/incident-response/health","/api/moral-trade/transparency/report","/api/moral-trade/ai-governance/health","/api/moral-trade/api-contract"]}],"nonClaims":["This coverage profile proves repository artifacts and validator coverage, not live production liquidity or successful real-world trades.","The attached PDF and Markdown source are verified as present and hash-checked; the Markdown source is the phrase-checked requirements artifact used by this validator.","MPGF production evidence files remain separately governed and are not fabricated by this Moral Trade document-coverage profile."]},"blockers":["source:moral_trade_feature_audit_markdown: Improving the Moral Trade Feature at MoralTrade.org markdown","source:moral_trade_feature_audit_pdf: Improving the Moral Trade Feature at MoralTrade.org PDF","source-artifact:moral_trade_feature_audit_markdown: moral trade4.md source artifact hash","source-artifact:moral_trade_feature_audit_pdf: Improving the Moral Trade Feature at MoralTrade.org.pdf source artifact hash","route-evidence:/api/moral-trade/ai-governance/health: /api/moral-trade/ai-governance/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/api-contract: /api/moral-trade/api-contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/background-rls-audit/contract: /api/moral-trade/background-rls-audit/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/challenge-appeal/contract: /api/moral-trade/challenge-appeal/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/copilot/contract: /api/moral-trade/copilot/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/copilot/review: /api/moral-trade/copilot/review resolves to a Next.js route artifact","route-evidence:/api/moral-trade/data-model/contract: /api/moral-trade/data-model/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/disclosure/contract: /api/moral-trade/disclosure/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/document-coverage/health: /api/moral-trade/document-coverage/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/evaluation/health: /api/moral-trade/evaluation/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/externality/health: /api/moral-trade/externality/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/health: /api/moral-trade/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/incident-response/health: /api/moral-trade/incident-response/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/match-signal/contract: /api/moral-trade/match-signal/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/operations/health: /api/moral-trade/operations/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/performance/health: /api/moral-trade/performance/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/policy-bundle/contract: /api/moral-trade/policy-bundle/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/private-overlap/contract: /api/moral-trade/private-overlap/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/provenance/schema: /api/moral-trade/provenance/schema resolves to a Next.js route artifact","route-evidence:/api/moral-trade/reasoning/packets: /api/moral-trade/reasoning/packets resolves to a Next.js route artifact","route-evidence:/api/moral-trade/review-workflow/contract: /api/moral-trade/review-workflow/contract resolves to a Next.js route artifact","route-evidence:/api/moral-trade/review-workflow/evaluate: /api/moral-trade/review-workflow/evaluate resolves to a Next.js route artifact","route-evidence:/api/moral-trade/schemas: /api/moral-trade/schemas resolves to a Next.js route artifact","route-evidence:/api/moral-trade/security/health: /api/moral-trade/security/health resolves to a Next.js route artifact","route-evidence:/api/moral-trade/transparency/report: /api/moral-trade/transparency/report resolves to a Next.js route artifact","route-evidence:/moral-trade/technical-spec: /moral-trade/technical-spec resolves to a Next.js route artifact","route-evidence:/validation: /validation resolves to a Next.js route artifact","instruction:canonical-build: Canonical build instruction is present and validator-bound","source-stack:toby_ord_moral_trade: amirrorclear.net / Toby Ord, Moral Trade implementation trace","source-stack:moraltrade_public_materials: MoralTrade.org public materials implementation trace","source-stack:oecd_due_diligence: OECD Due Diligence Guidance for Responsible Business Conduct implementation trace","source-stack:un_guiding_principles: UN Guiding Principles on Business and Human Rights implementation trace","source-stack:ilo_principles: ILO MNE Declaration and Fundamental Principles and Rights at Work implementation trace","source-stack:eti_fairtrade_standards: ETI Base Code and Fairtrade Standards implementation trace","source-stack:open_supply_hub: Open Supply Hub implementation trace","source-stack:w3c_prov: W3C PROV implementation trace","source-stack:gs1_epcis: GS1 EPCIS 2.0 implementation trace","source-stack:nist_ai_rmf_xai: NIST AI RMF 1.0 and NIST XAI principles implementation trace","source-stack:fairness_and_ml_docs: Hardt/Price/Srebro, Kleinberg/Mullainathan/Raghavan, Model Cards, and Datasheets for Datasets implementation trace","source-stack:human_ai_interaction: Amershi et al. and Kulesza et al. implementation trace","testing-plan:schema_tests: Schema tests coverage","testing-plan:policy_tests: Policy tests coverage","testing-plan:evidence_tests: Evidence tests coverage","testing-plan:privacy_tests: Privacy tests coverage","testing-plan:fairness_tests: Fairness tests coverage","testing-plan:ux_tests: UX tests coverage","testing-plan:resilience_tests: Resilience tests coverage","requirement:core_data_model_public_validator_suite: Core data model and public validators","requirement:workflow_cards_factor_codes: Workflow cards and factor codes","requirement:provenance_first_evidence: Provenance-first evidence objects","requirement:schema_bound_copilot: Schema-bound copilot","requirement:privacy_match_disclosure_guardrails: Privacy, matching, and disclosure guardrails","requirement:externality_challenge_appeal_review: Externality, challenge, and appeal review","requirement:evaluation_operations_security_performance: Evaluation, operations, security, and performance gates"]}