@instruments/sustainability 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/canon.ts","../src/data/claim-families-extended.ts","../src/data/frameworks-extended.ts","../src/data/source-types-extended.ts","../src/data/greenwash-lens.ts","../src/data/decision-contexts.ts","../src/material-records.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { extendedClaimFamilies } from \"./data/claim-families-extended.ts\";\nimport { extendedFrameworks } from \"./data/frameworks-extended.ts\";\nimport { extendedSourceTypes } from \"./data/source-types-extended.ts\";\n\nexport const impactAreaSchema = z.enum([\n \"climate_health\",\n \"human_health\",\n \"ecosystem_health\",\n \"social_health_equity\",\n \"circular_economy\",\n]);\n\nexport const claimKindSchema = z.enum([\n \"certification\",\n \"declaration\",\n \"standard_method\",\n \"chemical_exclusion\",\n \"rating_system_hint\",\n \"origin_claim\",\n \"impact_metric\",\n \"program_participation\",\n \"circularity_claim\",\n \"organizational_commitment\",\n]);\n\nexport const sourceAuthorityTierSchema = z.enum([\n \"official_registry\",\n \"programme_operator\",\n \"third_party_verified\",\n \"manufacturer_declared\",\n \"expert_interpretation\",\n]);\n\nexport const frameworkRelationshipSchema = z.enum([\n \"required_by\",\n \"may_support\",\n \"insufficient_alone\",\n \"contradicts\",\n \"not_applicable\",\n]);\n\nexport const greenwashingRiskSchema = z.enum([\"low\", \"medium\", \"high\"]);\nexport const reviewStatusSchema = z.enum([\"draft\", \"reviewed\", \"disputed\", \"deprecated\"]);\n\n/** A citation to the primary document or operator behind an entry. */\nexport const sourceLinkSchema = z.object({\n label: z.string().min(1),\n url: z.string().url(),\n});\n\nexport const sourceRequirementSchema = z.object({\n sourceTypeId: z.string().min(1),\n requiredFields: z.array(z.string().min(1)),\n minimumSourceAuthority: sourceAuthorityTierSchema,\n caveats: z.array(z.string().min(1)),\n});\n\nexport const frameworkMappingSchema = z.object({\n frameworkId: z.string().min(1),\n ruleVersionId: z.string().min(1),\n relationship: frameworkRelationshipSchema,\n});\n\nexport const frameworkRuleVersionSchema = z.object({\n id: z.string().min(1),\n label: z.string().min(1),\n status: reviewStatusSchema,\n notes: z.array(z.string().min(1)),\n});\n\nexport const frameworkCategorySchema = z.enum([\n \"building_rating\",\n \"health_wellbeing\",\n \"regenerative\",\n \"energy_carbon\",\n \"landscape\",\n \"waste\",\n \"vocabulary\",\n \"commitment\",\n]);\n\nexport const frameworkSchema = z.object({\n frameworkId: z.string().min(1),\n canonicalName: z.string().min(1),\n aliases: z.array(z.string().min(1)),\n operatorName: z.string().min(1),\n category: frameworkCategorySchema,\n region: z.string().min(1),\n plainLanguageSummary: z.string().min(1),\n sources: z.array(sourceLinkSchema).optional(),\n impactAreas: z.array(impactAreaSchema),\n ruleVersions: z.array(frameworkRuleVersionSchema),\n sourceAuthorityTier: sourceAuthorityTierSchema,\n caveats: z.array(z.string().min(1)),\n reviewStatus: reviewStatusSchema,\n});\n\nexport const claimFamilySchema = z.object({\n claimFamilyId: z.string().min(1),\n canonicalName: z.string().min(1),\n aliases: z.array(z.string().min(1)),\n claimKind: claimKindSchema,\n impactAreas: z.array(impactAreaSchema),\n definition: z.string().min(1),\n sourceRequirements: z.array(sourceRequirementSchema),\n frameworkMappings: z.array(frameworkMappingSchema),\n sourceAuthorityNotes: z.array(z.string().min(1)),\n greenwashingRisk: greenwashingRiskSchema,\n reviewStatus: reviewStatusSchema,\n});\n\nexport const sourceTypeCategorySchema = z.enum([\n \"lifecycle_carbon\",\n \"ingredient_chemical\",\n \"iaq_emissions\",\n \"material_origin\",\n \"circularity\",\n \"multi_attribute\",\n \"social_organizational\",\n \"regulatory\",\n \"programme_language\",\n]);\n\nexport const sourceTypeSchema = z.object({\n sourceTypeId: z.string().min(1),\n canonicalName: z.string().min(1),\n aliases: z.array(z.string().min(1)),\n category: sourceTypeCategorySchema,\n issuerExamples: z.array(z.string().min(1)),\n sources: z.array(sourceLinkSchema).optional(),\n supportsClaim: z.string().min(1),\n doesNotSupport: z.array(z.string().min(1)),\n requiredFields: z.array(z.string().min(1)),\n minimumSourceAuthority: sourceAuthorityTierSchema,\n expiryRelevant: z.boolean(),\n caveats: z.array(z.string().min(1)),\n reviewStatus: reviewStatusSchema,\n});\n\nexport const claimClassificationSchema = z.object({\n rawClaim: z.string().min(1),\n claimFamilyId: z.string().min(1),\n canonicalName: z.string().min(1),\n matchedAlias: z.string().min(1),\n confidence: z.number().min(0).max(1),\n sourceTypeIds: z.array(z.string().min(1)),\n sourceRequirements: z.array(sourceRequirementSchema),\n impactAreas: z.array(impactAreaSchema),\n greenwashingRisk: greenwashingRiskSchema,\n});\n\nexport const claimAnalysisSchema = z.object({\n kind: z.literal(\"claimAnalysis\"),\n items: z.array(claimClassificationSchema),\n totalInputCount: z.number().int().nonnegative(),\n matchedCount: z.number().int().nonnegative(),\n unmatchedCount: z.number().int().nonnegative(),\n unmatchedRawClaims: z.array(z.string().min(1)),\n coverageRatio: z.number().min(0).max(1),\n});\n\nexport const sourceFragmentKindSchema = z.enum([\n \"pim_attribute\",\n \"certificate_field\",\n \"pdf_table_row\",\n \"registry_entry\",\n \"manufacturer_statement\",\n \"pdp_claim_block\",\n]);\n\nexport const sourceFragmentValueSchema = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n]);\n\nexport const sourceFragmentSchema = z.object({\n fragmentId: z.string().min(1).optional(),\n fragmentKind: sourceFragmentKindSchema,\n sourceSystem: z.string().min(1),\n attributeId: z.string().min(1).optional(),\n rawText: z.string().min(1).optional(),\n rawValue: sourceFragmentValueSchema.optional(),\n sourceRecordId: z.string().min(1).optional(),\n sourceAuthorityTier: sourceAuthorityTierSchema.optional(),\n context: z.record(z.string(), sourceFragmentValueSchema).optional(),\n});\n\nexport const sourceFragmentStatusSchema = z.enum([\"mapped\", \"unmapped\", \"empty\"]);\n\nexport const sourceFragmentAnalysisItemSchema = z.object({\n sourceFragmentId: z.string().min(1),\n status: sourceFragmentStatusSchema,\n fragmentKind: sourceFragmentKindSchema,\n sourceSystem: z.string().min(1),\n attributeId: z.string().min(1).optional(),\n sourceRecordId: z.string().min(1).optional(),\n rawText: z.string().min(1),\n conceptId: z.string().min(1).optional(),\n claimFamilyIds: z.array(z.string().min(1)),\n sourceTypeIds: z.array(z.string().min(1)),\n requiredContextFields: z.array(z.string().min(1)),\n missingContextFields: z.array(z.string().min(1)),\n greenwashingRisks: z.array(greenwashingRiskSchema),\n notes: z.array(z.string().min(1)),\n});\n\nexport const sourceFragmentAnalysisSchema = z.object({\n kind: z.literal(\"sourceFragmentAnalysis\"),\n items: z.array(sourceFragmentAnalysisItemSchema),\n totalInputCount: z.number().int().nonnegative(),\n mappedCount: z.number().int().nonnegative(),\n unmappedCount: z.number().int().nonnegative(),\n emptyCount: z.number().int().nonnegative(),\n coverageRatio: z.number().min(0).max(1),\n});\n\nexport type ClaimFamily = z.infer<typeof claimFamilySchema>;\nexport type ClaimAnalysis = z.infer<typeof claimAnalysisSchema>;\nexport type ClaimClassification = z.infer<typeof claimClassificationSchema>;\nexport type Framework = z.infer<typeof frameworkSchema>;\nexport type FrameworkCategory = z.infer<typeof frameworkCategorySchema>;\nexport type SourceTypeCategory = z.infer<typeof sourceTypeCategorySchema>;\nexport type SourceRequirement = z.infer<typeof sourceRequirementSchema>;\nexport type SourceFragment = z.infer<typeof sourceFragmentSchema>;\nexport type SourceFragmentAnalysis = z.infer<typeof sourceFragmentAnalysisSchema>;\nexport type SourceFragmentAnalysisItem = z.infer<\n typeof sourceFragmentAnalysisItemSchema\n>;\nexport type SourceType = z.infer<typeof sourceTypeSchema>;\nexport type ImpactArea = z.infer<typeof impactAreaSchema>;\nexport type ReferenceLookupKind = \"claimFamily\" | \"framework\" | \"sourceType\";\nexport type ReferenceLookupInput = {\n id: string;\n kind: ReferenceLookupKind;\n};\nexport type ReferenceLookup = {\n kind: \"referenceLookup\";\n related: {\n claimFamilies: ClaimFamily[];\n frameworks: Framework[];\n sourceTypes: SourceType[];\n };\n target: ClaimFamily | Framework | SourceType;\n targetKind: ReferenceLookupKind;\n};\nexport const referenceSearchItemSchema = z.object({\n targetKind: z.enum([\"claimFamily\", \"framework\", \"sourceType\"]),\n id: z.string().min(1),\n label: z.string().min(1),\n score: z.number().min(0),\n matchedFields: z.array(z.string().min(1)),\n related: z.object({\n claimFamilyIds: z.array(z.string().min(1)),\n frameworkIds: z.array(z.string().min(1)),\n sourceTypeIds: z.array(z.string().min(1)),\n }),\n});\nexport const referenceSearchSchema = z.object({\n kind: z.literal(\"referenceSearch\"),\n query: z.string().min(1),\n items: z.array(referenceSearchItemSchema),\n totalCount: z.number().int().nonnegative(),\n});\nexport type ReferenceSearchInput = {\n limit?: number;\n query: string;\n};\nexport type ReferenceSearchItem = z.infer<typeof referenceSearchItemSchema>;\nexport type ReferenceSearch = z.infer<typeof referenceSearchSchema>;\nexport type ReferenceCorpus = {\n claimFamilies: readonly ClaimFamily[];\n frameworks: readonly Framework[];\n sourceTypes: readonly SourceType[];\n};\n\nconst coreFrameworks = [\n {\n frameworkId: \"leed\",\n sources: [\n { label: \"USGBC — LEED\", url: \"https://www.usgbc.org/leed\" },\n ],\n canonicalName: \"LEED\",\n aliases: [\"LEED\", \"Leadership in Energy and Environmental Design\"],\n operatorName: \"U.S. Green Building Council\",\n category: \"building_rating\",\n region: \"Global\",\n plainLanguageSummary:\n \"The most widely used green building rating system. Projects earn points across categories like materials, energy, and indoor air quality; product choices can contribute to those points.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"leed-v4.1-v5\",\n label: \"LEED v4.1 / v5 material pathway reference\",\n status: \"reviewed\",\n notes: [\n \"Use for product-source interpretation only; projects earn credits under a project-specific rating system version.\",\n \"LEED v5 (April 2025) consolidates EPD, sourcing, and material-health credits into Building Product Selection and Procurement, and adds an embodied-carbon prerequisite.\",\n ],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Products may contribute to LEED pathways; products do not earn LEED credits.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"mindful-materials-cmf\",\n sources: [\n { label: \"mindful MATERIALS — Common Materials Framework\", url: \"https://www.mindfulmaterials.com/a-common-language\" },\n ],\n canonicalName: \"mindful MATERIALS Common Materials Framework\",\n aliases: [\"mindful MATERIALS CMF\", \"Common Materials Framework\", \"CMF\"],\n operatorName: \"mindful MATERIALS\",\n category: \"vocabulary\",\n region: \"Global\",\n plainLanguageSummary:\n \"Not a certification — a shared vocabulary. CMF organises every sustainability claim into five impact areas so that teams can compare products consistently.\",\n impactAreas: [\n \"climate_health\",\n \"human_health\",\n \"ecosystem_health\",\n \"social_health_equity\",\n \"circular_economy\",\n ],\n ruleVersions: [\n {\n id: \"cmf-current\",\n label: \"CMF Prioritization v1.0\",\n status: \"reviewed\",\n notes: [\n \"Use as a normalization reference for source-backed material sustainability signals.\",\n \"The CMF Implementation Toolkit (Greenbuild 2025) embeds the framework into industry tools; the mM Product Portal sunset in August 2025.\",\n ],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"CMF organizes sustainability signals; source support still depends on each claim.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"living-building-challenge\",\n sources: [\n { label: \"ILFI — Living Building Challenge\", url: \"https://living-future.org/lbc/\" },\n ],\n canonicalName: \"Living Building Challenge\",\n aliases: [\"Living Building Challenge\", \"LBC\"],\n operatorName: \"International Living Future Institute\",\n category: \"regenerative\",\n region: \"Global\",\n plainLanguageSummary:\n \"One of the most demanding building certifications. Among other things, it asks teams to avoid a published Red List of harmful chemicals — which is why Declare labels matter here.\",\n impactAreas: [\"human_health\", \"ecosystem_health\", \"social_health_equity\"],\n ruleVersions: [\n {\n id: \"lbc-current\",\n label: \"Current LBC material pathway reference\",\n status: \"reviewed\",\n notes: [\"Use with exact programme status and rule-version context.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Declare labels and LBC pathway relevance should not be collapsed into one claim.\"],\n reviewStatus: \"reviewed\",\n },\n] as const satisfies readonly Framework[];\n\nexport const frameworks: readonly Framework[] = [\n ...coreFrameworks,\n ...extendedFrameworks,\n];\n\nconst coreSourceTypes = [\n {\n sourceTypeId: \"environmental_product_declaration\",\n sources: [\n { label: \"EPD International\", url: \"https://www.environdec.com\" },\n { label: \"ISO 14025\", url: \"https://www.iso.org\" },\n ],\n canonicalName: \"Environmental Product Declaration\",\n aliases: [\"EPD\", \"Environmental Product Declaration\"],\n category: \"lifecycle_carbon\",\n issuerExamples: [\"UL Environment\", \"SCS Global Services\", \"EPD International\", \"Smart EPD\"],\n supportsClaim:\n \"A third-party verified environmental declaration for a product or product family under a programme operator and product category rule.\",\n doesNotSupport: [\n \"That a product is environmentally preferable.\",\n \"That two GWP values are comparable without declared unit, PCR, lifecycle module, and geography checks.\",\n ],\n requiredFields: [\n \"program_operator\",\n \"product_category_rule\",\n \"declared_unit\",\n \"lifecycle_modules\",\n \"valid_until\",\n ],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\n \"EPD scope may apply to a product family, plant, region, or configuration rather than every SKU.\",\n ],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"health_product_declaration\",\n sources: [\n { label: \"HPD Collaborative\", url: \"https://www.hpd-collaborative.org\" },\n ],\n canonicalName: \"Health Product Declaration\",\n aliases: [\"HPD\", \"Health Product Declaration\"],\n category: \"ingredient_chemical\",\n issuerExamples: [\"HPD Collaborative (self-published by manufacturers)\"],\n supportsClaim:\n \"A structured material ingredient disclosure under the HPD Open Standard and stated disclosure threshold.\",\n doesNotSupport: [\"That disclosed ingredients are inherently healthy or hazard-free.\"],\n requiredFields: [\"hpd_version\", \"disclosure_threshold\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"HPD is a disclosure instrument; it should not be displayed as a safety score.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"declare_label\",\n sources: [\n { label: \"ILFI — Declare\", url: \"https://living-future.org/declare/\" },\n ],\n canonicalName: \"Declare Label\",\n aliases: [\"Declare\", \"Declare Product Label\", \"LBC Red List Free\"],\n category: \"ingredient_chemical\",\n issuerExamples: [\"International Living Future Institute\"],\n supportsClaim:\n \"A Declare programme status such as Red List Free, Red List Approved, or Declared under ILFI programme rules.\",\n doesNotSupport: [\"That every broader material-health question is resolved.\"],\n requiredFields: [\"declare_status\", \"label_id\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"programme_operator\",\n expiryRelevant: true,\n caveats: [\"Declare status must be shown with its exact status and validity window.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"chemical_exclusion_statement\",\n sources: [\n { label: \"FTC Green Guides\", url: \"https://www.ftc.gov\" },\n ],\n canonicalName: \"Chemical Exclusion Statement\",\n aliases: [\"PFAS free\", \"Formaldehyde Free\", \"PVC free\", \"Phthalates free\"],\n category: \"ingredient_chemical\",\n issuerExamples: [\"Manufacturer (self-declared)\"],\n supportsClaim:\n \"A bounded claim that a named chemical or chemical family is not intentionally present or not detected under a stated scope.\",\n doesNotSupport: [\n \"That all chemicals of concern are absent.\",\n \"That the claim is meaningful without a definition, threshold, scope, and method.\",\n ],\n requiredFields: [\"chemical_family\", \"scope\", \"threshold\", \"test_method_or_attestation\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n expiryRelevant: false,\n caveats: [\n \"Chemical-exclusion claims are greenwashing-sensitive unless the definition, threshold, and scope are explicit.\",\n ],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"rating_system_contribution_language\",\n sources: [\n { label: \"FTC Green Guides\", url: \"https://www.ftc.gov\" },\n ],\n canonicalName: \"Rating-System Contribution Language\",\n aliases: [\"LEED Compliant\", \"May contribute toward LEED credits\"],\n category: \"programme_language\",\n issuerExamples: [\"Manufacturer marketing (self-declared)\"],\n supportsClaim:\n \"A hint that source support may be relevant to a rating-system pathway, subject to project context and rule version.\",\n doesNotSupport: [\"That a product earns a credit or that a project will earn points.\"],\n requiredFields: [\"rating_system\", \"version\", \"credit_pathway\", \"supporting_source\"],\n minimumSourceAuthority: \"expert_interpretation\",\n expiryRelevant: false,\n caveats: [\"Products contribute to rating-system credits; projects earn credits.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"lifecycle_assessment_report\",\n sources: [\n { label: \"ISO 14040/14044\", url: \"https://www.iso.org\" },\n ],\n canonicalName: \"Life Cycle Assessment Report\",\n aliases: [\"LCA\", \"Life Cycle Assessment\", \"Life Cycle Assessment (LCA)\"],\n category: \"lifecycle_carbon\",\n issuerExamples: [\"LCA consultancies\", \"Manufacturer (ISO 14040/14044 study)\"],\n supportsClaim:\n \"A lifecycle assessment or supporting study exists for the product, product family, or declared scope.\",\n doesNotSupport: [\n \"That the result is comparable without functional unit, boundary, method, geography, and review checks.\",\n ],\n requiredFields: [\n \"study_scope\",\n \"functional_unit\",\n \"system_boundary\",\n \"method\",\n \"review_status\",\n ],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: false,\n caveats: [\n \"LCA reports and EPDs are related but not interchangeable; preserve exact document type and review status.\",\n ],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"indoor_air_quality_emissions_certificate\",\n sources: [\n { label: \"CDPH Standard Method\", url: \"https://www.cdph.ca.gov\" },\n ],\n canonicalName: \"Indoor Air Quality Emissions Certificate\",\n category: \"iaq_emissions\",\n issuerExamples: [\"SCS Global Services (FloorScore)\", \"UL (GREENGUARD)\", \"Berkeley Analytical\"],\n aliases: [\n \"FloorScore\",\n \"SCS Global FloorScore Certified\",\n \"CDPH Standard Method\",\n \"Low Emitting/Low VOC\",\n ],\n supportsClaim:\n \"A certificate or test-method statement indicates low chemical emissions under a named indoor-air-quality programme or method.\",\n doesNotSupport: [\n \"That the product contains zero VOCs.\",\n \"That VOC content is low; emissions and content are distinct measures.\",\n ],\n requiredFields: [\n \"programme_or_method\",\n \"certificate_id_or_report\",\n \"valid_until\",\n \"product_scope\",\n ],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\n \"Low-emitting certifications should be displayed with method, scope, and expiry where available.\",\n ],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"regulatory_compliance_statement\",\n sources: [\n { label: \"CARB — Composite Wood ATCM\", url: \"https://ww2.arb.ca.gov\" },\n ],\n canonicalName: \"Regulatory Compliance Statement\",\n aliases: [\"CARB Compliant\", \"TSCA Title VI compliant\", \"Prop 65 compliant\"],\n category: \"regulatory\",\n issuerExamples: [\"Manufacturer (self-declared against regulation)\"],\n supportsClaim:\n \"A bounded compliance statement for a named regulation, jurisdiction, product scope, and version.\",\n doesNotSupport: [\n \"That the product is broadly healthy, sustainable, or free of all chemicals of concern.\",\n ],\n requiredFields: [\"regulation\", \"jurisdiction\", \"scope\", \"attestation_or_test_method\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n expiryRelevant: false,\n caveats: [\"Regulatory claims are jurisdiction-specific and should not be generalized.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"origin_attestation\",\n sources: [\n { label: \"FTC — Made in USA Standard\", url: \"https://www.ftc.gov\" },\n ],\n canonicalName: \"Origin Attestation\",\n aliases: [\"Made in USA\", \"Made in the USA\", \"Manufactured in USA\"],\n category: \"material_origin\",\n issuerExamples: [\"Manufacturer (self-declared)\"],\n supportsClaim:\n \"A declared manufacturing or origin statement for a product, component, or product family.\",\n doesNotSupport: [\"That the full supply chain originates in the stated geography.\"],\n requiredFields: [\"origin_claim\", \"scope\", \"manufacturing_location\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n expiryRelevant: false,\n caveats: [\n \"Origin claims need scope because assembly, components, and raw materials may differ.\",\n ],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"material_content_disclosure\",\n sources: [\n { label: \"ISO 14021 (self-declared claims)\", url: \"https://www.iso.org\" },\n ],\n canonicalName: \"Material Content Disclosure\",\n category: \"circularity\",\n issuerExamples: [\"Manufacturer (self-declared)\", \"SCS Global Services (certified content)\"],\n aliases: [\n \"Recycled Content\",\n \"Post-Consumer Recycled Content\",\n \"Post-Industrial Recycled Content\",\n \"Pre-Consumer Recycled Content\",\n \"Material Content\",\n ],\n supportsClaim:\n \"A composition disclosure states product content percentages, recycled-content type, calculation basis, and product scope.\",\n doesNotSupport: [\n \"That recycled content is independently certified unless a certificate or audited declaration is present.\",\n \"That post-consumer and post-industrial content are interchangeable.\",\n ],\n requiredFields: [\n \"content_type\",\n \"percentage\",\n \"calculation_basis\",\n \"product_scope\",\n \"source_authority\",\n ],\n minimumSourceAuthority: \"manufacturer_declared\",\n expiryRelevant: false,\n caveats: [\n \"Recycled-content claims need product-scope and calculation-basis context before comparison.\",\n ],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"responsible_forestry_certification\",\n sources: [\n { label: \"FSC\", url: \"https://fsc.org\" },\n { label: \"PEFC\", url: \"https://www.pefc.org\" },\n ],\n canonicalName: \"Responsible Forestry Certification\",\n aliases: [\"FSC\", \"FSC Certified\", \"FSC Certified Wood\", \"Forest Stewardship Council\"],\n category: \"material_origin\",\n issuerExamples: [\"Forest Stewardship Council\", \"PEFC\", \"Sustainable Forestry Initiative\"],\n supportsClaim:\n \"A forestry certification or chain-of-custody document supports responsible wood sourcing for a declared product scope.\",\n doesNotSupport: [\n \"That all product materials are certified.\",\n \"That wood content is certified without chain-of-custody, claim type, and product-scope context.\",\n ],\n requiredFields: [\n \"programme\",\n \"certificate_id\",\n \"claim_type\",\n \"chain_of_custody_scope\",\n \"valid_until\",\n ],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\n \"Preserve FSC claim type and chain-of-custody scope; do not reduce to a generic eco label.\",\n ],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"organizational_sustainability_commitment\",\n sources: [\n { label: \"FTC Green Guides\", url: \"https://www.ftc.gov\" },\n ],\n canonicalName: \"Organizational Sustainability Commitment\",\n category: \"social_organizational\",\n issuerExamples: [\"Manufacturer (public commitment or policy)\"],\n aliases: [\n \"Sustainability Action Plan\",\n \"Sustainability Plan\",\n \"Sustainability Policy\",\n \"Climate Action Plan\",\n ],\n supportsClaim:\n \"A public manufacturer policy, plan, target, or commitment relevant to sustainability governance or progress.\",\n doesNotSupport: [\n \"That a specific product has verified sustainability performance.\",\n \"That commitments have been achieved without progress reporting and dates.\",\n ],\n requiredFields: [\"commitment_scope\", \"target_or_action\", \"publication_date\", \"owner\", \"status\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n expiryRelevant: false,\n caveats: [\n \"Organizational commitments are governance context; product claims still need product-level source support.\",\n ],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"impact_category_classification\",\n sources: [\n { label: \"mindful MATERIALS — CMF\", url: \"https://www.mindfulmaterials.com/a-common-language\" },\n ],\n canonicalName: \"Impact Category Classification\",\n category: \"programme_language\",\n issuerExamples: [\"Specifier or reviewer (expert classification)\"],\n aliases: [\n \"Climate Impact\",\n \"Circular Economy\",\n \"Ecosystem Health\",\n \"Human Health Impact\",\n \"Social Equity Impact\",\n \"Environmental Benefits Filter\",\n \"CMF impact category\",\n ],\n supportsClaim:\n \"An expert or programme classification groups source-backed claims into sustainability impact areas for discovery, review, or reporting.\",\n doesNotSupport: [\n \"That the underlying source-backed claim is valid without the source itself.\",\n \"That a classification is a certification, metric, or product performance result.\",\n ],\n requiredFields: [\n \"classification_scheme\",\n \"impact_area\",\n \"source_claim_ids\",\n \"classification_basis\",\n ],\n minimumSourceAuthority: \"expert_interpretation\",\n expiryRelevant: false,\n caveats: [\n \"Impact categories are navigation and interpretation layers; keep them connected to the underlying sources.\",\n ],\n reviewStatus: \"reviewed\",\n },\n] as const satisfies readonly SourceType[];\n\nexport const sourceTypes: readonly SourceType[] = [\n ...coreSourceTypes,\n ...extendedSourceTypes,\n];\n\nconst coreClaimFamilies = [\n {\n claimFamilyId: \"has_environmental_product_declaration\",\n canonicalName: \"Has Environmental Product Declaration\",\n aliases: [\n \"Environmental Product Declaration (EPD)\",\n \"Environmental Product Declaration\",\n \"EPD\",\n ],\n claimKind: \"declaration\",\n impactAreas: [\"climate_health\"],\n definition:\n \"The source claims that an EPD exists for the product, product family, or declared product scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"environmental_product_declaration\",\n requiredFields: [\n \"program_operator\",\n \"product_category_rule\",\n \"declared_unit\",\n \"lifecycle_modules\",\n \"valid_until\",\n ],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\n \"Do not compare impact metrics until declared unit, PCR, lifecycle modules, geography, and product scope are checked.\",\n ],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"leed\",\n ruleVersionId: \"leed-v4.1-v5\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"breeam\",\n ruleVersionId: \"breeam-current\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"dgnb\",\n ruleVersionId: \"dgnb-current\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"green-star\",\n ruleVersionId: \"green-star-current\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"ilfi-zero-carbon\",\n ruleVersionId: \"zc-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\n \"Prefer programme-operator or registry records over manufacturer product-page claims.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_health_product_declaration\",\n canonicalName: \"Has Health Product Declaration\",\n aliases: [\"Health Product Declaration (HPD)\", \"Health Product Declaration\", \"HPD\"],\n claimKind: \"declaration\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims that an HPD exists for the product, product family, or declared product scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"health_product_declaration\",\n requiredFields: [\"hpd_version\", \"disclosure_threshold\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"HPD indicates disclosure; it does not by itself mean the product is healthy.\"],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"leed\",\n ruleVersionId: \"leed-v4.1-v5\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\"Prefer HPD Collaborative records or the current HPD document.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_product_specific_epd\",\n canonicalName: \"Has Product-Specific EPD\",\n aliases: [\"Product-Specific EPD\", \"Product Specific EPD\"],\n claimKind: \"declaration\",\n impactAreas: [\"climate_health\"],\n definition:\n \"The source claims a product-specific Environmental Product Declaration exists for the declared product scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"environmental_product_declaration\",\n requiredFields: [\n \"program_operator\",\n \"product_category_rule\",\n \"declared_unit\",\n \"lifecycle_modules\",\n \"valid_until\",\n \"epd_type\",\n \"product_scope\",\n ],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\n \"Product-specific EPDs still require PCR, module, unit, geography, and product-scope checks before comparison.\",\n ],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"leed\",\n ruleVersionId: \"leed-v4.1-v5\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\n \"Prefer programme-operator records or the verified EPD document over source-page shorthand.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_lifecycle_assessment_report\",\n canonicalName: \"Has Life Cycle Assessment Report\",\n aliases: [\"Life Cycle Assessment (LCA)\", \"Life Cycle Assessment\", \"LCA\"],\n claimKind: \"standard_method\",\n impactAreas: [\"climate_health\", \"ecosystem_health\"],\n definition:\n \"The source claims an LCA report or study exists for the product, product family, or declared scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"lifecycle_assessment_report\",\n requiredFields: [\n \"study_scope\",\n \"functional_unit\",\n \"system_boundary\",\n \"method\",\n \"review_status\",\n ],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\n \"Do not treat an LCA mention as an EPD or comparable impact result without method and boundary context.\",\n ],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\n \"Prefer the actual LCA report and review statement over a product badge.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_declare_red_list_free_label\",\n canonicalName: \"Has Declare Red List Free Label\",\n aliases: [\n \"Declare Product Label - LBC Red List Free\",\n \"Declare Label - Red List Free\",\n \"LBC Red List Free\",\n \"Declare Red List Free\",\n ],\n claimKind: \"certification\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims a Declare programme label with Red List Free status for the declared product scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"declare_label\",\n requiredFields: [\"declare_status\", \"label_id\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"programme_operator\",\n caveats: [\n \"Display the exact Declare status; do not collapse all Declare labels into one claim.\",\n ],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"living-building-challenge\",\n ruleVersionId: \"lbc-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\"Prefer ILFI Declare registry records over manufacturer badge text.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_floorscore_certification\",\n canonicalName: \"Has FloorScore Certification\",\n aliases: [\"SCS Global FloorScore Certified\", \"FloorScore Certified\", \"FloorScore\"],\n claimKind: \"certification\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims a FloorScore or SCS FloorScore certification for the declared product scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"indoor_air_quality_emissions_certificate\",\n requiredFields: [\n \"programme_or_method\",\n \"certificate_id_or_report\",\n \"valid_until\",\n \"product_scope\",\n ],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\n \"FloorScore is an emissions certification; do not represent it as a chemical-content or zero-VOC claim.\",\n ],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"well\",\n ruleVersionId: \"well-v2\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\"Prefer SCS certificate records or the current certificate document.\"],\n greenwashingRisk: \"low\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_cdph_low_emitting_material_test\",\n canonicalName: \"Has CDPH Low-Emitting Material Test\",\n aliases: [\"CDPH Standard Method v1.2-2017\", \"CDPH Standard Method\", \"CA 01350\"],\n claimKind: \"standard_method\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims low-emitting material testing under CDPH Standard Method or equivalent chamber-testing language.\",\n sourceRequirements: [\n {\n sourceTypeId: \"indoor_air_quality_emissions_certificate\",\n requiredFields: [\n \"programme_or_method\",\n \"certificate_id_or_report\",\n \"valid_until\",\n \"product_scope\",\n ],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\n \"CDPH method references need the tested product scope and report/certificate basis.\",\n ],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"leed\",\n ruleVersionId: \"leed-v4.1-v5\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"well\",\n ruleVersionId: \"well-v2\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\"Prefer a test report or certification document over a catalog phrase.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_low_voc_emissions\",\n canonicalName: \"Claims Low VOC Emissions\",\n aliases: [\n \"Low Emitting/Low VOC\",\n \"Low Emitting/Low VOCs\",\n \"Low VOC\",\n \"Eurofins Indoor Air Comfort\",\n \"Eurofins Indoor Air Comfort Gold\",\n \"Intertek Clean Air\",\n \"MAS Certified Green\",\n \"eco-INSTITUT-Label\",\n \"Berkeley Analytical ClearChem\",\n \"ClearChem Certified\",\n \"Émissions dans l'air intérieur\",\n \"AgBB\",\n ],\n claimKind: \"impact_metric\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims low VOC emissions or low-emitting performance for the product under a stated or unstated basis.\",\n sourceRequirements: [\n {\n sourceTypeId: \"indoor_air_quality_emissions_certificate\",\n requiredFields: [\n \"programme_or_method\",\n \"certificate_id_or_report\",\n \"valid_until\",\n \"product_scope\",\n ],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\n \"Low-VOC emissions should not be confused with VOC content; require method and threshold context.\",\n ],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"well\",\n ruleVersionId: \"well-v2\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"breeam\",\n ruleVersionId: \"breeam-current\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"reset\",\n ruleVersionId: \"reset-current\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"minergie\",\n ruleVersionId: \"minergie-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\n \"Prefer emissions certificate/report language with method and threshold.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_pfas_free\",\n canonicalName: \"Claims PFAS Free\",\n aliases: [\"PFAS free\", \"PFAS Free\", \"No PFAS\"],\n claimKind: \"chemical_exclusion\",\n impactAreas: [\"human_health\", \"ecosystem_health\"],\n definition:\n \"The source claims the product, material, treatment, or formulation is free of PFAS under some stated or unstated scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"chemical_exclusion_statement\",\n requiredFields: [\"chemical_family\", \"scope\", \"threshold\", \"test_method_or_attestation\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\n \"Treat as high-risk language until PFAS definition, threshold, scope, and method are explicit.\",\n ],\n },\n {\n sourceTypeId: \"greenscreen_certified_certificate\",\n requiredFields: [\"certificate_level\", \"certificate_number\", \"standard_version\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\n \"All GreenScreen Certified levels prohibit intentionally added PFAS, but thresholds and test methods are set by the specific product-category standard and version — verify before repeating a PFAS-free claim.\",\n \"The certificate's product scope must cover the exact product being claimed.\",\n ],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\n \"A manufacturer statement is a starting source, not strong source support without method and scope.\",\n ],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_formaldehyde_free\",\n canonicalName: \"Claims Formaldehyde Free\",\n aliases: [\"Formaldehyde Free\", \"No added formaldehyde\"],\n claimKind: \"chemical_exclusion\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims the product or formulation is free of formaldehyde under some stated or unstated scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"chemical_exclusion_statement\",\n requiredFields: [\"chemical_family\", \"scope\", \"threshold\", \"test_method_or_attestation\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"Require scope and threshold before displaying as a verified exclusion.\"],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\n \"Manufacturer declarations need supporting test or formulation context.\",\n ],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_pvc_free\",\n canonicalName: \"Claims PVC Free\",\n aliases: [\"PVC free\", \"PVC Free\", \"No PVC\"],\n claimKind: \"chemical_exclusion\",\n impactAreas: [\"human_health\", \"ecosystem_health\"],\n definition:\n \"The source claims the product or formulation is free of PVC under some stated or unstated scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"chemical_exclusion_statement\",\n requiredFields: [\"chemical_family\", \"scope\", \"threshold\", \"test_method_or_attestation\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"Require scope and threshold before displaying as a verified exclusion.\"],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\"Manufacturer declarations need supporting formulation context.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_phthalates_free\",\n canonicalName: \"Claims Phthalates Free\",\n aliases: [\"Phthalates free\", \"Phthalate free\", \"No phthalates\"],\n claimKind: \"chemical_exclusion\",\n impactAreas: [\"human_health\", \"ecosystem_health\"],\n definition:\n \"The source claims the product or formulation is free of phthalates under some stated or unstated scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"chemical_exclusion_statement\",\n requiredFields: [\"chemical_family\", \"scope\", \"threshold\", \"test_method_or_attestation\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"Require phthalate definition, threshold, and scope before display.\"],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\"Manufacturer declarations need supporting formulation context.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_pfos_free\",\n canonicalName: \"Claims PFOS Free\",\n aliases: [\"PFOS Free\", \"PFOS free\", \"No PFOS\"],\n claimKind: \"chemical_exclusion\",\n impactAreas: [\"human_health\", \"ecosystem_health\"],\n definition:\n \"The source claims the product, material, treatment, or formulation is free of PFOS under some stated or unstated scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"chemical_exclusion_statement\",\n requiredFields: [\"chemical_family\", \"scope\", \"threshold\", \"test_method_or_attestation\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\n \"PFOS is part of the broader PFAS concern set; preserve exact claim wording and scope.\",\n ],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\"Manufacturer declarations need supporting method and scope.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_carb_compliant\",\n canonicalName: \"Claims CARB Compliant\",\n aliases: [\"CARB Compliant\", \"CARB compliant\"],\n claimKind: \"program_participation\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims compliance with a CARB regulatory pathway for the declared product or material scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"regulatory_compliance_statement\",\n requiredFields: [\"regulation\", \"jurisdiction\", \"scope\", \"attestation_or_test_method\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\n \"CARB compliance is regulation-specific; preserve jurisdiction and standard context.\",\n ],\n },\n ],\n frameworkMappings: [],\n sourceAuthorityNotes: [\n \"Prefer explicit CARB rule, phase, product scope, and attestation basis.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_made_in_usa\",\n canonicalName: \"Claims Made in USA\",\n aliases: [\"Made in USA\", \"Made in the USA\", \"Manufactured in USA\"],\n claimKind: \"origin_claim\",\n impactAreas: [\"social_health_equity\"],\n definition:\n \"The source claims the product or declared scope is made or manufactured in the United States.\",\n sourceRequirements: [\n {\n sourceTypeId: \"origin_attestation\",\n requiredFields: [\"origin_claim\", \"scope\", \"manufacturing_location\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\n \"Origin claims should identify whether they cover assembly, manufacture, or materials.\",\n ],\n },\n ],\n frameworkMappings: [],\n sourceAuthorityNotes: [\n \"Prefer explicit manufacturing-location fields or official product documents.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_ingredient_disclosure_threshold_met\",\n canonicalName: \"Claims Ingredient Disclosure Threshold Met\",\n aliases: [\n \"75% of Ingredients Disclosed\",\n \"75 percent of ingredients disclosed\",\n \"At least 75% ingredients disclosed\",\n ],\n claimKind: \"declaration\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims that at least a declared threshold of product ingredients has been disclosed for the stated product scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"health_product_declaration\",\n requiredFields: [\n \"disclosure_threshold\",\n \"disclosed_percentage\",\n \"valid_until\",\n \"product_scope\",\n ],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\n \"Ingredient disclosure is transparency; it is not proof that disclosed ingredients are hazard-free.\",\n ],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"leed\",\n ruleVersionId: \"leed-v4.1-v5\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\n \"Prefer current HPD or equivalent disclosure documents with explicit disclosure threshold and product scope.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_recycled_content\",\n canonicalName: \"Claims Recycled Content\",\n aliases: [\n \"Recycled Content\",\n \"Post-Consumer Recycled Content\",\n \"Post-Industrial Recycled Content\",\n \"Pre-Consumer Recycled Content\",\n \"Post-Consumer Recycled Content Percentage\",\n \"Post-Industrial Recycled Content Percentage\",\n ],\n claimKind: \"circularity_claim\",\n impactAreas: [\"circular_economy\"],\n definition:\n \"The source claims the product contains recycled material under a stated recycled-content type, percentage, scope, and calculation basis.\",\n sourceRequirements: [\n {\n sourceTypeId: \"material_content_disclosure\",\n requiredFields: [\n \"content_type\",\n \"percentage\",\n \"calculation_basis\",\n \"product_scope\",\n \"source_authority\",\n ],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\n \"Post-consumer, post-industrial, and pre-consumer content should remain distinct.\",\n ],\n },\n {\n sourceTypeId: \"greencircle_certificate\",\n requiredFields: [\n \"certificate_number\",\n \"verified_attribute\",\n \"attribute_value\",\n \"certified_scope\",\n \"valid_until\",\n ],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\n \"Only supports this claim when verified_attribute is Recycled Content (or Closed Loop Product with stated recycled percentage).\",\n \"Record the verified percentage and whether it is post-consumer or pre-consumer.\",\n ],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"leed\",\n ruleVersionId: \"leed-v4.1-v5\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\n \"Prefer audited content declarations or certification records over marketing copy.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_responsible_forestry_certification\",\n canonicalName: \"Has Responsible Forestry Certification\",\n aliases: [\n \"FSC Certified Wood\",\n \"FSC Certified\",\n \"FSC\",\n \"Forest Stewardship Council\",\n \"PEFC Certified\",\n \"Programme for the Endorsement of Forest Certification\",\n \"SFI Certified\",\n \"Sustainable Forestry Initiative\",\n \"American Tree Farm System\",\n ],\n claimKind: \"certification\",\n impactAreas: [\"ecosystem_health\", \"social_health_equity\"],\n definition:\n \"The source claims wood content or a product scope is covered by FSC, PEFC, SFI, or equivalent responsible forestry certification.\",\n sourceRequirements: [\n {\n sourceTypeId: \"responsible_forestry_certification\",\n requiredFields: [\n \"programme\",\n \"certificate_id\",\n \"claim_type\",\n \"chain_of_custody_scope\",\n \"valid_until\",\n ],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\n \"Certificate scope and chain-of-custody claim type determine what the product can legitimately claim.\",\n ],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"leed\",\n ruleVersionId: \"leed-v4.1-v5\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"breeam\",\n ruleVersionId: \"breeam-current\",\n relationship: \"may_support\",\n },\n {\n frameworkId: \"green-star\",\n ruleVersionId: \"green-star-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\"Prefer current certificate and chain-of-custody records.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_sustainability_action_plan\",\n canonicalName: \"Has Sustainability Action Plan\",\n aliases: [\"Sustainability Action Plan\", \"Sustainability Plan\", \"Sustainability Policy\"],\n claimKind: \"organizational_commitment\",\n impactAreas: [\n \"climate_health\",\n \"human_health\",\n \"ecosystem_health\",\n \"social_health_equity\",\n \"circular_economy\",\n ],\n definition:\n \"The source claims the manufacturer has a public sustainability plan, policy, target, or action commitment relevant to the product context.\",\n sourceRequirements: [\n {\n sourceTypeId: \"organizational_sustainability_commitment\",\n requiredFields: [\n \"commitment_scope\",\n \"target_or_action\",\n \"publication_date\",\n \"owner\",\n \"status\",\n ],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\n \"Treat as governance context, not verified product performance, unless tied to product-level source support.\",\n ],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\n \"Look for dated public plans and progress reporting rather than undated marketing statements.\",\n ],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_cmf_impact_category_classification\",\n canonicalName: \"Has CMF Impact Category Classification\",\n aliases: [\n \"Climate Impact\",\n \"Circular Economy\",\n \"Ecosystem Health\",\n \"Human Health Impact\",\n \"Social Equity Impact\",\n \"Environmental Benefits Filter\",\n \"CMF impact category\",\n ],\n claimKind: \"rating_system_hint\",\n impactAreas: [\n \"climate_health\",\n \"human_health\",\n \"ecosystem_health\",\n \"social_health_equity\",\n \"circular_economy\",\n ],\n definition:\n \"The source or reviewer classifies source-backed sustainability claims into CMF-style impact categories for navigation and review.\",\n sourceRequirements: [\n {\n sourceTypeId: \"impact_category_classification\",\n requiredFields: [\n \"classification_scheme\",\n \"impact_area\",\n \"source_claim_ids\",\n \"classification_basis\",\n ],\n minimumSourceAuthority: \"expert_interpretation\",\n caveats: [\n \"Classifications should reference underlying claim families and source material; they are not standalone proof.\",\n ],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"mindful-materials-cmf\",\n ruleVersionId: \"cmf-current\",\n relationship: \"may_support\",\n },\n ],\n sourceAuthorityNotes: [\n \"Use as a reference taxonomy layer tied to source-backed claims, not as a substitute for source support.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"rating_system_leed_contribution_hint\",\n canonicalName: \"LEED Contribution Hint\",\n aliases: [\n \"LEED Compliant\",\n \"LEED contribution\",\n \"May contribute toward LEED credits\",\n \"LEED declared\",\n ],\n claimKind: \"rating_system_hint\",\n impactAreas: [\"climate_health\", \"human_health\"],\n definition:\n \"The source uses LEED-oriented language that may indicate relevant product source but does not support project credit achievement.\",\n sourceRequirements: [\n {\n sourceTypeId: \"rating_system_contribution_language\",\n requiredFields: [\"rating_system\", \"version\", \"credit_pathway\", \"supporting_source\"],\n minimumSourceAuthority: \"expert_interpretation\",\n caveats: [\"Products contribute; projects earn. Require rule version and project context.\"],\n },\n ],\n frameworkMappings: [\n {\n frameworkId: \"leed\",\n ruleVersionId: \"leed-v4.1-v5\",\n relationship: \"insufficient_alone\",\n },\n ],\n sourceAuthorityNotes: [\n \"Manufacturer LEED language should be interpreted conservatively and tied to source support.\",\n ],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n] as const satisfies readonly ClaimFamily[];\n\nexport const claimFamilies: readonly ClaimFamily[] = [\n ...coreClaimFamilies,\n ...extendedClaimFamilies,\n];\n\nconst claimFamiliesById = new Map<string, ClaimFamily>(\n claimFamilies.map((claimFamily) => [claimFamily.claimFamilyId, claimFamily]),\n);\n\nconst frameworksById = new Map<string, Framework>(\n frameworks.map((framework) => [framework.frameworkId, framework]),\n);\n\nconst sourceTypesById = new Map<string, SourceType>(\n sourceTypes.map((sourceType) => [sourceType.sourceTypeId, sourceType]),\n);\n\nfunction normalizeClaimText(value: string) {\n return value\n .trim()\n .toLowerCase()\n .replace(/&/g, \"and\")\n .replace(/[^a-z0-9]+/g, \" \")\n .replace(/\\s+/g, \" \")\n .trim();\n}\n\nfunction uniqueStrings(values: readonly string[]) {\n return [...new Set(values)];\n}\n\nfunction splitRawClaims(raw: string) {\n return raw\n .split(/[|;\\n]/)\n .map((claim) => claim.trim())\n .filter(Boolean);\n}\n\nfunction normalizeAttributeId(value: string) {\n return value\n .trim()\n .toLowerCase()\n .replace(/&/g, \"and\")\n .replace(/[^a-z0-9]+/g, \"_\")\n .replace(/^_+|_+$/g, \"\");\n}\n\nfunction sourceFragmentValueToText(value: SourceFragment[\"rawValue\"]) {\n if (value === null || value === undefined) return \"\";\n return String(value).trim();\n}\n\nfunction isMeaningfulSourceFragmentValue(value: SourceFragment[\"rawValue\"]) {\n if (value === null || value === undefined) return false;\n if (typeof value === \"boolean\") return value;\n if (typeof value === \"number\") return value !== 0 && Number.isFinite(value);\n\n const normalized = normalizeClaimText(value);\n return (\n normalized !== \"\" &&\n ![\"0\", \"0 0\", \"false\", \"n a\", \"na\", \"none\", \"no\", \"not applicable\"].includes(normalized)\n );\n}\n\nfunction sourceFragmentRawText(fragment: SourceFragment) {\n const rawText = fragment.rawText?.trim();\n if (rawText) return rawText;\n\n const rawValue = sourceFragmentValueToText(fragment.rawValue);\n if (rawValue) return rawValue;\n\n return fragment.attributeId ?? fragment.sourceRecordId ?? fragment.sourceSystem;\n}\n\nfunction sourceFragmentId(fragment: SourceFragment, index: number) {\n if (fragment.fragmentId) return fragment.fragmentId;\n if (fragment.sourceRecordId && fragment.attributeId) {\n return `${fragment.sourceRecordId}:${normalizeAttributeId(fragment.attributeId)}`;\n }\n if (fragment.attributeId) return `${fragment.sourceSystem}:${normalizeAttributeId(fragment.attributeId)}`;\n return `${fragment.sourceSystem}:fragment-${index + 1}`;\n}\n\nfunction sourceFragmentHasValue(fragment: SourceFragment) {\n return Boolean(fragment.rawText?.trim()) || isMeaningfulSourceFragmentValue(fragment.rawValue);\n}\n\nfunction sourceAuthorityRank(authority: z.infer<typeof sourceAuthorityTierSchema>) {\n switch (authority) {\n case \"manufacturer_declared\":\n return 0;\n case \"expert_interpretation\":\n return 1;\n case \"third_party_verified\":\n return 2;\n case \"programme_operator\":\n return 3;\n case \"official_registry\":\n return 4;\n }\n}\n\nfunction sourceAuthorityMeetsMinimum(\n actual: z.infer<typeof sourceAuthorityTierSchema> | undefined,\n minimum: z.infer<typeof sourceAuthorityTierSchema>,\n) {\n if (!actual) return false;\n return sourceAuthorityRank(actual) >= sourceAuthorityRank(minimum);\n}\n\nfunction contextFieldIsSatisfied(fragment: SourceFragment, field: string) {\n const context = fragment.context ?? {};\n if (isMeaningfulSourceFragmentValue(context[field])) return true;\n\n const normalizedAttributeId = fragment.attributeId ? normalizeAttributeId(fragment.attributeId) : \"\";\n const hasFragmentValue = sourceFragmentHasValue(fragment);\n\n if (!hasFragmentValue) return false;\n if (field === \"raw_claim\" || field === \"raw_benefit_statement\") return true;\n if (field === \"source_authority\") return Boolean(fragment.sourceAuthorityTier);\n if (field === \"supporting_source\") return Boolean(fragment.sourceRecordId);\n if (field === \"percentage\" && normalizedAttributeId.includes(\"percentage\")) return true;\n if (field === \"content_type\" && normalizedAttributeId.includes(\"recycled_content\")) return true;\n if (field === \"valid_until\" && /expir|valid_until/.test(normalizedAttributeId)) return true;\n if (field === \"certificate_id_or_report\" && normalizedAttributeId.includes(\"certificate\")) {\n return true;\n }\n if (field === \"programme\" && /fsc|leed|hpd|epd|declare|greenguard|floorscore/.test(normalizedAttributeId)) {\n return true;\n }\n if (field === \"rating_system\" && normalizedAttributeId.includes(\"leed\")) return true;\n if (field === \"impact_area\" && normalizedAttributeId.includes(\"impact\")) return true;\n\n return false;\n}\n\nfunction missingContextFieldsForFragment(\n fragment: SourceFragment,\n requiredContextFields: readonly string[],\n) {\n return requiredContextFields.filter((field) => !contextFieldIsSatisfied(fragment, field));\n}\n\nfunction findClaimFamily(rawClaim: string, claimFamilies: readonly ClaimFamily[]) {\n const normalizedClaim = normalizeClaimText(rawClaim);\n\n for (const claimFamily of claimFamilies) {\n for (const alias of claimFamily.aliases) {\n if (normalizeClaimText(alias) === normalizedClaim) {\n return { claimFamily, matchedAlias: alias, confidence: 1 };\n }\n }\n }\n\n for (const claimFamily of claimFamilies) {\n for (const alias of claimFamily.aliases) {\n const normalizedAlias = normalizeClaimText(alias);\n if (normalizedClaim.includes(normalizedAlias) || normalizedAlias.includes(normalizedClaim)) {\n return { claimFamily, matchedAlias: alias, confidence: 0.86 };\n }\n }\n }\n\n return null;\n}\n\nfunction findClaimFamilies(rawClaim: string, claimFamilies: readonly ClaimFamily[]) {\n const exactMatch = findClaimFamily(rawClaim, claimFamilies);\n if (exactMatch?.confidence === 1) return [exactMatch];\n\n const normalizedClaim = normalizeClaimText(rawClaim);\n const matches = new Map<\n string,\n {\n claimFamily: ClaimFamily;\n index: number;\n matchedAlias: string;\n }\n >();\n\n for (const claimFamily of claimFamilies) {\n for (const alias of claimFamily.aliases) {\n const normalizedAlias = normalizeClaimText(alias);\n if (!normalizedAlias || !normalizedClaim.includes(normalizedAlias)) continue;\n\n const current = matches.get(claimFamily.claimFamilyId);\n const index = normalizedClaim.indexOf(normalizedAlias);\n if (!current || index < current.index) {\n matches.set(claimFamily.claimFamilyId, {\n claimFamily,\n index,\n matchedAlias: alias,\n });\n }\n }\n }\n\n if (matches.size === 0 && exactMatch) return [exactMatch];\n\n return Array.from(matches.values())\n .sort((left, right) => {\n if (left.index !== right.index) return left.index - right.index;\n return left.claimFamily.claimFamilyId.localeCompare(right.claimFamily.claimFamilyId);\n })\n .map(({ claimFamily, matchedAlias }) => ({\n claimFamily,\n matchedAlias,\n confidence: 0.86,\n }));\n}\n\nexport function classifyClaims(raw: string): ClaimClassification[] {\n return splitRawClaims(raw).flatMap((rawClaim) => {\n const matches = findClaimFamilies(rawClaim, claimFamilies);\n if (matches.length === 0) return [];\n\n return matches.map((match) =>\n claimClassificationSchema.parse({\n rawClaim,\n claimFamilyId: match.claimFamily.claimFamilyId,\n canonicalName: match.claimFamily.canonicalName,\n matchedAlias: match.matchedAlias,\n confidence: match.confidence,\n sourceTypeIds: match.claimFamily.sourceRequirements.map(\n (requirement) => requirement.sourceTypeId,\n ),\n sourceRequirements: match.claimFamily.sourceRequirements,\n impactAreas: match.claimFamily.impactAreas,\n greenwashingRisk: match.claimFamily.greenwashingRisk,\n }),\n );\n });\n}\n\nexport function analyzeClaimCorpus(\n corpus: ReferenceCorpus,\n raw: string,\n): ClaimAnalysis {\n const rawClaims = splitRawClaims(raw);\n const items: ClaimClassification[] = [];\n const unmatchedRawClaims: string[] = [];\n\n for (const rawClaim of rawClaims) {\n const matches = findClaimFamilies(rawClaim, corpus.claimFamilies);\n if (matches.length === 0) {\n unmatchedRawClaims.push(rawClaim);\n continue;\n }\n\n items.push(\n ...matches.map((match) =>\n claimClassificationSchema.parse({\n rawClaim,\n claimFamilyId: match.claimFamily.claimFamilyId,\n canonicalName: match.claimFamily.canonicalName,\n matchedAlias: match.matchedAlias,\n confidence: match.confidence,\n sourceTypeIds: match.claimFamily.sourceRequirements.map(\n (requirement) => requirement.sourceTypeId,\n ),\n sourceRequirements: match.claimFamily.sourceRequirements,\n impactAreas: match.claimFamily.impactAreas,\n greenwashingRisk: match.claimFamily.greenwashingRisk,\n }),\n ),\n );\n }\n\n const totalInputCount = rawClaims.length;\n const matchedCount = items.length;\n\n return claimAnalysisSchema.parse({\n kind: \"claimAnalysis\",\n items,\n totalInputCount,\n matchedCount,\n unmatchedCount: unmatchedRawClaims.length,\n unmatchedRawClaims,\n coverageRatio: totalInputCount === 0 ? 1 : Math.min(1, matchedCount / totalInputCount),\n });\n}\n\nexport function analyzeClaims(raw: string): ClaimAnalysis {\n return analyzeClaimCorpus(bundledReferenceCorpus, raw);\n}\n\nfunction sourceRequirementsForClaimFamilies(claimFamilies: readonly ClaimFamily[]) {\n return claimFamilies.flatMap((claimFamily) => claimFamily.sourceRequirements);\n}\n\nfunction sourceAuthorityNotesForFragment(\n fragment: SourceFragment,\n claimFamilies: readonly ClaimFamily[],\n) {\n return sourceRequirementsForClaimFamilies(claimFamilies).flatMap((requirement) => {\n if (sourceAuthorityMeetsMinimum(fragment.sourceAuthorityTier, requirement.minimumSourceAuthority)) {\n return [];\n }\n\n const actualAuthority = fragment.sourceAuthorityTier ?? \"missing authority\";\n return [\n `Source authority ${actualAuthority} does not yet meet ${requirement.minimumSourceAuthority} for ${requirement.sourceTypeId}.`,\n ];\n });\n}\n\nfunction caveatNotesForClaimFamilies(claimFamilies: readonly ClaimFamily[]) {\n return uniqueStrings(\n sourceRequirementsForClaimFamilies(claimFamilies).flatMap((requirement) => requirement.caveats),\n );\n}\n\nfunction analyzeRawTextSourceFragment(\n corpus: ReferenceCorpus,\n fragment: SourceFragment,\n index: number,\n rawText: string,\n): SourceFragmentAnalysisItem | null {\n const match = findClaimFamily(rawText, corpus.claimFamilies);\n if (!match) return null;\n\n const claimFamilies = [match.claimFamily];\n const sourceRequirements = sourceRequirementsForClaimFamilies(claimFamilies);\n const requiredContextFields = uniqueStrings(\n sourceRequirements.flatMap((requirement) => requirement.requiredFields),\n );\n\n return sourceFragmentAnalysisItemSchema.parse({\n sourceFragmentId: sourceFragmentId(fragment, index),\n status: \"mapped\",\n fragmentKind: fragment.fragmentKind,\n sourceSystem: fragment.sourceSystem,\n attributeId: fragment.attributeId ? normalizeAttributeId(fragment.attributeId) : undefined,\n sourceRecordId: fragment.sourceRecordId,\n rawText,\n conceptId: match.claimFamily.claimFamilyId,\n claimFamilyIds: [match.claimFamily.claimFamilyId],\n sourceTypeIds: sourceRequirements.map((requirement) => requirement.sourceTypeId),\n requiredContextFields,\n missingContextFields: missingContextFieldsForFragment(fragment, requiredContextFields),\n greenwashingRisks: [match.claimFamily.greenwashingRisk],\n notes: uniqueStrings([\n `Matched raw text to ${match.claimFamily.canonicalName} via alias ${match.matchedAlias}.`,\n ...sourceAuthorityNotesForFragment(fragment, claimFamilies),\n ...caveatNotesForClaimFamilies(claimFamilies),\n ]),\n });\n}\n\nfunction analyzeSingleSourceFragment(\n corpus: ReferenceCorpus,\n input: SourceFragment,\n index: number,\n): SourceFragmentAnalysisItem {\n const fragment = sourceFragmentSchema.parse(input);\n const rawText = sourceFragmentRawText(fragment);\n\n if (!sourceFragmentHasValue(fragment)) {\n return sourceFragmentAnalysisItemSchema.parse({\n sourceFragmentId: sourceFragmentId(fragment, index),\n status: \"empty\",\n fragmentKind: fragment.fragmentKind,\n sourceSystem: fragment.sourceSystem,\n attributeId: fragment.attributeId ? normalizeAttributeId(fragment.attributeId) : undefined,\n sourceRecordId: fragment.sourceRecordId,\n rawText,\n claimFamilyIds: [],\n sourceTypeIds: [],\n requiredContextFields: [],\n missingContextFields: [],\n greenwashingRisks: [],\n notes: [\"Fragment has no meaningful sustainability value to normalize.\"],\n });\n }\n\n const rawTextAnalysis = analyzeRawTextSourceFragment(corpus, fragment, index, rawText);\n if (rawTextAnalysis) return rawTextAnalysis;\n\n return sourceFragmentAnalysisItemSchema.parse({\n sourceFragmentId: sourceFragmentId(fragment, index),\n status: \"unmapped\",\n fragmentKind: fragment.fragmentKind,\n sourceSystem: fragment.sourceSystem,\n attributeId: fragment.attributeId ? normalizeAttributeId(fragment.attributeId) : undefined,\n sourceRecordId: fragment.sourceRecordId,\n rawText,\n claimFamilyIds: [],\n sourceTypeIds: [],\n requiredContextFields: [],\n missingContextFields: [],\n greenwashingRisks: [],\n notes: [\"Fragment is populated but no claim-family alias matched it.\"],\n });\n}\n\nexport function analyzeSourceFragmentCorpus(\n corpus: ReferenceCorpus,\n fragments: readonly SourceFragment[],\n): SourceFragmentAnalysis {\n const items = fragments.map((fragment, index) =>\n analyzeSingleSourceFragment(corpus, fragment, index),\n );\n const mappedCount = items.filter((item) => item.status === \"mapped\").length;\n const unmappedCount = items.filter((item) => item.status === \"unmapped\").length;\n const emptyCount = items.filter((item) => item.status === \"empty\").length;\n const totalInputCount = items.length;\n\n return sourceFragmentAnalysisSchema.parse({\n kind: \"sourceFragmentAnalysis\",\n items,\n totalInputCount,\n mappedCount,\n unmappedCount,\n emptyCount,\n coverageRatio: totalInputCount === 0 ? 1 : mappedCount / totalInputCount,\n });\n}\n\nexport function analyzeSourceFragments(\n fragments: readonly SourceFragment[],\n): SourceFragmentAnalysis {\n return analyzeSourceFragmentCorpus(bundledReferenceCorpus, fragments);\n}\n\nexport function getClaimFamily(claimFamilyId: string): ClaimFamily {\n const claimFamily = claimFamiliesById.get(claimFamilyId);\n if (!claimFamily) {\n throw new Error(`Unknown claim family: ${claimFamilyId}`);\n }\n return claimFamily;\n}\n\nexport function getFramework(frameworkId: string): Framework {\n const framework = frameworksById.get(frameworkId);\n if (!framework) {\n throw new Error(`Unknown framework: ${frameworkId}`);\n }\n return framework;\n}\n\nexport function getSourceType(sourceTypeId: string): SourceType {\n const sourceType = sourceTypesById.get(sourceTypeId);\n if (!sourceType) {\n throw new Error(`Unknown source type: ${sourceTypeId}`);\n }\n return sourceType;\n}\n\nexport function getSourceRequirements(claimFamilyId: string): SourceRequirement[] {\n return getClaimFamily(claimFamilyId).sourceRequirements;\n}\n\nfunction claimFamiliesForSourceTypeInCorpus(corpus: ReferenceCorpus, sourceTypeId: string) {\n return corpus.claimFamilies.filter((claimFamily) =>\n claimFamily.sourceRequirements.some((requirement) => requirement.sourceTypeId === sourceTypeId),\n );\n}\n\nfunction claimFamiliesForFrameworkInCorpus(corpus: ReferenceCorpus, frameworkId: string) {\n return corpus.claimFamilies.filter((claimFamily) =>\n claimFamily.frameworkMappings.some((mapping) => mapping.frameworkId === frameworkId),\n );\n}\n\nfunction sourceTypesForClaimFamiliesInCorpus(\n corpus: ReferenceCorpus,\n claimFamilies: readonly ClaimFamily[],\n) {\n const sourceTypeIds = new Set(\n claimFamilies.flatMap((claimFamily) =>\n claimFamily.sourceRequirements.map((requirement) => requirement.sourceTypeId),\n ),\n );\n return corpus.sourceTypes.filter((sourceType) => sourceTypeIds.has(sourceType.sourceTypeId));\n}\n\nfunction getClaimFamilyFromCorpus(\n corpus: ReferenceCorpus,\n claimFamilyId: string,\n): ClaimFamily {\n const claimFamily = corpus.claimFamilies.find((family) => family.claimFamilyId === claimFamilyId);\n if (!claimFamily) {\n throw new Error(`Unknown claim family: ${claimFamilyId}`);\n }\n return claimFamily;\n}\n\nfunction getFrameworkFromCorpus(\n corpus: ReferenceCorpus,\n frameworkId: string,\n): Framework {\n const framework = corpus.frameworks.find((item) => item.frameworkId === frameworkId);\n if (!framework) {\n throw new Error(`Unknown framework: ${frameworkId}`);\n }\n return framework;\n}\n\nfunction getSourceTypeFromCorpus(\n corpus: ReferenceCorpus,\n sourceTypeId: string,\n): SourceType {\n const sourceType = corpus.sourceTypes.find((item) => item.sourceTypeId === sourceTypeId);\n if (!sourceType) {\n throw new Error(`Unknown source type: ${sourceTypeId}`);\n }\n return sourceType;\n}\n\nfunction scoreSearchField(\n value: string | readonly string[],\n normalizedQuery: string,\n queryTokens: readonly string[],\n) {\n const values = Array.isArray(value) ? value : [value];\n let score = 0;\n\n for (const candidateValue of values) {\n const normalizedValue = normalizeClaimText(candidateValue);\n if (!normalizedValue) continue;\n if (normalizedValue === normalizedQuery) score = Math.max(score, 120);\n else if (\n normalizedValue.includes(normalizedQuery) ||\n normalizedQuery.includes(normalizedValue)\n ) {\n score = Math.max(score, 80);\n } else {\n const matchedTokenCount = queryTokens.filter((token) =>\n normalizedValue.includes(token),\n ).length;\n if (matchedTokenCount === queryTokens.length && queryTokens.length > 0) {\n score = Math.max(score, 60 + matchedTokenCount);\n } else if (matchedTokenCount > 0) {\n score = Math.max(score, matchedTokenCount * 10);\n }\n }\n }\n\n return score;\n}\n\nfunction searchMatch(\n fields: ReadonlyArray<{\n name: string;\n value: string | readonly string[];\n }>,\n normalizedQuery: string,\n queryTokens: readonly string[],\n) {\n const scoredFields = fields\n .map((field) => ({\n name: field.name,\n score: scoreSearchField(field.value, normalizedQuery, queryTokens),\n }))\n .filter((field) => field.score > 0);\n\n if (scoredFields.length === 0) return null;\n\n return {\n matchedFields: scoredFields.map((field) => field.name),\n score: Math.max(...scoredFields.map((field) => field.score)),\n };\n}\n\nfunction referenceSearchSortPriority(targetKind: ReferenceLookupKind) {\n switch (targetKind) {\n case \"claimFamily\":\n return 0;\n case \"sourceType\":\n return 1;\n case \"framework\":\n return 2;\n }\n}\n\nfunction buildSearchItem(\n input: Omit<ReferenceSearchItem, \"matchedFields\" | \"score\"> & {\n fields: ReadonlyArray<{\n name: string;\n value: string | readonly string[];\n }>;\n },\n normalizedQuery: string,\n queryTokens: readonly string[],\n) {\n const match = searchMatch(input.fields, normalizedQuery, queryTokens);\n if (!match) return null;\n\n return referenceSearchItemSchema.parse({\n targetKind: input.targetKind,\n id: input.id,\n label: input.label,\n score: match.score,\n matchedFields: match.matchedFields,\n related: input.related,\n });\n}\n\nexport function searchReferenceCorpus(\n corpus: ReferenceCorpus,\n input: ReferenceSearchInput,\n): ReferenceSearch {\n const query = input.query.trim();\n const normalizedQuery = normalizeClaimText(query);\n if (!normalizedQuery) {\n return referenceSearchSchema.parse({\n kind: \"referenceSearch\",\n query,\n items: [],\n totalCount: 0,\n });\n }\n\n const queryTokens = normalizedQuery.split(\" \").filter(Boolean);\n const items: ReferenceSearchItem[] = [];\n\n for (const claimFamily of corpus.claimFamilies) {\n const item = buildSearchItem(\n {\n targetKind: \"claimFamily\",\n id: claimFamily.claimFamilyId,\n label: claimFamily.canonicalName,\n fields: [\n { name: \"id\", value: claimFamily.claimFamilyId },\n { name: \"canonicalName\", value: claimFamily.canonicalName },\n { name: \"aliases\", value: claimFamily.aliases },\n { name: \"definition\", value: claimFamily.definition },\n { name: \"impactAreas\", value: claimFamily.impactAreas },\n ],\n related: {\n claimFamilyIds: [claimFamily.claimFamilyId],\n frameworkIds: claimFamily.frameworkMappings.map((mapping) => mapping.frameworkId),\n sourceTypeIds: claimFamily.sourceRequirements.map(\n (requirement) => requirement.sourceTypeId,\n ),\n },\n },\n normalizedQuery,\n queryTokens,\n );\n if (item) items.push(item);\n }\n\n for (const sourceType of corpus.sourceTypes) {\n const claimFamilies = claimFamiliesForSourceTypeInCorpus(corpus, sourceType.sourceTypeId);\n const item = buildSearchItem(\n {\n targetKind: \"sourceType\",\n id: sourceType.sourceTypeId,\n label: sourceType.canonicalName,\n fields: [\n { name: \"id\", value: sourceType.sourceTypeId },\n { name: \"canonicalName\", value: sourceType.canonicalName },\n { name: \"aliases\", value: sourceType.aliases },\n { name: \"supportsClaim\", value: sourceType.supportsClaim },\n { name: \"requiredFields\", value: sourceType.requiredFields },\n ],\n related: {\n claimFamilyIds: claimFamilies.map((family) => family.claimFamilyId),\n frameworkIds: uniqueStrings(\n claimFamilies.flatMap((family) =>\n family.frameworkMappings.map((mapping) => mapping.frameworkId),\n ),\n ),\n sourceTypeIds: [sourceType.sourceTypeId],\n },\n },\n normalizedQuery,\n queryTokens,\n );\n if (item) items.push(item);\n }\n\n for (const framework of corpus.frameworks) {\n const claimFamilies = claimFamiliesForFrameworkInCorpus(corpus, framework.frameworkId);\n const item = buildSearchItem(\n {\n targetKind: \"framework\",\n id: framework.frameworkId,\n label: framework.canonicalName,\n fields: [\n { name: \"id\", value: framework.frameworkId },\n { name: \"canonicalName\", value: framework.canonicalName },\n { name: \"aliases\", value: framework.aliases },\n { name: \"operatorName\", value: framework.operatorName },\n { name: \"impactAreas\", value: framework.impactAreas },\n ],\n related: {\n claimFamilyIds: claimFamilies.map((family) => family.claimFamilyId),\n frameworkIds: [framework.frameworkId],\n sourceTypeIds: sourceTypesForClaimFamiliesInCorpus(corpus, claimFamilies).map(\n (sourceType) => sourceType.sourceTypeId,\n ),\n },\n },\n normalizedQuery,\n queryTokens,\n );\n if (item) items.push(item);\n }\n\n const sortedItems = items\n .sort((left, right) => {\n if (right.score !== left.score) return right.score - left.score;\n const priority =\n referenceSearchSortPriority(left.targetKind) -\n referenceSearchSortPriority(right.targetKind);\n if (priority !== 0) return priority;\n return left.id.localeCompare(right.id);\n })\n .slice(0, input.limit ?? 10);\n\n return referenceSearchSchema.parse({\n kind: \"referenceSearch\",\n query,\n items: sortedItems,\n totalCount: items.length,\n });\n}\n\nconst bundledReferenceCorpus = {\n claimFamilies: claimFamilies,\n frameworks: frameworks,\n sourceTypes: sourceTypes,\n} satisfies ReferenceCorpus;\n\nexport function searchReferences(input: ReferenceSearchInput): ReferenceSearch {\n return searchReferenceCorpus(bundledReferenceCorpus, input);\n}\n\nexport function lookupReferenceCorpus(\n corpus: ReferenceCorpus,\n input: ReferenceLookupInput,\n): ReferenceLookup {\n switch (input.kind) {\n case \"claimFamily\": {\n const target = getClaimFamilyFromCorpus(corpus, input.id);\n const claimFamilies = [target];\n return {\n kind: \"referenceLookup\",\n related: {\n claimFamilies,\n frameworks: corpus.frameworks.filter((framework) =>\n claimFamilies.some((claimFamily) =>\n claimFamily.frameworkMappings.some(\n (mapping) => mapping.frameworkId === framework.frameworkId,\n ),\n ),\n ),\n sourceTypes: sourceTypesForClaimFamiliesInCorpus(corpus, claimFamilies),\n },\n target,\n targetKind: input.kind,\n };\n }\n\n case \"framework\": {\n const target = getFrameworkFromCorpus(corpus, input.id);\n const claimFamilies = claimFamiliesForFrameworkInCorpus(corpus, input.id);\n return {\n kind: \"referenceLookup\",\n related: {\n claimFamilies,\n frameworks: [target],\n sourceTypes: sourceTypesForClaimFamiliesInCorpus(corpus, claimFamilies),\n },\n target,\n targetKind: input.kind,\n };\n }\n\n case \"sourceType\": {\n const target = getSourceTypeFromCorpus(corpus, input.id);\n const claimFamilies = claimFamiliesForSourceTypeInCorpus(corpus, input.id);\n return {\n kind: \"referenceLookup\",\n related: {\n claimFamilies,\n frameworks: corpus.frameworks.filter((framework) =>\n claimFamilies.some((claimFamily) =>\n claimFamily.frameworkMappings.some(\n (mapping) => mapping.frameworkId === framework.frameworkId,\n ),\n ),\n ),\n sourceTypes: [target],\n },\n target,\n targetKind: input.kind,\n };\n }\n }\n}\n\nexport function lookupReference(input: ReferenceLookupInput): ReferenceLookup {\n return lookupReferenceCorpus(bundledReferenceCorpus, input);\n}\n","import type { ClaimFamily } from \"../canon.ts\";\n\n// Extended claim corpus. Authored from domain expertise; entries are\n// reviewStatus \"draft\" until verified. Aliases drive decode matching —\n// include the phrasings that actually appear on product pages.\n\nexport const extendedClaimFamilies: readonly ClaimFamily[] = [\n\n // ── Chemical exclusions ──────────────────────────────────────────────\n\n {\n claimFamilyId: \"claims_halogenated_flame_retardant_free\",\n canonicalName: \"Claims Halogenated Flame Retardant Free\",\n aliases: [\"HFR free\", \"no flame retardants\", \"flame retardant free\", \"no halogenated flame retardants\"],\n claimKind: \"chemical_exclusion\",\n impactAreas: [\"human_health\", \"ecosystem_health\"],\n definition:\n \"The source claims the product contains no halogenated flame retardant chemicals under some stated or unstated scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"chemical_exclusion_statement\",\n requiredFields: [\"chemical_family\", \"scope\", \"threshold\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"Flammability code compliance may still require other treatments — ask what replaced the HFRs.\"],\n },\n {\n sourceTypeId: \"declare_label\",\n requiredFields: [\"declare_status\", \"valid_until\"],\n minimumSourceAuthority: \"programme_operator\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"living-building-challenge\", ruleVersionId: \"lbc-current\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"well\", ruleVersionId: \"well-v2\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Several HFRs appear on the LBC Red List; a current Declare label is strong support.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_heavy_metal_free\",\n canonicalName: \"Claims Heavy Metal Free\",\n aliases: [\"heavy metal free\", \"no heavy metals\", \"lead free\", \"mercury free\", \"cadmium free\"],\n claimKind: \"chemical_exclusion\",\n impactAreas: [\"human_health\", \"ecosystem_health\"],\n definition:\n \"The source claims the product is free of one or more heavy metals (commonly lead, mercury, cadmium, hexavalent chromium) under some stated or unstated scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"chemical_exclusion_statement\",\n requiredFields: [\"chemical_family\", \"scope\", \"threshold\", \"test_method_or_attestation\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"'Free' usually means below a detection threshold — ask which metals and what limit.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"living-building-challenge\", ruleVersionId: \"lbc-current\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"RoHS-style test reports are stronger than bare statements.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_bisphenol_free\",\n canonicalName: \"Claims Bisphenol Free\",\n aliases: [\"BPA free\", \"bisphenol free\", \"no BPA\", \"BPA-free\"],\n claimKind: \"chemical_exclusion\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims the product contains no bisphenol A (and sometimes other bisphenols) under some stated or unstated scope.\",\n sourceRequirements: [\n {\n sourceTypeId: \"chemical_exclusion_statement\",\n requiredFields: [\"chemical_family\", \"scope\", \"threshold\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"'BPA free' products sometimes substitute BPS/BPF — ask about the whole bisphenol family.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"living-building-challenge\", ruleVersionId: \"lbc-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Regrettable substitution is the core risk with this claim.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_antimicrobial_free\",\n canonicalName: \"Claims No Added Antimicrobials\",\n aliases: [\"antimicrobial free\", \"no added antimicrobials\", \"no antimicrobial treatment\", \"biocide free\"],\n claimKind: \"chemical_exclusion\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims no antimicrobial chemicals were intentionally added to the product — a health-positive claim, since added antimicrobials carry hazard concerns and limited proven benefit in buildings.\",\n sourceRequirements: [\n {\n sourceTypeId: \"chemical_exclusion_statement\",\n requiredFields: [\"scope\", \"attestation\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"well\", ruleVersionId: \"well-v2\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Note the inversion: marketed antimicrobial *additives* are the red flag, not their absence.\"],\n greenwashingRisk: \"low\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_no_added_urea_formaldehyde\",\n canonicalName: \"Claims No Added Urea Formaldehyde\",\n aliases: [\"NAUF\", \"no added urea formaldehyde\", \"no added formaldehyde\", \"NAF\"],\n claimKind: \"chemical_exclusion\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims the composite wood product was manufactured without added urea-formaldehyde resins (NAUF) or without any added formaldehyde (NAF).\",\n sourceRequirements: [\n {\n sourceTypeId: \"chemical_exclusion_statement\",\n requiredFields: [\"resin_system\", \"scope\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"NAUF still permits phenol-formaldehyde; NAF is the stricter claim.\"],\n },\n {\n sourceTypeId: \"regulatory_compliance_statement\",\n requiredFields: [\"regulation\", \"scope\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"CARB/TSCA compliance is a legal floor, not equivalent to NAUF/NAF.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"leed\", ruleVersionId: \"leed-v4.1-v5\", relationship: \"may_support\" },\n { frameworkId: \"well\", ruleVersionId: \"well-v2\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Distinguish NAUF, NAF, and 'formaldehyde free' — three different claims.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_water_based_low_solvent\",\n canonicalName: \"Claims Water-Based / Solvent Free\",\n aliases: [\"water based\", \"water-based\", \"solvent free\", \"no solvents\", \"aqueous\"],\n claimKind: \"declaration\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims the product (typically a coating or adhesive) uses a water-based carrier rather than organic solvents.\",\n sourceRequirements: [\n {\n sourceTypeId: \"material_content_disclosure\",\n requiredFields: [\"carrier_system\", \"voc_content\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"Water-based does not automatically mean low-VOC or low-emitting.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"insufficient_alone\" },\n ],\n sourceAuthorityNotes: [\"A carrier claim, not an emissions result — pair with emissions testing.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n\n // ── IAQ ──────────────────────────────────────────────────────────────\n\n {\n claimFamilyId: \"claims_low_voc_content\",\n canonicalName: \"Claims Low VOC Content\",\n aliases: [\"low VOC content\", \"VOC content\", \"g/L VOC\", \"low-VOC paint\"],\n claimKind: \"impact_metric\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims the product's VOC *content* (grams per litre, typically for wet-applied products) is below a stated regulatory limit — distinct from chamber-tested VOC *emissions*.\",\n sourceRequirements: [\n {\n sourceTypeId: \"regulatory_compliance_statement\",\n requiredFields: [\"regulation\", \"voc_content_g_l\", \"product_category\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"Content limits (e.g. SCAQMD Rule 1113) differ from emissions standards (CDPH 01350).\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"leed\", ruleVersionId: \"leed-v4.1-v5\", relationship: \"may_support\" },\n { frameworkId: \"breeam\", ruleVersionId: \"breeam-current\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"LEED's low-emitting credit needs BOTH content and emissions compliance for wet-applied products.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n\n // ── Carbon ───────────────────────────────────────────────────────────\n\n {\n claimFamilyId: \"has_product_carbon_footprint\",\n canonicalName: \"Has Product Carbon Footprint\",\n aliases: [\"carbon footprint\", \"PCF\", \"ISO 14067\", \"cradle to gate carbon\"],\n claimKind: \"declaration\",\n impactAreas: [\"climate_health\"],\n definition:\n \"The source claims a quantified product carbon footprint study exists for the product or product family.\",\n sourceRequirements: [\n {\n sourceTypeId: \"carbon_footprint_report\",\n requiredFields: [\"system_boundary\", \"functional_unit\", \"methodology\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"ilfi-zero-carbon\", ruleVersionId: \"zc-current\", relationship: \"may_support\" },\n { frameworkId: \"dgnb\", ruleVersionId: \"dgnb-current\", relationship: \"may_support\" },\n { frameworkId: \"edge\", ruleVersionId: \"edge-current\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"architecture-2030\", ruleVersionId: \"a2030-current\", relationship: \"may_support\" },\n { frameworkId: \"se-2050\", ruleVersionId: \"se2050-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"An EPD usually supersedes a standalone PCF; ask for the EPD first.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_low_embodied_carbon\",\n canonicalName: \"Claims Low Embodied Carbon\",\n aliases: [\"low embodied carbon\", \"low carbon\", \"reduced embodied carbon\", \"low-carbon concrete\"],\n claimKind: \"impact_metric\",\n impactAreas: [\"climate_health\"],\n definition:\n \"The source claims the product's embodied carbon is low or reduced relative to some baseline — meaningful only when the baseline, scope, and GWP figure are stated.\",\n sourceRequirements: [\n {\n sourceTypeId: \"environmental_product_declaration\",\n requiredFields: [\"global_warming_potential\", \"declared_unit\", \"baseline_comparison\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Comparisons require matching product category rules and declared units.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"leed\", ruleVersionId: \"leed-v4.1-v5\", relationship: \"may_support\" },\n { frameworkId: \"ilfi-zero-carbon\", ruleVersionId: \"zc-current\", relationship: \"may_support\" },\n { frameworkId: \"breeam\", ruleVersionId: \"breeam-current\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"leti\", ruleVersionId: \"leti-current\", relationship: \"may_support\" },\n { frameworkId: \"se-2050\", ruleVersionId: \"se2050-current\", relationship: \"may_support\" },\n { frameworkId: \"architecture-2030\", ruleVersionId: \"a2030-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"'Low' against what? No baseline, no claim.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_carbon_neutral_product\",\n canonicalName: \"Claims Carbon Neutral Product\",\n aliases: [\"carbon neutral\", \"climate neutral\", \"net zero product\", \"carbon neutral certified\"],\n claimKind: \"certification\",\n impactAreas: [\"climate_health\"],\n definition:\n \"The source claims the product is carbon neutral — its measured footprint offset through purchased credits under a stated protocol.\",\n sourceRequirements: [\n {\n sourceTypeId: \"carbon_neutral_certificate\",\n requiredFields: [\"protocol\", \"scope\", \"offset_standard\", \"period\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Neutrality via offsets says nothing about the product's own emissions intensity.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"insufficient_alone\" },\n { frameworkId: \"ilfi-zero-carbon\", ruleVersionId: \"zc-current\", relationship: \"insufficient_alone\" },\n ],\n sourceAuthorityNotes: [\"Among the most scrutinised claims in green marketing law — EU rules now restrict offset-based neutrality claims.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_carbon_negative\",\n canonicalName: \"Claims Carbon Negative\",\n aliases: [\"carbon negative\", \"climate positive\", \"carbon storing\", \"sequesters carbon\"],\n claimKind: \"impact_metric\",\n impactAreas: [\"climate_health\"],\n definition:\n \"The source claims the product removes or stores more carbon than its production emits — typically bio-based products counting biogenic carbon storage.\",\n sourceRequirements: [\n {\n sourceTypeId: \"environmental_product_declaration\",\n requiredFields: [\"global_warming_potential\", \"biogenic_carbon_reporting\", \"system_boundary\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Check whether biogenic carbon is reported separately (EN 15804+A2 requires it).\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"ilfi-zero-carbon\", ruleVersionId: \"zc-current\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Stored biogenic carbon is released at end of life unless the material is preserved — boundary matters enormously.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_renewable_energy_manufacturing\",\n canonicalName: \"Claims Renewable Energy Manufacturing\",\n aliases: [\"made with renewable energy\", \"100% renewable electricity\", \"solar powered factory\", \"wind powered\"],\n claimKind: \"organizational_commitment\",\n impactAreas: [\"climate_health\"],\n definition:\n \"The source claims the product was manufactured using renewable energy, in whole or part, directly or via purchased certificates.\",\n sourceRequirements: [\n {\n sourceTypeId: \"organizational_sustainability_commitment\",\n requiredFields: [\"energy_scope\", \"mechanism\", \"percentage\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"On-site generation, PPAs, and unbundled RECs are very different strengths of claim.\"],\n },\n {\n sourceTypeId: \"greencircle_certificate\",\n requiredFields: [\"certificate_number\", \"verified_attribute\", \"attribute_value\", \"certified_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Only supports this claim when verified_attribute is Renewable Energy Use.\", \"Facility-level renewable energy verification does not lower the product's embodied carbon by itself — that requires an LCA or EPD.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Ask: which sites, what share, and bought how?\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n\n // ── Circularity ──────────────────────────────────────────────────────\n\n {\n claimFamilyId: \"claims_recyclable\",\n canonicalName: \"Claims Recyclable\",\n aliases: [\"recyclable\", \"100% recyclable\", \"fully recyclable\"],\n claimKind: \"circularity_claim\",\n impactAreas: [\"circular_economy\"],\n definition:\n \"The source claims the product can be recycled at end of life — meaningful only where collection and processing actually exist.\",\n sourceRequirements: [\n {\n sourceTypeId: \"takeback_program_documentation\",\n requiredFields: [\"program_terms\", \"regions_covered\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"Technical recyclability without an accessible recovery route is a hollow claim.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"insufficient_alone\" },\n { frameworkId: \"breeam\", ruleVersionId: \"breeam-current\", relationship: \"insufficient_alone\" },\n ],\n sourceAuthorityNotes: [\"Regulators flag unqualified recyclability claims; demand the recovery pathway.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_takeback_program\",\n canonicalName: \"Claims Take-Back Programme\",\n aliases: [\"take back program\", \"take-back\", \"product reclamation\", \"we recycle your old product\"],\n claimKind: \"circularity_claim\",\n impactAreas: [\"circular_economy\"],\n definition:\n \"The source claims the manufacturer will reclaim the product at end of life under a published programme.\",\n sourceRequirements: [\n {\n sourceTypeId: \"takeback_program_documentation\",\n requiredFields: [\"program_terms\", \"regions_covered\", \"materials_accepted\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"green-star\", ruleVersionId: \"green-star-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Confirm the programme is live and covers the project's region.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_design_for_disassembly\",\n canonicalName: \"Claims Design for Disassembly\",\n aliases: [\"design for disassembly\", \"DfD\", \"demountable\", \"designed to be taken apart\"],\n claimKind: \"circularity_claim\",\n impactAreas: [\"circular_economy\"],\n definition:\n \"The source claims the product is designed so components can be separated for reuse or recycling — mechanical fixings over adhesives, separable material layers.\",\n sourceRequirements: [\n {\n sourceTypeId: \"material_content_disclosure\",\n requiredFields: [\"disassembly_instructions\", \"connection_types\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"dgnb\", ruleVersionId: \"dgnb-current\", relationship: \"may_support\" },\n { frameworkId: \"breeam\", ruleVersionId: \"breeam-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Ask for the disassembly documentation — its existence is the test.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_compostable\",\n canonicalName: \"Claims Compostable\",\n aliases: [\"compostable\", \"industrially compostable\", \"home compostable\"],\n claimKind: \"circularity_claim\",\n impactAreas: [\"circular_economy\", \"ecosystem_health\"],\n definition:\n \"The source claims the product breaks down in composting conditions — industrial and home composting are very different standards.\",\n sourceRequirements: [\n {\n sourceTypeId: \"regulatory_compliance_statement\",\n requiredFields: [\"standard\", \"conditions\", \"certification_body\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"EN 13432 / ASTM D6400 cover industrial composting only.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"insufficient_alone\" },\n ],\n sourceAuthorityNotes: [\"Rarely relevant to durable interior products; treat as marketing unless certified.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_biodegradable\",\n canonicalName: \"Claims Biodegradable\",\n aliases: [\"biodegradable\", \"naturally biodegrades\"],\n claimKind: \"circularity_claim\",\n impactAreas: [\"ecosystem_health\"],\n definition:\n \"The source claims the product biodegrades — without a standard, timeframe, and environment, this is one of the weakest environmental claims.\",\n sourceRequirements: [\n {\n sourceTypeId: \"regulatory_compliance_statement\",\n requiredFields: [\"standard\", \"timeframe\", \"environment\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"'Biodegradable' with no standard cited is generally unverifiable.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"insufficient_alone\" },\n ],\n sourceAuthorityNotes: [\"Several jurisdictions restrict unqualified biodegradability claims outright.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_closed_loop_content\",\n canonicalName: \"Claims Closed-Loop Recycled Content\",\n aliases: [\"closed loop\", \"closed-loop recycling\", \"product to product recycling\", \"own take-back recycled\"],\n claimKind: \"circularity_claim\",\n impactAreas: [\"circular_economy\"],\n definition:\n \"The source claims recycled content sourced from the manufacturer's own reclaimed products — the strongest form of recycled-content claim.\",\n sourceRequirements: [\n {\n sourceTypeId: \"material_content_disclosure\",\n requiredFields: [\"recycled_content_type\", \"percentage\", \"source_stream\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [],\n },\n {\n sourceTypeId: \"takeback_program_documentation\",\n requiredFields: [\"program_terms\", \"recovery_outcomes\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [],\n },\n {\n sourceTypeId: \"greencircle_certificate\",\n requiredFields: [\"certificate_number\", \"verified_attribute\", \"attribute_value\", \"certified_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Only supports this claim when verified_attribute is Closed Loop Product.\", \"Closed-loop verification concerns the recycling pathway; the recycled content percentage is a separate figure.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"green-star\", ruleVersionId: \"green-star-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Ask what share of content is genuinely closed-loop vs general post-consumer.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_extended_durability\",\n canonicalName: \"Claims Extended Durability\",\n aliases: [\"lifetime warranty\", \"25 year warranty\", \"built to last\", \"extended warranty\"],\n claimKind: \"declaration\",\n impactAreas: [\"circular_economy\"],\n definition:\n \"The source claims unusually long product life, typically evidenced by warranty length — a legitimate sustainability lever, since longevity displaces replacement impacts.\",\n sourceRequirements: [\n {\n sourceTypeId: \"organizational_sustainability_commitment\",\n requiredFields: [\"warranty_terms\", \"warranty_years\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"Read exclusions; commercial warranties often exclude wear.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Durability is under-credited in rating systems but real for whole-life carbon.\"],\n greenwashingRisk: \"low\",\n reviewStatus: \"reviewed\",\n },\n\n // ── Origin & content ─────────────────────────────────────────────────\n\n {\n claimFamilyId: \"claims_bio_based_content\",\n canonicalName: \"Claims Bio-Based Content\",\n aliases: [\"bio-based\", \"biobased\", \"plant based\", \"made from plants\", \"bio-based content\"],\n claimKind: \"origin_claim\",\n impactAreas: [\"climate_health\", \"ecosystem_health\"],\n definition:\n \"The source claims a stated share of the product derives from biological (plant or animal) rather than fossil feedstocks.\",\n sourceRequirements: [\n {\n sourceTypeId: \"material_content_disclosure\",\n requiredFields: [\"bio_based_percentage\", \"test_method\", \"scope\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"ASTM D6866 testing or USDA BioPreferred listing strengthens the claim.\"],\n },\n {\n sourceTypeId: \"greencircle_certificate\",\n requiredFields: [\"certificate_number\", \"verified_attribute\", \"attribute_value\", \"certified_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Only supports this claim when verified_attribute is Biobased Content.\", \"Biobased percentage verification does not imply biodegradability, compostability, or lower carbon.\"],\n },\n {\n sourceTypeId: \"usda_certified_biobased_label\",\n requiredFields: [\"certification_number\", \"biobased_content_percentage\", \"product_category\", \"certification_date\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"The claim is only as strong as the stated percentage — repeat the verified number, never round up to 'plant-based'.\", \"Confirm the certified formulation matches the current shipping product; reformulation invalidates the tested percentage.\"],\n },\n {\n sourceTypeId: \"ok_biobased_certificate\",\n requiredFields: [\"certificate_number\", \"star_rating\", \"biobased_carbon_percentage\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Record the star rating and percentage — the mark alone spans 20% to over 80% renewable carbon.\", \"Never let this certificate stand in for compostability or biodegradability claims, which TÜV Austria certifies separately.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"leed\", ruleVersionId: \"leed-v4.1-v5\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Bio-based does not mean low-carbon or non-toxic; it is an origin claim only.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_rapidly_renewable\",\n canonicalName: \"Claims Rapidly Renewable Material\",\n aliases: [\"rapidly renewable\", \"bamboo\", \"cork\", \"10 year harvest cycle\"],\n claimKind: \"origin_claim\",\n impactAreas: [\"ecosystem_health\"],\n definition:\n \"The source claims the product is made from materials harvested on a short rotation (classically under 10 years — bamboo, cork, wool, linoleum inputs).\",\n sourceRequirements: [\n {\n sourceTypeId: \"origin_attestation\",\n requiredFields: [\"material\", \"harvest_cycle\", \"content_percentage\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"leed\", ruleVersionId: \"leed-v4.1-v5\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Largely a legacy LEED concept; current versions fold it into broader material credits.\"],\n greenwashingRisk: \"low\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_regional_sourcing\",\n canonicalName: \"Claims Regional Sourcing\",\n aliases: [\"locally sourced\", \"regional materials\", \"sourced within 100 miles\", \"local manufacturing\"],\n claimKind: \"origin_claim\",\n impactAreas: [\"climate_health\", \"social_health_equity\"],\n definition:\n \"The source claims materials were extracted, processed, or manufactured within a stated distance of the project or market.\",\n sourceRequirements: [\n {\n sourceTypeId: \"origin_attestation\",\n requiredFields: [\"locations\", \"radius_basis\", \"value_share\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"'Local' is project-relative — a fixed factory cannot be universally local.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"gsas\", ruleVersionId: \"gsas-current\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Transport is usually a small slice of embodied carbon; treat as a social/economic claim too.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_mass_balance_allocation\",\n canonicalName: \"Claims Mass Balance Content\",\n aliases: [\"mass balance\", \"ISCC certified content\", \"attributed recycled content\", \"certified circular content\"],\n claimKind: \"origin_claim\",\n impactAreas: [\"circular_economy\", \"climate_health\"],\n definition:\n \"The source claims recycled or bio-based content allocated via mass balance bookkeeping — credits assigned across production rather than physically present in each unit.\",\n sourceRequirements: [\n {\n sourceTypeId: \"iscc_plus_certificate\",\n requiredFields: [\"certificate_number\", \"allocation_method\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Legitimate when disclosed; misleading when presented as physical content.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"The question to ask: is this physical content or allocated credit?\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_organic_fiber_content\",\n canonicalName: \"Claims Organic Fibre Content\",\n aliases: [\"organic cotton\", \"organic wool\", \"organic fibres\", \"GOTS certified organic\"],\n claimKind: \"origin_claim\",\n impactAreas: [\"ecosystem_health\", \"human_health\"],\n definition:\n \"The source claims the textile contains organically grown fibres, ideally verified through GOTS or equivalent chain of custody.\",\n sourceRequirements: [\n {\n sourceTypeId: \"gots_certificate\",\n requiredFields: [\"certificate_number\", \"label_grade\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"living-building-challenge\", ruleVersionId: \"lbc-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Uncertified 'organic' textile claims are unverifiable; ask for the certificate.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n\n // ── Certifications held ──────────────────────────────────────────────\n\n {\n claimFamilyId: \"has_cradle_to_cradle_certification\",\n canonicalName: \"Has Cradle to Cradle Certification\",\n aliases: [\"Cradle to Cradle certified\", \"C2C certified\", \"C2C Gold\", \"C2C Silver\", \"C2C Bronze\"],\n claimKind: \"certification\",\n impactAreas: [\"human_health\", \"circular_economy\", \"climate_health\", \"ecosystem_health\", \"social_health_equity\"],\n definition:\n \"The source claims the product holds Cradle to Cradle certification at some level (Bronze through Platinum).\",\n sourceRequirements: [\n {\n sourceTypeId: \"cradle_to_cradle_certificate\",\n requiredFields: [\"certification_level\", \"version\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"leed\", ruleVersionId: \"leed-v4.1-v5\", relationship: \"may_support\" },\n { frameworkId: \"well\", ruleVersionId: \"well-v2\", relationship: \"may_support\" },\n { frameworkId: \"green-star\", ruleVersionId: \"green-star-current\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"One of the few certifications recognised across many rating systems — verify level and validity.\"],\n greenwashingRisk: \"low\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_greenguard_gold_certification\",\n canonicalName: \"Has GREENGUARD Gold Certification\",\n aliases: [\"GREENGUARD Gold\", \"GREENGUARD certified\", \"UL GREENGUARD Gold\"],\n claimKind: \"certification\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims the product holds GREENGUARD or GREENGUARD Gold certification for low chemical emissions.\",\n sourceRequirements: [\n {\n sourceTypeId: \"greenguard_certificate\",\n requiredFields: [\"certificate_level\", \"certificate_number\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"leed\", ruleVersionId: \"leed-v4.1-v5\", relationship: \"may_support\" },\n { frameworkId: \"well\", ruleVersionId: \"well-v2\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Gold (stricter limits) is what most rating systems reference; plain GREENGUARD may not qualify.\"],\n greenwashingRisk: \"low\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_oeko_tex_standard_100\",\n canonicalName: \"Has OEKO-TEX Standard 100\",\n aliases: [\"OEKO-TEX certified\", \"OEKO-TEX Standard 100\", \"Oeko-Tex\"],\n claimKind: \"certification\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims the textile article holds OEKO-TEX Standard 100 certification for harmful-substance testing.\",\n sourceRequirements: [\n {\n sourceTypeId: \"oeko_tex_standard_100_certificate\",\n requiredFields: [\"certificate_number\", \"product_class\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"well\", ruleVersionId: \"well-v2\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Certificates are article-specific and expire annually — check both.\"],\n greenwashingRisk: \"low\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_bifma_level_certification\",\n canonicalName: \"Has BIFMA LEVEL Certification\",\n aliases: [\"LEVEL certified\", \"BIFMA LEVEL\", \"LEVEL 3\", \"level certified furniture\"],\n claimKind: \"certification\",\n impactAreas: [\"human_health\", \"climate_health\", \"social_health_equity\"],\n definition:\n \"The source claims the furniture product holds LEVEL certification under ANSI/BIFMA e3.\",\n sourceRequirements: [\n {\n sourceTypeId: \"bifma_level_certificate\",\n requiredFields: [\"level\", \"e3_version\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"leed\", ruleVersionId: \"leed-v4.1-v5\", relationship: \"may_support\" },\n { frameworkId: \"well\", ruleVersionId: \"well-v2\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"The level (1–3) and the scorecard matter more than the badge.\"],\n greenwashingRisk: \"low\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_type1_ecolabel\",\n canonicalName: \"Has Type I Ecolabel\",\n aliases: [\"EU Ecolabel\", \"Blue Angel\", \"Nordic Swan\", \"Green Seal certified\", \"ECOLOGO certified\", \"ecolabel\"],\n claimKind: \"certification\",\n impactAreas: [\"human_health\", \"ecosystem_health\", \"climate_health\"],\n definition:\n \"The source claims the product holds a third-party multi-criteria ecolabel (ISO 14024 Type I) such as EU Ecolabel, Blue Angel, Nordic Swan, Green Seal, or UL ECOLOGO.\",\n sourceRequirements: [\n {\n sourceTypeId: \"eu_ecolabel\",\n requiredFields: [\"licence_number\", \"product_group\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n {\n sourceTypeId: \"blue_angel_label\",\n requiredFields: [\"basic_award_criteria\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n {\n sourceTypeId: \"green_seal_certificate\",\n requiredFields: [\"standard_number\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n {\n sourceTypeId: \"global_greentag_certificate\",\n requiredFields: [\"certificate_number\", \"certification_scheme\", \"certification_level\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Record both the scheme (GreenRate or LCARate) and the level — the mark alone is ambiguous.\", \"Verify currency against the Global GreenTag product register; certificates expire and levels can change on recertification.\"],\n },\n {\n sourceTypeId: \"eco_mark_certificate\",\n requiredFields: [\"certificate_number\", \"product_category_number\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Record the Eco Mark product category number — criteria vary substantially between categories.\", \"Verify the licence is current; Eco Mark certifications are time-limited and category criteria are periodically revised.\"],\n },\n {\n sourceTypeId: \"natureplus_certificate\",\n requiredFields: [\"certificate_number\", \"product_group_guideline\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Cite the product-group award guideline the certificate was issued under — criteria differ per group.\", \"Scope is building/construction products only; do not apply the label's assurance to other product types.\"],\n },\n {\n sourceTypeId: \"scs_epp_certificate\",\n requiredFields: [\"certificate_number\", \"standard_version\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Certifier-operated programme (SCS writes and certifies its own standard) — weight accordingly relative to national Type I ecolabels in this family.\", \"Record the exact EPP standard version; criteria vary across product categories and revisions.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"breeam\", ruleVersionId: \"breeam-current\", relationship: \"may_support\" },\n { frameworkId: \"dgnb\", ruleVersionId: \"dgnb-current\", relationship: \"may_support\" },\n { frameworkId: \"green-star\", ruleVersionId: \"green-star-current\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Type I labels are genuinely third-party; the criteria document defines what was actually checked.\"],\n greenwashingRisk: \"low\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_living_product_challenge_label\",\n canonicalName: \"Has Living Product Challenge Label\",\n aliases: [\"Living Product Challenge\", \"LPC certified\"],\n claimKind: \"certification\",\n impactAreas: [\"human_health\", \"ecosystem_health\", \"social_health_equity\", \"climate_health\"],\n definition:\n \"The source claims the product is certified under ILFI's Living Product Challenge.\",\n sourceRequirements: [\n {\n sourceTypeId: \"living_product_challenge_label\",\n requiredFields: [\"imperatives_achieved\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"living-building-challenge\", ruleVersionId: \"lbc-current\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Rare and demanding; a strong signal when genuine.\"],\n greenwashingRisk: \"low\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_global_recycled_standard_certification\",\n canonicalName: \"Has Global Recycled Standard Certification\",\n aliases: [\"GRS certified\", \"Global Recycled Standard\"],\n claimKind: \"certification\",\n impactAreas: [\"circular_economy\"],\n definition:\n \"The source claims recycled content verified under the Global Recycled Standard with chain of custody.\",\n sourceRequirements: [\n {\n sourceTypeId: \"global_recycled_standard_certificate\",\n requiredFields: [\"certificate_number\", \"recycled_percentage\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"green-star\", ruleVersionId: \"green-star-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Substantially stronger than self-declared recycled content.\"],\n greenwashingRisk: \"low\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_just_label\",\n canonicalName: \"Has JUST Label\",\n aliases: [\"JUST label\", \"JUST 2.0\", \"ILFI JUST\"],\n claimKind: \"certification\",\n impactAreas: [\"social_health_equity\"],\n definition:\n \"The source claims the manufacturer holds a JUST label — ILFI's social-equity transparency disclosure.\",\n sourceRequirements: [\n {\n sourceTypeId: \"just_label\",\n requiredFields: [\"organization_scope\", \"valid_until\"],\n minimumSourceAuthority: \"programme_operator\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"living-building-challenge\", ruleVersionId: \"lbc-current\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"aia-materials-pledge\", ruleVersionId: \"amp-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Disclosure, not performance — read the indicator scores.\"],\n greenwashingRisk: \"low\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"has_iso_14001_certification\",\n canonicalName: \"Has ISO 14001 Certification\",\n aliases: [\"ISO 14001\", \"ISO 14001 certified\", \"certified environmental management\"],\n claimKind: \"organizational_commitment\",\n impactAreas: [\"ecosystem_health\", \"climate_health\"],\n definition:\n \"The source claims the manufacturer holds ISO 14001 certification for its environmental management system.\",\n sourceRequirements: [\n {\n sourceTypeId: \"environmental_management_certificate\",\n requiredFields: [\"certificate_number\", \"certified_sites\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Organisational, not product-level evidence.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"breeam\", ruleVersionId: \"breeam-current\", relationship: \"insufficient_alone\" },\n { frameworkId: \"green-star\", ruleVersionId: \"green-star-current\", relationship: \"insufficient_alone\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"insufficient_alone\" },\n ],\n sourceAuthorityNotes: [\"Real but routinely overstated; it certifies management process, not product outcomes.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n\n // ── Social & organisational ──────────────────────────────────────────\n\n {\n claimFamilyId: \"claims_fair_labor_practices\",\n canonicalName: \"Claims Fair Labour Practices\",\n aliases: [\"fair labor\", \"fair labour\", \"ethically made\", \"fair trade\", \"sweatshop free\"],\n claimKind: \"organizational_commitment\",\n impactAreas: [\"social_health_equity\"],\n definition:\n \"The source claims fair working conditions in the product's manufacture — credible only with audit evidence or recognised certification.\",\n sourceRequirements: [\n {\n sourceTypeId: \"social_accountability_certificate\",\n requiredFields: [\"standard\", \"audited_sites\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n {\n sourceTypeId: \"bes_6002_certificate\",\n requiredFields: [\"verified_organization\", \"verification_number\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Maturity-based verification of the organization's processes — not a site-level audit of working conditions or a supply-chain guarantee.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"living-building-challenge\", ruleVersionId: \"lbc-current\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"aia-materials-pledge\", ruleVersionId: \"amp-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"'Ethically made' without audit scope is marketing; ask which sites were audited and when.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_conflict_mineral_due_diligence\",\n canonicalName: \"Claims Conflict Mineral Due Diligence\",\n aliases: [\"conflict free\", \"conflict minerals\", \"responsibly sourced minerals\", \"3TG\"],\n claimKind: \"organizational_commitment\",\n impactAreas: [\"social_health_equity\"],\n definition:\n \"The source claims due diligence on conflict minerals (tin, tantalum, tungsten, gold) in the supply chain.\",\n sourceRequirements: [\n {\n sourceTypeId: \"conflict_minerals_report\",\n requiredFields: [\"template_version\", \"declaration_scope\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Due diligence documents inquiry, not a guarantee of absence.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_zero_waste_to_landfill\",\n canonicalName: \"Claims Zero Waste to Landfill\",\n aliases: [\"zero waste\", \"zero waste to landfill\", \"landfill free manufacturing\"],\n claimKind: \"organizational_commitment\",\n impactAreas: [\"circular_economy\", \"ecosystem_health\"],\n definition:\n \"The source claims the manufacturing facility diverts all (or nearly all) waste from landfill — a facility claim, certifiable under TRUE.\",\n sourceRequirements: [\n {\n sourceTypeId: \"organizational_sustainability_commitment\",\n requiredFields: [\"facility_scope\", \"diversion_rate\", \"verification\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"Waste-to-energy is often counted as diversion — ask how incineration is treated.\"],\n },\n {\n sourceTypeId: \"greencircle_certificate\",\n requiredFields: [\"certificate_number\", \"verified_attribute\", \"attribute_value\", \"certified_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Only supports this claim when verified_attribute is Waste Diversion from Landfill.\", \"This is a facility-level verification with a stated diversion percentage — record the percentage rather than rounding up to 'zero waste'.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"true-zero-waste\", ruleVersionId: \"true-current\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"TRUE certification turns this from marketing into verified fact.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_water_stewardship\",\n canonicalName: \"Claims Water Stewardship\",\n aliases: [\"water positive\", \"water neutral\", \"reduced water use\", \"water stewardship\"],\n claimKind: \"organizational_commitment\",\n impactAreas: [\"ecosystem_health\"],\n definition:\n \"The source claims responsible water management in manufacturing — reduced intensity, recycling, or watershed-level commitments.\",\n sourceRequirements: [\n {\n sourceTypeId: \"organizational_sustainability_commitment\",\n requiredFields: [\"facility_scope\", \"metric\", \"baseline\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [],\n },\n {\n sourceTypeId: \"aws_water_stewardship_certificate\",\n requiredFields: [\"certified_site\", \"certification_level\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"AWS certification is the audited version of this claim; without it (or equivalent), water stewardship remains a self-declared commitment.\", \"Confirm the certified site is where this product is manufactured.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"estidama-pearl\", ruleVersionId: \"pearl-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"AWS Standard certification is the strongest available evidence here.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n\n // ── Programme participation hints ────────────────────────────────────\n\n {\n claimFamilyId: \"rating_system_well_contribution_hint\",\n canonicalName: \"WELL Contribution Hint\",\n aliases: [\"WELL compliant\", \"contributes to WELL\", \"WELL points\", \"helps achieve WELL\"],\n claimKind: \"rating_system_hint\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source uses WELL-oriented language suggesting the product helps satisfy WELL features — useful as a pointer, never as proof.\",\n sourceRequirements: [\n {\n sourceTypeId: \"rating_system_contribution_language\",\n requiredFields: [\"programme_or_method\", \"feature_reference\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"WELL features are satisfied by spaces and policies, not by products alone.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"well\", ruleVersionId: \"well-v2\", relationship: \"insufficient_alone\" },\n ],\n sourceAuthorityNotes: [\"Translate to the underlying evidence: which certificate satisfies which WELL feature?\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"rating_system_breeam_contribution_hint\",\n canonicalName: \"BREEAM Contribution Hint\",\n aliases: [\"BREEAM compliant\", \"contributes to BREEAM\", \"BREEAM credits\", \"helps achieve BREEAM\"],\n claimKind: \"rating_system_hint\",\n impactAreas: [\"climate_health\", \"human_health\"],\n definition:\n \"The source uses BREEAM-oriented language suggesting the product contributes to BREEAM credits — a pointer to check, not evidence.\",\n sourceRequirements: [\n {\n sourceTypeId: \"rating_system_contribution_language\",\n requiredFields: [\"programme_or_method\", \"credit_reference\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"breeam\", ruleVersionId: \"breeam-current\", relationship: \"insufficient_alone\" },\n ],\n sourceAuthorityNotes: [\"Ask which BREEAM issue (e.g. Mat 02, Hea 02) and which scheme version.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n\n // ── Marketing language ───────────────────────────────────────────────\n // The phrases designers actually meet on product pages. Catalogued so\n // Decode can name them for what they are: language without a standard.\n\n {\n claimFamilyId: \"claims_non_toxic\",\n canonicalName: \"Claims Non-Toxic\",\n aliases: [\"non-toxic\", \"non toxic\", \"nontoxic\", \"toxin free\", \"no toxins\"],\n claimKind: \"declaration\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source describes the product as non-toxic — a phrase with no standard definition, test method, or threshold in building products.\",\n sourceRequirements: [\n {\n sourceTypeId: \"chemical_exclusion_statement\",\n requiredFields: [\"chemical_family\", \"scope\", \"test_method_or_attestation\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"Translate to specific exclusions: which substances, at what threshold, verified how?\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"insufficient_alone\" },\n ],\n sourceAuthorityNotes: [\"Regulators treat unqualified 'non-toxic' as a deceptive-claim red flag; so should specifiers.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_eco_friendly\",\n canonicalName: \"Claims Eco-Friendly\",\n aliases: [\"eco-friendly\", \"eco friendly\", \"environmentally friendly\", \"green product\", \"earth friendly\", \"sustainable product\"],\n claimKind: \"declaration\",\n impactAreas: [\"ecosystem_health\"],\n definition:\n \"The source describes the product as eco-friendly, green, or sustainable without naming a specific attribute — the archetypal unverifiable claim.\",\n sourceRequirements: [],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"insufficient_alone\" },\n ],\n sourceAuthorityNotes: [\"EU and UK green-claims rules now effectively prohibit this phrasing without substantiation. Ask: friendly how, exactly?\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_chemical_free\",\n canonicalName: \"Claims Chemical-Free\",\n aliases: [\"chemical free\", \"chemical-free\", \"no chemicals\", \"free of chemicals\"],\n claimKind: \"declaration\",\n impactAreas: [\"human_health\"],\n definition:\n \"The source claims the product is chemical-free — literally impossible, since all matter is chemicals. A signal the marketing is not chemistry-literate.\",\n sourceRequirements: [],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"insufficient_alone\" },\n ],\n sourceAuthorityNotes: [\"Treat as a prompt to ask for the actual ingredient disclosure.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_natural_materials\",\n canonicalName: \"Claims Natural Materials\",\n aliases: [\"all natural\", \"100% natural\", \"natural materials\", \"made from natural materials\"],\n claimKind: \"origin_claim\",\n impactAreas: [\"human_health\", \"ecosystem_health\"],\n definition:\n \"The source claims the product is natural or made from natural materials — an origin adjective, not a safety or sustainability attribute.\",\n sourceRequirements: [\n {\n sourceTypeId: \"material_content_disclosure\",\n requiredFields: [\"content_breakdown\", \"scope\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"Natural materials can still be treated, coated, or blended — ask for the full content.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"insufficient_alone\" },\n ],\n sourceAuthorityNotes: [\"'Natural' says nothing about emissions, carbon, or toxicity — asbestos and lead are natural.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_plastic_free\",\n canonicalName: \"Claims Plastic-Free\",\n aliases: [\"plastic free\", \"plastic-free\", \"no plastic\", \"zero plastic\"],\n claimKind: \"chemical_exclusion\",\n impactAreas: [\"ecosystem_health\", \"circular_economy\"],\n definition:\n \"The source claims the product contains no plastics — verifiable in principle, but the scope (binders, coatings, backings, packaging) is usually unstated.\",\n sourceRequirements: [\n {\n sourceTypeId: \"material_content_disclosure\",\n requiredFields: [\"content_breakdown\", \"scope\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"Synthetic binders and coatings count; ask whether the claim covers them.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Often true of the face material and false of the backing — scope is everything.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_ocean_plastic_content\",\n canonicalName: \"Claims Ocean Plastic Content\",\n aliases: [\"ocean plastic\", \"ocean-bound plastic\", \"marine plastic\", \"recycled ocean plastic\"],\n claimKind: \"origin_claim\",\n impactAreas: [\"ecosystem_health\", \"circular_economy\"],\n definition:\n \"The source claims recycled content recovered from oceans or 'ocean-bound' sources — emotive provenance that needs chain-of-custody to mean anything.\",\n sourceRequirements: [\n {\n sourceTypeId: \"global_recycled_standard_certificate\",\n requiredFields: [\"certificate_number\", \"recycled_percentage\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"'Ocean-bound' means collected near coastlines, not from the sea — a much weaker claim.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\"Ask what share is genuinely ocean-recovered and who verified the supply chain.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_vegan_materials\",\n canonicalName: \"Claims Vegan Materials\",\n aliases: [\"vegan\", \"vegan leather\", \"animal free\", \"cruelty free\", \"no animal products\"],\n claimKind: \"origin_claim\",\n impactAreas: [\"social_health_equity\", \"ecosystem_health\"],\n definition:\n \"The source claims the product contains no animal-derived materials. An ethics claim — frequently paired with synthetic substitutes that carry their own footprint.\",\n sourceRequirements: [\n {\n sourceTypeId: \"material_content_disclosure\",\n requiredFields: [\"content_breakdown\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"'Vegan leather' is usually PU or PVC — check what replaced the animal material.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"insufficient_alone\" },\n ],\n sourceAuthorityNotes: [\"Vegan and sustainable are independent axes; verify each separately.\"],\n greenwashingRisk: \"medium\",\n reviewStatus: \"reviewed\",\n },\n {\n claimFamilyId: \"claims_red_list_free_statement\",\n canonicalName: \"Claims Red List Free (Unverified)\",\n aliases: [\"Red List free\", \"Red List compliant\", \"LBC compliant\", \"free of Red List chemicals\"],\n claimKind: \"chemical_exclusion\",\n impactAreas: [\"human_health\", \"ecosystem_health\"],\n definition:\n \"The source states the product is Red List free without a Declare label — a self-declared version of a claim that has a proper verification route.\",\n sourceRequirements: [\n {\n sourceTypeId: \"declare_label\",\n requiredFields: [\"declare_status\", \"valid_until\"],\n minimumSourceAuthority: \"programme_operator\",\n caveats: [\"A current Declare label is the credible form of this claim — ask why there isn't one.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"living-building-challenge\", ruleVersionId: \"lbc-current\", relationship: \"insufficient_alone\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"insufficient_alone\" },\n ],\n sourceAuthorityNotes: [\"The Red List changes over time; an undated self-declaration may reference an old list.\"],\n greenwashingRisk: \"high\",\n reviewStatus: \"reviewed\",\n },\n\n // ── Batch 3: materials / sector stewardship certifications ────────────\n\n {\n claimFamilyId: \"has_responsible_material_sourcing_certification\",\n canonicalName: \"Has Responsible Material Sourcing Certification\",\n aliases: [\"Responsibly Sourced Materials\", \"Responsible Sourcing Certified\", \"Certified Responsible Sourcing\", \"Responsibly Sourced Metal\", \"Responsible Sourcing Certification\", \"Responsibly Produced Materials\"],\n claimKind: \"certification\",\n impactAreas: [\"ecosystem_health\", \"social_health_equity\"],\n definition:\n \"A raw material in the product was extracted, farmed, or produced at sites independently audited against a sector-specific responsible-production standard (covering issues like environmental management, community impact, labour rights, and governance), and — where a chain-of-custody scope exists — tracked from those sites into the product. This is a claim about how the material was sourced and produced, not about the finished product's carbon footprint, chemical content, or overall environmental impact.\",\n sourceRequirements: [\n {\n sourceTypeId: \"aluminium_stewardship_certificate\",\n requiredFields: [\"standard_type\", \"certified_entity\", \"certificate_number\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Only ASI Chain of Custody certification links certified production to the metal in this product; a Performance Standard certificate covers facility practices only.\"],\n },\n {\n sourceTypeId: \"copper_mark_assurance\",\n requiredFields: [\"participant_site\", \"award_status\", \"assessment_date\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Site-level award only; supply-chain traceability to the product must be documented separately.\"],\n },\n {\n sourceTypeId: \"responsiblesteel_certificate\",\n requiredFields: [\"certification_type\", \"certified_site\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Certified Site alone supports no product claim; look for Certified Steel and note its progress level.\"],\n },\n {\n sourceTypeId: \"irma_mine_site_assessment\",\n requiredFields: [\"mine_site\", \"achievement_level\", \"audit_date\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Record the achievement level explicitly — IRMA levels are graded performance, not pass/fail certification.\"],\n },\n {\n sourceTypeId: \"csc_responsible_sourcing_certificate\",\n requiredFields: [\"certificate_level\", \"certified_plant\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Confirm the supplying plant is the certified one and record the level.\"],\n },\n {\n sourceTypeId: \"nsc_373_certificate\",\n requiredFields: [\"facility_scope\", \"certification_level\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Certified-origin claims for delivered stone require the chain-of-custody companion certificate.\"],\n },\n {\n sourceTypeId: \"rainforest_alliance_certificate\",\n requiredFields: [\"certified_crop_or_material\", \"certificate_number\", \"traceability_type\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Record the traceability type; mass-balance claims are weaker than segregated or identity-preserved sourcing.\"],\n },\n {\n sourceTypeId: \"responsible_wool_standard_certificate\",\n requiredFields: [\"scope_certificate_number\", \"certified_material_percentage\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Verify chain-of-custody coverage through to the product seller, not just the farm.\"],\n },\n {\n sourceTypeId: \"leather_working_group_certificate\",\n requiredFields: [\"audited_facility\", \"audit_rating\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Environmental audit of the tannery only — supports no animal-welfare or farm-origin claim.\"],\n },\n {\n sourceTypeId: \"bes_6001_certificate\",\n requiredFields: [\"certificate_number\", \"rating_level\", \"product_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Record the rating level — BREEAM credit contribution scales with it.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"breeam\", ruleVersionId: \"breeam-current\", relationship: \"may_support\" },\n { frameworkId: \"leed\", ruleVersionId: \"leed-v4.1-v5\", relationship: \"may_support\" },\n { frameworkId: \"green-star\", ruleVersionId: \"green-star-current\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\n \"All programmes in this family use accredited third-party audits; a manufacturer's own statement that a material is 'responsibly sourced' does not satisfy this claim.\",\n \"Site/facility certification and chain of custody are different scopes: a certified mine, smelter, tannery, or plant does not by itself prove the material in THIS product came from that site. Check for a chain-of-custody or product-scope certificate where the programme offers one (ASI CoC, ResponsibleSteel Certified Steel, NSC 373 CoC, RWS scope/transaction certificates).\",\n \"Programmes differ in what they audit (environment, labour, community, governance) and in stringency; the level or score on the certificate matters.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"draft\",\n },\n {\n claimFamilyId: \"has_water_efficiency_label\",\n canonicalName: \"Has Water Efficiency Label\",\n aliases: [\"WaterSense Labeled\", \"WaterSense Certified\", \"EPA WaterSense\", \"Water Efficient Product\", \"Water Efficiency Certified\"],\n claimKind: \"certification\",\n impactAreas: [\"ecosystem_health\"],\n definition:\n \"The product (typically a plumbing fixture, fitting, or irrigation control) has been independently certified to a published water-efficiency specification, using measurably less water than a standard product in its category while meeting performance criteria. This is a use-phase water claim about the product itself — distinct from site or corporate water stewardship claims.\",\n sourceRequirements: [\n {\n sourceTypeId: \"watersense_label\",\n requiredFields: [\"product_model\", \"certifying_body\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Verify the model's current listing in the EPA WaterSense product registry.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"leed\", ruleVersionId: \"leed-v4.1-v5\", relationship: \"required_by\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\n \"LEED v4/v4.1's Indoor Water Use Reduction prerequisite requires WaterSense-labeled fixtures for fixture types where a WaterSense specification exists (US projects) — hence 'required_by' scoped to applicable fixture types.\",\n \"Verify the product is currently listed in the EPA WaterSense registry; certification is maintained by licensed certifying bodies and products can be delisted.\",\n ],\n greenwashingRisk: \"low\",\n reviewStatus: \"draft\",\n },\n {\n claimFamilyId: \"has_nsf_product_sustainability_certification\",\n canonicalName: \"Has NSF/ANSI Product Sustainability Certification\",\n aliases: [\"NSF/ANSI Sustainability Assessment\", \"NSF Sustainability Certified\", \"NSF/ANSI 140 Certified\", \"NSF/ANSI 332 Certified\", \"NSF/ANSI 336 Certified\", \"NSF/ANSI 342 Certified\", \"NSF/ANSI 347 Certified\", \"Certified to NSF/ANSI 347\"],\n claimKind: \"certification\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\", \"circular_economy\"],\n definition:\n \"The product is certified to one of the NSF/ANSI multi-attribute sustainability assessment standards for its product category (140 carpet, 332 resilient flooring, 336 commercial furnishings fabric, 342 wallcoverings, 347 single-ply roofing membranes). These are point-based standards scored across product design, manufacturing, long-term value, corporate governance, and innovation, with conformance levels typically Conformant/Silver/Gold/Platinum.\",\n sourceRequirements: [\n {\n sourceTypeId: \"nsf_ansi_347_certificate\",\n requiredFields: [\"certificate_number\", \"certification_level\", \"product_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Confirm the specific membrane product is within the certificate's scope.\"],\n },\n {\n sourceTypeId: \"nsf_ansi_140_certificate\",\n requiredFields: [\"certificate_number\", \"certification_level\", \"product_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n {\n sourceTypeId: \"nsf_ansi_332_certificate\",\n requiredFields: [\"certificate_number\", \"certification_level\", \"product_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n {\n sourceTypeId: \"nsf_ansi_336_certificate\",\n requiredFields: [\"certificate_number\", \"certification_level\", \"product_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n {\n sourceTypeId: \"nsf_ansi_342_certificate\",\n requiredFields: [\"certificate_number\", \"certification_level\", \"product_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\n \"Certification is by accredited bodies (NSF, SCS Global Services, UL) against the ANSI-accredited standard; the level (Conformant through Platinum) reflects points earned, so two certified products can differ substantially.\",\n ],\n greenwashingRisk: \"low\",\n reviewStatus: \"draft\",\n },\n {\n claimFamilyId: \"has_chemical_hazard_assessment\",\n canonicalName: \"Has Chemical Hazard Assessment Certification\",\n aliases: [\"GreenScreen Certified\", \"GreenScreen for Safer Chemicals\", \"EPA Safer Choice\", \"Safer Choice Certified\", \"chemical hazard assessment\", \"safer chemistry certified\"],\n claimKind: \"certification\",\n impactAreas: [\"human_health\", \"ecosystem_health\"],\n definition:\n \"The product's intentionally added chemicals were systematically assessed against a published hazard or ingredient-safety benchmark by an independent programme, with chemicals of highest concern excluded per that programme's criteria. This proves an assessment was performed and passed — it is not a claim that the product is free of hazards.\",\n sourceRequirements: [\n {\n sourceTypeId: \"greenscreen_certified_certificate\",\n requiredFields: [\"certificate_level\", \"certificate_number\", \"standard_version\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Record the certification level and the product-category standard version — requirements differ across both.\", \"Hazard assessment is not exposure or risk assessment.\"],\n },\n {\n sourceTypeId: \"safer_choice_certification\",\n requiredFields: [\"product_scope\", \"partner_company\", \"listing_status\"],\n minimumSourceAuthority: \"third_party_verified\",\n caveats: [\"Verify the product on EPA's current Safer Choice list; the listing is the evidence.\", \"Safer-for-functional-class is a comparative judgement, not an absence-of-hazard claim.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"leed\", ruleVersionId: \"leed-v4.1-v5\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\n \"Both programmes publish searchable product listings; the registry entry outranks marketing copy or packaging logos.\",\n \"A manufacturer's own statement that chemicals 'were assessed' does not meet this family's bar — assessment must be to a named third-party programme's benchmark.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"draft\",\n },\n {\n claimFamilyId: \"claims_precautionary_list_free\",\n canonicalName: \"Claims Precautionary List Free (Unverified)\",\n aliases: [\"Precautionary List Free\", \"Perkins&Will Precautionary List Free\", \"Perkins and Will Precautionary List\", \"free of Precautionary List chemicals\", \"Precautionary List compliant\"],\n claimKind: \"chemical_exclusion\",\n impactAreas: [\"human_health\", \"ecosystem_health\"],\n definition:\n \"The manufacturer states the product contains none of the chemicals of concern on the Perkins&Will Precautionary List, a design-firm-published reference list of substances to avoid in the built environment. Perkins&Will operates no certification or verification programme for this claim — it is a screening statement against a list that is periodically revised.\",\n sourceRequirements: [\n {\n sourceTypeId: \"chemical_exclusion_statement\",\n requiredFields: [\"list_version\", \"product_scope\", \"statement_date\", \"screening_threshold\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"The Precautionary List is revised over time — a statement is only meaningful against a named list version and date.\", \"No issuing body verifies this claim; it carries manufacturer-declared authority at best.\"],\n },\n {\n sourceTypeId: \"health_product_declaration\",\n requiredFields: [\"hpd_version\", \"product_scope\", \"disclosure_threshold\", \"publication_date\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n caveats: [\"An HPD screened against the Precautionary List is stronger than a bare statement, but disclosure below the stated threshold is still self-reported unless third-party verified.\", \"Confirm the HPD's screening actually references the Precautionary List, not only the LBC Red List.\"],\n },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"living-building-challenge\", ruleVersionId: \"lbc-current\", relationship: \"not_applicable\" },\n ],\n sourceAuthorityNotes: [\n \"The Precautionary List and the LBC Red List are different lists maintained by different organizations — being free of one does not imply being free of the other.\",\n \"Because Perkins&Will runs no verification programme, this family can never exceed manufacturer-declared authority without independent screening evidence.\",\n ],\n greenwashingRisk: \"high\",\n reviewStatus: \"draft\",\n },\n {\n claimFamilyId: \"has_product_energy_efficiency_certification\",\n canonicalName: \"Has Product Energy-Efficiency Certification\",\n aliases: [\"Energy Efficient\", \"ENERGY STAR Certified\", \"EPEAT Registered\", \"DLC Qualified\", \"certified energy efficient\", \"energy saving product\", \"energy efficiency label\"],\n claimKind: \"certification\",\n impactAreas: [\"climate_health\"],\n definition:\n \"The product model meets a recognized energy-performance specification for its category, confirmed by a programme registry or third-party certification. This signals lower in-use energy consumption — it says nothing about the product's materials, chemistry, embodied carbon, or the manufacturer's practices.\",\n sourceRequirements: [\n { sourceTypeId: \"energy_star_certificate\", requiredFields: [\"model_identifier\", \"product_category\", \"specification_version\", \"certification_body\"], minimumSourceAuthority: \"official_registry\", caveats: [\"Verify the model is currently listed — specification revisions delist older models.\", \"'ENERGY STAR Partner' membership is not a product certification.\"] },\n { sourceTypeId: \"epeat_registration\", requiredFields: [\"registration_tier\", \"product_category\", \"registry_record_id\", \"registered_countries\"], minimumSourceAuthority: \"official_registry\", caveats: [\"State the tier (Bronze/Silver/Gold) — they differ meaningfully.\", \"Registrations are country-specific and can be archived; check the live registry.\"] },\n { sourceTypeId: \"dlc_product_listing\", requiredFields: [\"product_identifier\", \"qualification_classification\", \"technical_requirements_version\", \"listing_status\"], minimumSourceAuthority: \"official_registry\", caveats: [\"Distinguish DLC Standard from DLC Premium — efficacy requirements differ.\", \"Products are delisted when technical requirements are updated; confirm active listing.\"] },\n ],\n frameworkMappings: [\n { frameworkId: \"leed\", ruleVersionId: \"leed-v4.1-v5\", relationship: \"may_support\" },\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\n \"All three programmes maintain public product registries — the registry listing outranks any certificate PDF or logo on a spec sheet.\",\n \"These are product-model-level credentials; a brand-wide 'we make ENERGY STAR products' statement does not cover a specific SKU.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"draft\",\n },\n {\n claimFamilyId: \"has_corporate_esg_assessment\",\n canonicalName: \"Has Corporate ESG Assessment or Disclosure\",\n aliases: [\"EcoVadis Rating\", \"EcoVadis Medal\", \"Science Based Targets\", \"Science-Based Targets\", \"Carbon Disclosure Project\", \"CDP A List\", \"Global Reporting Initiative\", \"GRESB Assessment\", \"CO2 Performance Ladder\", \"corporate ESG rating\", \"supplier sustainability rating\", \"corporate sustainability disclosure\"],\n claimKind: \"organizational_commitment\",\n impactAreas: [\"climate_health\", \"social_health_equity\"],\n definition:\n \"The company behind the product participates in an organization-level ESG rating, validation, verification, or disclosure programme. The evidence strength varies sharply by programme: EcoVadis, CDP, and GRESB issue scores or grades; SBTi is a binary validation that climate targets meet its criteria; ISO 14064 and the CO2 Performance Ladder involve third-party verification or certification; GRI is a reporting format with no score or verification at all. None of these is evidence about a specific product or material.\",\n sourceRequirements: [\n { sourceTypeId: \"ecovadis_rating\", requiredFields: [\"overall_score\", \"medal_level\", \"assessment_date\", \"rated_entity_scope\"], minimumSourceAuthority: \"programme_operator\", caveats: [\"Scorecards expire after 12 months.\", \"Confirm the rated legal entity matches the manufacturer.\"] },\n { sourceTypeId: \"sbti_target_validation\", requiredFields: [\"company_name\", \"target_type\", \"target_year\", \"validation_status\"], minimumSourceAuthority: \"official_registry\", caveats: [\"Validation covers targets, not achieved reductions.\", \"Distinguish 'committed' from 'targets set' — only validated targets count.\"] },\n { sourceTypeId: \"cdp_disclosure_score\", requiredFields: [\"company_name\", \"questionnaire_theme\", \"score_grade\", \"reporting_year\"], minimumSourceAuthority: \"programme_operator\", caveats: [\"State the theme (climate, water, forests) and year — grades are theme- and year-specific.\", \"A grade rewards disclosure and management quality, not low absolute emissions.\"] },\n { sourceTypeId: \"gri_sustainability_report\", requiredFields: [\"reporting_entity\", \"reporting_period\", \"gri_standards_edition\", \"external_assurance_status\"], minimumSourceAuthority: \"manufacturer_declared\", caveats: [\"GRI is a reporting format, not a scored assessment — this is the weakest evidence tier in this family.\", \"External assurance is optional and separate; note whether the report was assured.\"] },\n { sourceTypeId: \"gresb_assessment\", requiredFields: [\"assessed_entity\", \"assessment_year\", \"gresb_score\", \"star_rating\"], minimumSourceAuthority: \"programme_operator\", caveats: [\"Scores are peer-relative and refresh annually.\", \"GRESB assesses real-estate and infrastructure portfolios — rarely relevant to a product manufacturer directly.\"] },\n { sourceTypeId: \"iso_14064_ghg_verification\", requiredFields: [\"reporting_period\", \"organizational_boundary\", \"verification_body\", \"assurance_level\"], minimumSourceAuthority: \"third_party_verified\", caveats: [\"Require the ISO 14064-3 verification statement — a 14064-1 inventory alone is self-prepared.\", \"Verification covers the stated period and boundary only.\"] },\n { sourceTypeId: \"co2_performance_ladder_certificate\", requiredFields: [\"ladder_level\", \"certificate_number\", \"certification_body\", \"valid_until\"], minimumSourceAuthority: \"third_party_verified\", caveats: [\"State the level (1–5) — only levels 4–5 address the value chain.\", \"Primarily a Dutch/Belgian procurement scheme; check certificate currency.\"] },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"aia-materials-pledge\", ruleVersionId: \"amp-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\n \"Evidence strength within this family is deliberately uneven: scored ratings (EcoVadis, CDP, GRESB) > binary validation (SBTi) > verified inventory or certified scheme (ISO 14064, CO2 Performance Ladder) >> unscored reporting format (GRI). Never present these as interchangeable.\",\n \"All of these attach to a company or portfolio, never to a product — a corporate badge is context, not material evidence.\",\n ],\n greenwashingRisk: \"high\",\n reviewStatus: \"draft\",\n },\n {\n claimFamilyId: \"has_iso_50001_certification\",\n canonicalName: \"Has ISO 50001 Certification\",\n aliases: [\"ISO 50001\", \"ISO 50001 certified\", \"certified energy management\"],\n claimKind: \"organizational_commitment\",\n impactAreas: [\"climate_health\"],\n definition:\n \"The manufacturer holds third-party certification that it operates an energy management system conforming to ISO 50001 at the certified sites. This is evidence of organizational process discipline around energy — not evidence that energy use is low or that products are efficient.\",\n sourceRequirements: [\n { sourceTypeId: \"energy_management_certificate\", requiredFields: [\"certificate_number\", \"certification_body\", \"certified_sites_scope\", \"valid_until\"], minimumSourceAuthority: \"third_party_verified\", caveats: [\"Confirm the certified sites include where the product is actually made.\", \"Check certificate validity and the certification body's accreditation.\"] },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\n \"Like ISO 14001, this certifies a management process, not an outcome — treat it as organizational context, never as product evidence.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"draft\",\n },\n {\n claimFamilyId: \"has_iso_45001_certification\",\n canonicalName: \"Has ISO 45001 Certification\",\n aliases: [\"ISO 45001\", \"ISO 45001 certified\", \"certified health and safety management\"],\n claimKind: \"organizational_commitment\",\n impactAreas: [\"social_health_equity\"],\n definition:\n \"The manufacturer holds third-party certification that it operates an occupational health and safety management system conforming to ISO 45001 at the certified sites. Evidence about worker-safety process discipline — not an environmental credential and not a social-accountability audit.\",\n sourceRequirements: [\n { sourceTypeId: \"occupational_health_safety_management_certificate\", requiredFields: [\"certificate_number\", \"certification_body\", \"certified_sites_scope\", \"valid_until\"], minimumSourceAuthority: \"third_party_verified\", caveats: [\"Confirm the certified sites include where the product is actually made.\", \"OHSAS 18001 certificates are outdated — the standard was withdrawn in 2021.\"] },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\n \"Frequently mislisted as an environmental certification — it is not; keep it strictly in the worker-safety lane.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"draft\",\n },\n {\n claimFamilyId: \"has_verified_fair_labor_certification\",\n canonicalName: \"Has Verified Fair Labour Certification\",\n aliases: [\n \"Fairtrade Certified\",\n \"Fairtrade Cotton Mark\",\n \"Fairtrade Textile Standard\",\n \"GoodWeave Certified\",\n \"GoodWeave Label\",\n \"WFTO Guaranteed Fair Trade\",\n \"Guaranteed Fair Trade Enterprise\",\n \"Fair Stone Certified\",\n \"Fair Stone Partner\",\n \"XertifiX Label\",\n \"XertifiX PLUS Label\",\n ],\n claimKind: \"certification\",\n impactAreas: [\"social_health_equity\"],\n definition:\n \"A named fair-trade or fair-labour programme has verified labour standards in the product's supply chain — through independent audits (Fairtrade, GoodWeave, XertifiX) or structured programme verification (WFTO, Fair Stone). Distinct from 'Claims Fair Labour Practices', which covers unverified marketing language: this family requires a scheme-specific certificate, and each scheme proves a different, specific scope — audited trade and labour terms (Fairtrade), child/forced-labour-free production (GoodWeave), enterprise-level fair trade practice (WFTO), or labour conditions in stone supply chains (Fair Stone, XertifiX). None of these proves any environmental attribute.\",\n sourceRequirements: [\n { sourceTypeId: \"fairtrade_certificate\", requiredFields: [\"certificate_id\", \"certified_entity\", \"standard_scope\", \"product_scope\", \"valid_until\"], minimumSourceAuthority: \"third_party_verified\", caveats: [\"Identify the issuing scheme (Fairtrade International vs Fair Trade USA) and whether certification covers an ingredient or the finished product.\"] },\n { sourceTypeId: \"goodweave_certificate\", requiredFields: [\"label_number\", \"licensed_entity\", \"product_scope\", \"valid_until\"], minimumSourceAuthority: \"third_party_verified\", caveats: [\"GoodWeave verifies absence of child, forced, and bonded labour only — it does not evidence fair-trade pricing or broader wage standards.\"] },\n { sourceTypeId: \"wfto_guaranteed_fair_trade\", requiredFields: [\"organization_name\", \"wfto_member_id\", \"guarantee_status\", \"last_monitoring_audit\"], minimumSourceAuthority: \"programme_operator\", caveats: [\"Organization-level verification only — it does not certify individual products, and the Guarantee System blends self-assessment and peer review with audits.\"] },\n { sourceTypeId: \"fair_stone_certificate\", requiredFields: [\"partner_id\", \"implementation_status\", \"supply_chain_scope\", \"valid_until\"], minimumSourceAuthority: \"programme_operator\", caveats: [\"Staged implementation model — confirm audit status and the exact quarries/factories in scope before treating the chain as verified.\"] },\n { sourceTypeId: \"xertifix_certificate\", requiredFields: [\"certificate_number\", \"label_level\", \"site_scope\", \"valid_until\"], minimumSourceAuthority: \"third_party_verified\", caveats: [\"Scope limited to audited Asian quarries and factories; distinguish standard XertifiX from stricter XertifiX PLUS.\"] },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n { frameworkId: \"aia-materials-pledge\", ruleVersionId: \"amp-current\", relationship: \"may_support\" },\n { frameworkId: \"living-building-challenge\", ruleVersionId: \"lbc-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\n \"Fairtrade, GoodWeave, and XertifiX rest on independent (often unannounced) audits and warrant third_party_verified.\",\n \"WFTO and Fair Stone use programme-run assurance models mixing self-assessment, peer review, or staged implementation with audits — capped at programme_operator.\",\n \"Generic 'fair trade' or 'ethically made' language with no named scheme belongs to claims_fair_labor_practices, not here.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"draft\",\n },\n {\n claimFamilyId: \"has_healthcare_sector_approval\",\n canonicalName: \"Has Healthcare Sector Approval\",\n aliases: [\"Greenhealth Approved\", \"Practice Greenhealth Approved\", \"Healthier Hospitals Compliant\", \"Healthier Hospitals Initiative\"],\n claimKind: \"certification\",\n impactAreas: [\"human_health\"],\n definition:\n \"A healthcare-sector programme (Practice Greenhealth's Greenhealth Approved seal, with criteria aligned to Healthier Hospitals goals) has approved the product against its category criteria — primarily avoidance of chemicals of concern in healthcare settings. Approval rests on programme review of manufacturer documentation, not independent laboratory testing, and makes no claim about environmental footprint or clinical performance.\",\n sourceRequirements: [\n { sourceTypeId: \"greenhealth_approved_certificate\", requiredFields: [\"seal_license_id\", \"certified_entity\", \"product_scope\", \"criteria_category\", \"valid_until\"], minimumSourceAuthority: \"programme_operator\", caveats: [\"Programme desk review of manufacturer documentation — not independent lab testing; verify the licensed seal rather than self-declared 'Healthier Hospitals compliant' language.\"] },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\n \"Greenhealth Approved is programme-operator assurance: Practice Greenhealth reviews manufacturer attestations rather than commissioning independent testing.\",\n \"Bare 'Healthier Hospitals compliant' claims without a seal licence are frequently self-declared and should be treated as manufacturer_declared at best.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"draft\",\n },\n {\n claimFamilyId: \"has_diverse_supplier_certification\",\n canonicalName: \"Has Diverse Supplier Certification\",\n aliases: [\n \"Minority Business Enterprise\",\n \"Woman-Owned Business Enterprise\",\n \"Women's Business Enterprise\",\n \"Minority and Women-Owned Business Enterprise\",\n \"Small Business Enterprise\",\n \"Service-Disabled Veteran-Owned Business\",\n \"Woman-Owned Small Business\",\n \"Veteran-Owned Small Business\",\n \"LGBT Business Enterprise\",\n \"Disability-Owned Business Enterprise\",\n \"Diverse Supplier\",\n \"Supplier Diversity Certification\",\n ],\n claimKind: \"certification\",\n impactAreas: [\"social_health_equity\"],\n definition:\n \"The manufacturer or supplier holds a company-ownership designation — certified or registered as majority-owned and controlled by minority, woman, veteran, service-disabled veteran, LGBTQ+, or disabled owners, or as a qualifying small business. This is a company-level equity credential (in scope under mindful MATERIALS' Social Health & Equity); it proves business ownership demographics only, never any product sustainability attribute, and assurance rigor varies sharply by program — from nationally third-party-audited certifiers (NMSDC, WBENC, NGLCC, Disability:IN, WEConnect) to self-attested registries.\",\n sourceRequirements: [\n { sourceTypeId: \"diverse_supplier_certification\", requiredFields: [\"certifying_body\", \"designation_type\", \"certificate_or_registration_id\", \"certified_entity\", \"valid_until\"], minimumSourceAuthority: \"manufacturer_declared\", caveats: [\"Rigor varies by program — some are nationally third-party audited (NMSDC, WBENC), others self-attested registries; verify against the named certifying body's registry.\"] },\n ],\n frameworkMappings: [\n { frameworkId: \"mindful-materials-cmf\", ruleVersionId: \"cmf-current\", relationship: \"may_support\" },\n ],\n sourceAuthorityNotes: [\n \"minimumSourceAuthority is deliberately set to manufacturer_declared — the weakest program in the combined scope is a self-attested registry, and the family must not overstate the floor.\",\n \"When the certifying body is a national third-party certifier (NMSDC, WBENC, NGLCC, Disability:IN, WEConnect), the individual document may be treated as third_party_verified — but only after checking that body's registry.\",\n \"The designation attaches to a specific legal entity and expires; annual recertification is typical.\",\n ],\n greenwashingRisk: \"medium\",\n reviewStatus: \"draft\",\n },\n];\n","import type { Framework } from \"../canon.ts\";\n\n// Extended programme corpus. Authored from domain expertise; entries are\n// reviewStatus \"draft\" until verified against current programme documentation.\n\nexport const extendedFrameworks: readonly Framework[] = [\n {\n frameworkId: \"breeam\",\n sources: [\n { label: \"BRE — BREEAM\", url: \"https://breeam.com\" },\n ],\n canonicalName: \"BREEAM\",\n aliases: [\"BREEAM\", \"Building Research Establishment Environmental Assessment Method\"],\n operatorName: \"BRE (Building Research Establishment)\",\n category: \"building_rating\",\n region: \"Global (UK origin)\",\n plainLanguageSummary:\n \"The world's longest-running building rating system, dominant in the UK and Europe. Like LEED, projects earn credits across categories; material credits reward EPDs, responsible sourcing, and low-emission products.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"breeam-current\",\n label: \"BREEAM UK New Construction V7 / International reference\",\n status: \"reviewed\",\n notes: [\n \"V7 (July 2025) is the largest update in a decade — whole-life carbon, stricter minimums, proven performance over design intent.\",\n \"Material credits (Mat) and health credits (Hea) are scheme- and version-specific.\",\n ],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\n \"Products are not 'BREEAM certified'; they can contribute evidence toward project credits.\",\n ],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"well\",\n sources: [\n { label: \"IWBI — WELL v2\", url: \"https://www.wellcertified.com\" },\n ],\n canonicalName: \"WELL Building Standard\",\n aliases: [\"WELL\", \"WELL v2\", \"WELL Building Standard\"],\n operatorName: \"International WELL Building Institute\",\n category: \"health_wellbeing\",\n region: \"Global\",\n plainLanguageSummary:\n \"A rating system focused entirely on human health in buildings — air, water, light, materials, and mind. Material restrictions and low-emission products help projects meet WELL features.\",\n impactAreas: [\"human_health\", \"social_health_equity\"],\n ruleVersions: [\n {\n id: \"well-v2\",\n label: \"WELL v2 materials concept reference\",\n status: \"reviewed\",\n notes: [\"The X (Materials) concept restricts ingredients and rewards verified low-emission products.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"WELL certifies spaces and buildings, not products.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"fitwel\",\n sources: [\n { label: \"Center for Active Design — Fitwel\", url: \"https://www.fitwel.org\" },\n ],\n canonicalName: \"Fitwel\",\n aliases: [\"Fitwel\"],\n operatorName: \"Center for Active Design\",\n category: \"health_wellbeing\",\n region: \"Global (US origin)\",\n plainLanguageSummary:\n \"A health-focused certification born at the US CDC, using points-based scorecards grounded in public health research. Lighter-touch than WELL; product choices play a smaller, indirect role.\",\n impactAreas: [\"human_health\", \"social_health_equity\"],\n ruleVersions: [\n {\n id: \"fitwel-v3\",\n label: \"Fitwel v3 reference\",\n status: \"reviewed\",\n notes: [\"Strategies are evidence-based; few map directly to single products.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Fitwel scores buildings and sites; product contribution is indirect.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"green-star\",\n sources: [\n { label: \"GBCA — Green Star\", url: \"https://www.gbca.org.au\" },\n ],\n canonicalName: \"Green Star\",\n aliases: [\"Green Star\", \"Green Star Buildings\"],\n operatorName: \"Green Building Council of Australia\",\n category: \"building_rating\",\n region: \"Australia & NZ\",\n plainLanguageSummary:\n \"Australia's main green building rating system. Its Responsible Products framework scores product certifications and disclosures, so recognised labels carry defined credit value.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\", \"circular_economy\"],\n ruleVersions: [\n {\n id: \"green-star-current\",\n label: \"Green Star Buildings / Responsible Products reference\",\n status: \"reviewed\",\n notes: [\"The Responsible Products Calculator assigns values to recognised initiatives.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Recognition of a label under Green Star is version-specific — check the current calculator.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"dgnb\",\n sources: [\n { label: \"DGNB\", url: \"https://www.dgnb.de/en\" },\n ],\n canonicalName: \"DGNB\",\n aliases: [\"DGNB\", \"German Sustainable Building Council certification\"],\n operatorName: \"German Sustainable Building Council (DGNB)\",\n category: \"building_rating\",\n region: \"Germany & Europe\",\n plainLanguageSummary:\n \"Germany's leading certification, known for rigorous life-cycle assessment. Building-level LCA is central, which makes product EPDs especially valuable on DGNB projects.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\", \"circular_economy\"],\n ruleVersions: [\n {\n id: \"dgnb-current\",\n label: \"DGNB New Buildings reference\",\n status: \"reviewed\",\n notes: [\"ENV criteria rely on building LCA fed by product-level data.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"DGNB evaluates whole-building performance; single products contribute via the building LCA.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"hqe\",\n sources: [\n { label: \"Alliance HQE-GBC\", url: \"https://www.hqegbc.org\" },\n ],\n canonicalName: \"HQE\",\n aliases: [\"HQE\", \"Haute Qualité Environnementale\"],\n operatorName: \"Alliance HQE-GBC (certified by Certivéa / Cerway)\",\n category: \"building_rating\",\n region: \"France & international\",\n plainLanguageSummary:\n \"France's main environmental building certification, covering energy, health, and comfort. French projects also lean on FDES (French EPDs) for material data.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"hqe-current\",\n label: \"HQE reference\",\n status: \"reviewed\",\n notes: [\"FDES declarations in the INIES database are the standard French product data source.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"HQE certifies buildings; product data feeds assessments via FDES/EPDs.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"casbee\",\n sources: [\n { label: \"IBECs — CASBEE\", url: \"https://www.ibecs.or.jp\" },\n ],\n canonicalName: \"CASBEE\",\n aliases: [\"CASBEE\", \"Comprehensive Assessment System for Built Environment Efficiency\"],\n operatorName: \"Institute for Built Environment and Carbon Neutral for SDGs (IBECs), Japan\",\n category: \"building_rating\",\n region: \"Japan\",\n plainLanguageSummary:\n \"Japan's national building assessment system, scoring environmental quality against environmental load. Used mainly in Japan; product-level evidence plays a supporting role.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"casbee-current\",\n label: \"CASBEE for Building reference\",\n status: \"reviewed\",\n notes: [\"Assessment tools vary by building scale and lifecycle stage.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Primarily used within Japan; mappings to product claims are indicative.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"beam-plus\",\n sources: [\n { label: \"BEAM Society\", url: \"https://www.beamsociety.org.hk\" },\n ],\n canonicalName: \"BEAM Plus\",\n aliases: [\"BEAM Plus\", \"BEAM\"],\n operatorName: \"Hong Kong Green Building Council\",\n category: \"building_rating\",\n region: \"Hong Kong\",\n plainLanguageSummary:\n \"Hong Kong's green building rating system, covering energy, materials, indoor environment, and waste across dense urban projects.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"beam-plus-current\",\n label: \"BEAM Plus New Buildings reference\",\n status: \"reviewed\",\n notes: [\"Materials and waste aspects reward recycled content and responsible sourcing.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Regional system; check current version for recognised product evidence.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"green-mark\",\n sources: [\n { label: \"BCA — Green Mark\", url: \"https://www.bca.gov.sg\" },\n ],\n canonicalName: \"Green Mark\",\n aliases: [\"Green Mark\", \"BCA Green Mark\"],\n operatorName: \"Building and Construction Authority, Singapore\",\n category: \"building_rating\",\n region: \"Singapore & Southeast Asia\",\n plainLanguageSummary:\n \"Singapore's green building scheme with strong government backing — widely required for new buildings there. Rewards certified green products through the Singapore Green Building Product scheme.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"green-mark-current\",\n label: \"Green Mark 2021 reference\",\n status: \"reviewed\",\n notes: [\"SGBP-certified products carry defined value under Green Mark.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Product recognition typically routes through the SGBP certification scheme.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"edge\",\n sources: [\n { label: \"IFC — EDGE\", url: \"https://edgebuildings.com\" },\n ],\n canonicalName: \"EDGE\",\n aliases: [\"EDGE\", \"Excellence in Design for Greater Efficiencies\"],\n operatorName: \"IFC (World Bank Group)\",\n category: \"building_rating\",\n region: \"Global (emerging markets focus)\",\n plainLanguageSummary:\n \"A streamlined certification from the World Bank's IFC, focused on measurable reductions in energy, water, and embodied carbon in materials. Popular in emerging markets for its simplicity.\",\n impactAreas: [\"climate_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"edge-current\",\n label: \"EDGE v3 reference\",\n status: \"reviewed\",\n notes: [\"Materials are assessed by embodied energy/carbon of assemblies, not by label.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"EDGE quantifies efficiency; most product labels have no direct EDGE value.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"estidama-pearl\",\n sources: [\n { label: \"Abu Dhabi DMT — Estidama\", url: \"https://www.dmt.gov.ae\" },\n ],\n canonicalName: \"Estidama Pearl Rating System\",\n aliases: [\"Estidama\", \"Pearl Rating System\", \"PBRS\"],\n operatorName: \"Abu Dhabi Department of Municipalities and Transport\",\n category: \"building_rating\",\n region: \"Middle East (Abu Dhabi)\",\n plainLanguageSummary:\n \"Abu Dhabi's mandatory sustainability rating system, with strong emphasis on water — a scarce resource in the Gulf — alongside energy and material credits.\",\n impactAreas: [\"climate_health\", \"ecosystem_health\", \"human_health\"],\n ruleVersions: [\n {\n id: \"pearl-current\",\n label: \"Pearl Building Rating System reference\",\n status: \"reviewed\",\n notes: [\"Mandatory minimum Pearl levels apply to Abu Dhabi projects.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Regional mandates change; verify current Estidama requirements.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"gsas\",\n sources: [\n { label: \"GORD — GSAS\", url: \"https://www.gord.qa\" },\n ],\n canonicalName: \"GSAS\",\n aliases: [\"GSAS\", \"Global Sustainability Assessment System\"],\n operatorName: \"GORD (Gulf Organisation for Research & Development)\",\n category: \"building_rating\",\n region: \"Middle East (Qatar origin)\",\n plainLanguageSummary:\n \"The Gulf region's homegrown rating system, developed in Qatar and used across the MENA region, adapted to hot-climate priorities.\",\n impactAreas: [\"climate_health\", \"ecosystem_health\", \"human_health\"],\n ruleVersions: [\n {\n id: \"gsas-current\",\n label: \"GSAS Design & Build reference\",\n status: \"reviewed\",\n notes: [\"Materials criteria reward regional sourcing and recycled content.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Check scheme and typology — GSAS has many variants.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"nabers\",\n sources: [\n { label: \"NABERS\", url: \"https://www.nabers.gov.au\" },\n ],\n canonicalName: \"NABERS\",\n aliases: [\"NABERS\", \"National Australian Built Environment Rating System\"],\n operatorName: \"NSW Government (Australia)\",\n category: \"energy_carbon\",\n region: \"Australia & NZ (expanding to UK)\",\n plainLanguageSummary:\n \"Rates the measured operational performance of existing buildings — energy, water, waste, indoor environment — rather than design intent. Star ratings are based on real utility data.\",\n impactAreas: [\"climate_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"nabers-current\",\n label: \"NABERS Energy reference\",\n status: \"reviewed\",\n notes: [\"Ratings reflect 12 months of measured performance.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Product choices affect NABERS only through measured operational outcomes.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"passive-house\",\n sources: [\n { label: \"Passive House Institute\", url: \"https://passivehouse.com\" },\n ],\n canonicalName: \"Passive House\",\n aliases: [\"Passive House\", \"Passivhaus\", \"PHI\"],\n operatorName: \"Passive House Institute (PHI)\",\n category: \"energy_carbon\",\n region: \"Global (German origin)\",\n plainLanguageSummary:\n \"A rigorous energy performance standard built on insulation, airtightness, and heat recovery. Unusually, PHI certifies building components — windows, doors, ventilation units — directly.\",\n impactAreas: [\"climate_health\"],\n ruleVersions: [\n {\n id: \"phi-current\",\n label: \"PHI criteria reference\",\n status: \"reviewed\",\n notes: [\"'Passive House Certified Component' is a genuine product-level certification.\"],\n },\n ],\n sourceAuthorityTier: \"programme_operator\",\n caveats: [\"A component certificate covers thermal performance only, not chemistry or carbon.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"phius\",\n sources: [\n { label: \"PHIUS\", url: \"https://www.phius.org\" },\n ],\n canonicalName: \"PHIUS\",\n aliases: [\"PHIUS\", \"Passive House Institute US\"],\n operatorName: \"PHIUS (Passive House Institute US)\",\n category: \"energy_carbon\",\n region: \"North America\",\n plainLanguageSummary:\n \"The North American passive building standard, with climate-zone-specific targets. Separate from the German PHI programme; the two certify against different criteria.\",\n impactAreas: [\"climate_health\"],\n ruleVersions: [\n {\n id: \"phius-current\",\n label: \"PHIUS CORE / ZERO reference\",\n status: \"reviewed\",\n notes: [\"Targets are tuned per North American climate zone.\"],\n },\n ],\n sourceAuthorityTier: \"programme_operator\",\n caveats: [\"Do not conflate PHIUS and PHI certification claims.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"ilfi-zero-carbon\",\n sources: [\n { label: \"ILFI — Zero Carbon\", url: \"https://living-future.org/zero-carbon-certification/\" },\n ],\n canonicalName: \"Zero Carbon Certification\",\n aliases: [\"Zero Carbon\", \"ILFI Zero Carbon\"],\n operatorName: \"International Living Future Institute\",\n category: \"energy_carbon\",\n region: \"Global\",\n plainLanguageSummary:\n \"Certifies buildings that achieve verified zero operational and embodied carbon, including offsets for what can't be eliminated. Embodied-carbon data from products matters directly here.\",\n impactAreas: [\"climate_health\"],\n ruleVersions: [\n {\n id: \"zc-current\",\n label: \"ILFI Zero Carbon reference\",\n status: \"reviewed\",\n notes: [\"Embodied carbon reductions must be demonstrated against a baseline.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Building-level certification; product EPDs feed the embodied-carbon accounting.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"sites\",\n sources: [\n { label: \"GBCI — SITES\", url: \"https://sustainablesites.org\" },\n ],\n canonicalName: \"SITES\",\n aliases: [\"SITES\", \"Sustainable SITES Initiative\"],\n operatorName: \"Green Business Certification Inc. (GBCI)\",\n category: \"landscape\",\n region: \"Global (US origin)\",\n plainLanguageSummary:\n \"The landscape equivalent of LEED — certifies sustainable outdoor spaces, from soils and vegetation to materials and human wellbeing.\",\n impactAreas: [\"ecosystem_health\", \"climate_health\", \"human_health\"],\n ruleVersions: [\n {\n id: \"sites-v2\",\n label: \"SITES v2 reference\",\n status: \"reviewed\",\n notes: [\"Materials credits parallel LEED's, applied to landscape products.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Applies to sites and landscapes; interior products are out of scope.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"true-zero-waste\",\n sources: [\n { label: \"GBCI — TRUE\", url: \"https://true.gbci.org\" },\n ],\n canonicalName: \"TRUE Zero Waste\",\n aliases: [\"TRUE\", \"TRUE Zero Waste certification\"],\n operatorName: \"Green Business Certification Inc. (GBCI)\",\n category: \"waste\",\n region: \"Global\",\n plainLanguageSummary:\n \"Certifies facilities that divert at least 90% of waste from landfill and incineration. When a manufacturer claims 'zero waste to landfill', TRUE is the certification to ask about.\",\n impactAreas: [\"circular_economy\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"true-current\",\n label: \"TRUE reference\",\n status: \"reviewed\",\n notes: [\"Certifies facilities (e.g. factories), not products.\"],\n },\n ],\n sourceAuthorityTier: \"programme_operator\",\n caveats: [\"A TRUE-certified factory says nothing about the product's own recyclability.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"aia-materials-pledge\",\n sources: [\n { label: \"AIA — Materials Pledge\", url: \"https://www.aia.org\" },\n ],\n canonicalName: \"AIA Materials Pledge\",\n aliases: [\"AIA Materials Pledge\", \"Architecture & Design Materials Pledge\"],\n operatorName: \"American Institute of Architects\",\n category: \"commitment\",\n region: \"North America\",\n plainLanguageSummary:\n \"A commitment framework for architecture firms to prioritise human health, social equity, ecosystem health, climate health, and circularity in material selection — the same five lenses as the CMF.\",\n impactAreas: [\n \"human_health\",\n \"social_health_equity\",\n \"ecosystem_health\",\n \"climate_health\",\n \"circular_economy\",\n ],\n ruleVersions: [\n {\n id: \"amp-current\",\n label: \"Materials Pledge reference\",\n status: \"reviewed\",\n notes: [\"A firm-level commitment, not a project or product certification.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Signing the pledge commits a practice to intent, not to verified outcomes.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"green-globes\",\n sources: [\n { label: \"GBI — Green Globes\", url: \"https://www.greenglobes.com\" },\n ],\n canonicalName: \"Green Globes\",\n aliases: [\"Green Globes\", \"GBI Green Globes\"],\n operatorName: \"Green Building Initiative\",\n category: \"building_rating\",\n region: \"North America\",\n plainLanguageSummary:\n \"A North American alternative to LEED with a questionnaire-driven, assessor-supported process — often chosen for its lower cost and faster pathway.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"green-globes-current\",\n label: \"Green Globes NC reference\",\n status: \"reviewed\",\n notes: [\"Materials criteria recognise EPDs and third-party product certifications.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Credit recognition differs from LEED despite surface similarity — check the current technical reference.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"reset\",\n sources: [\n { label: \"GIGA — RESET\", url: \"https://www.reset.build\" },\n ],\n canonicalName: \"RESET\",\n aliases: [\"RESET\", \"RESET Air\", \"RESET Materials\"],\n operatorName: \"GIGA\",\n category: \"health_wellbeing\",\n region: \"Global (China origin)\",\n plainLanguageSummary:\n \"A data-driven standard built on continuous monitoring rather than design review — RESET Air certifies real measured indoor air quality, and RESET Materials tracks product health data.\",\n impactAreas: [\"human_health\"],\n ruleVersions: [\n {\n id: \"reset-current\",\n label: \"RESET Air / Materials reference\",\n status: \"reviewed\",\n notes: [\"Certification depends on continuously reported sensor data, not a one-time audit.\"],\n },\n ],\n sourceAuthorityTier: \"programme_operator\",\n caveats: [\"RESET certifies monitored performance; a RESET project says little about any single product.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"china-three-star\",\n sources: [\n { label: \"MOHURD\", url: \"https://www.mohurd.gov.cn\" },\n ],\n canonicalName: \"China Green Building Evaluation Label\",\n aliases: [\"Three Star\", \"China Three Star\", \"ASGB\", \"Green Building Evaluation Label\"],\n operatorName: \"MOHURD (China)\",\n category: \"building_rating\",\n region: \"China\",\n plainLanguageSummary:\n \"China's national green building standard, rating projects one to three stars. Government-driven and tied to national construction policy rather than voluntary market adoption.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"three-star-current\",\n label: \"GB/T 50378 reference\",\n status: \"reviewed\",\n notes: [\"Requirements are set by national standard and updated by ministry revision.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Documentation is largely in Chinese and assessment is domestic; international product evidence may need local equivalents.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"g-seed\",\n sources: [\n { label: \"G-SEED\", url: \"https://www.gseed.or.kr\" },\n ],\n canonicalName: \"G-SEED\",\n aliases: [\"G-SEED\", \"Green Standard for Energy and Environmental Design\"],\n operatorName: \"Korea Institute of Civil Engineering and Building Technology (and partner bodies)\",\n category: \"building_rating\",\n region: \"South Korea\",\n plainLanguageSummary:\n \"South Korea's national green building certification, mandatory for many public buildings, covering energy, materials, water, and indoor environment.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"g-seed-current\",\n label: \"G-SEED reference\",\n status: \"reviewed\",\n notes: [\"Korean public procurement frequently mandates minimum G-SEED grades.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Product evidence typically routes through Korean eco-label and HB-mark schemes.\"],\n reviewStatus: \"draft\",\n },\n {\n frameworkId: \"eewh\",\n sources: [\n { label: \"Taiwan Architecture & Building Center\", url: \"https://www.tabc.org.tw\" },\n ],\n canonicalName: \"EEWH\",\n aliases: [\"EEWH\", \"Ecology Energy Saving Waste Reduction Health\"],\n operatorName: \"Taiwan Architecture & Building Center\",\n category: \"building_rating\",\n region: \"Taiwan\",\n plainLanguageSummary:\n \"Taiwan's green building certification — one of the earliest national systems in Asia, organised around ecology, energy saving, waste reduction, and health.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"eewh-current\",\n label: \"EEWH reference\",\n status: \"reviewed\",\n notes: [\"Mandatory for public construction above thresholds.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Primarily domestic; check local Green Building Material label recognition.\"],\n reviewStatus: \"draft\",\n },\n {\n frameworkId: \"griha\",\n sources: [\n { label: \"GRIHA Council\", url: \"https://www.grihaindia.org\" },\n ],\n canonicalName: \"GRIHA\",\n aliases: [\"GRIHA\", \"Green Rating for Integrated Habitat Assessment\"],\n operatorName: \"GRIHA Council (TERI / Government of India)\",\n category: \"building_rating\",\n region: \"India\",\n plainLanguageSummary:\n \"India's national green building rating system, developed with TERI and endorsed by the government, tuned to Indian climate and construction practice.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\", \"social_health_equity\"],\n ruleVersions: [\n {\n id: \"griha-current\",\n label: \"GRIHA current version reference\",\n status: \"reviewed\",\n notes: [\"Criteria emphasise passive design and regional materials.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"GRIHA and IGBC are separate, competing Indian systems — do not conflate them.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"igbc\",\n sources: [\n { label: \"Indian Green Building Council\", url: \"https://igbc.in\" },\n ],\n canonicalName: \"IGBC Green Building Rating\",\n aliases: [\"IGBC\", \"Indian Green Building Council rating\"],\n operatorName: \"Indian Green Building Council (CII)\",\n category: \"building_rating\",\n region: \"India\",\n plainLanguageSummary:\n \"The Indian Green Building Council's family of rating systems — the most widely used voluntary certification in the Indian market, historically aligned with LEED concepts.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"igbc-current\",\n label: \"IGBC Green New Buildings reference\",\n status: \"reviewed\",\n notes: [\"Multiple typology-specific schemes exist; check the applicable one.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"GRIHA and IGBC are separate, competing Indian systems — do not conflate them.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"gbi-malaysia\",\n sources: [\n { label: \"Green Building Index\", url: \"https://www.greenbuildingindex.org\" },\n ],\n canonicalName: \"Green Building Index\",\n aliases: [\"GBI\", \"Green Building Index Malaysia\"],\n operatorName: \"GBI Sdn Bhd (PAM / ACEM, Malaysia)\",\n category: \"building_rating\",\n region: \"Malaysia\",\n plainLanguageSummary:\n \"Malaysia's industry-led green building rating tool, developed by the architecture and engineering professions for the Malaysian tropical climate.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"gbi-current\",\n label: \"GBI reference\",\n status: \"reviewed\",\n notes: [\"Tropical-climate criteria differ materially from temperate-origin systems.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Regional system; international labels may need local assessor acceptance.\"],\n reviewStatus: \"draft\",\n },\n {\n frameworkId: \"greenship\",\n sources: [\n { label: \"GBC Indonesia\", url: \"https://gbcindonesia.org\" },\n ],\n canonicalName: \"GREENSHIP\",\n aliases: [\"GREENSHIP\", \"Greenship Indonesia\"],\n operatorName: \"Green Building Council Indonesia\",\n category: \"building_rating\",\n region: \"Indonesia\",\n plainLanguageSummary:\n \"Indonesia's green building rating system, run by the national green building council and applied across new buildings, interiors, and existing buildings.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"greenship-current\",\n label: \"GREENSHIP reference\",\n status: \"reviewed\",\n notes: [\"Includes an interior-space scheme relevant to fit-out work.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Check Jakarta's separate mandatory green building regulation for code overlap.\"],\n reviewStatus: \"draft\",\n },\n {\n frameworkId: \"lotus\",\n sources: [\n { label: \"Vietnam Green Building Council\", url: \"https://vgbc.vn\" },\n ],\n canonicalName: \"LOTUS\",\n aliases: [\"LOTUS\", \"LOTUS Vietnam\"],\n operatorName: \"Vietnam Green Building Council\",\n category: \"building_rating\",\n region: \"Vietnam\",\n plainLanguageSummary:\n \"Vietnam's green building rating system, adapted to local construction practice and climate by the Vietnam Green Building Council.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"lotus-current\",\n label: \"LOTUS reference\",\n status: \"reviewed\",\n notes: [\"Smaller certified stock; assessors commonly accept international product evidence.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Regional system with evolving criteria; confirm the current version.\"],\n reviewStatus: \"draft\",\n },\n {\n frameworkId: \"berde\",\n sources: [\n { label: \"Philippine Green Building Council\", url: \"https://philgbc.org\" },\n ],\n canonicalName: \"BERDE\",\n aliases: [\"BERDE\", \"Building for Ecologically Responsive Design Excellence\"],\n operatorName: \"Philippine Green Building Council\",\n category: \"building_rating\",\n region: \"Philippines\",\n plainLanguageSummary:\n \"The Philippines' national voluntary green building rating system, recognised by government as the benchmark above the national Green Building Code.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"berde-current\",\n label: \"BERDE GBRS reference\",\n status: \"reviewed\",\n notes: [\"Sits above the mandatory Philippine Green Building Code.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Regional system; check current scheme documents for product evidence rules.\"],\n reviewStatus: \"draft\",\n },\n {\n frameworkId: \"green-star-sa\",\n sources: [\n { label: \"GBCSA — Green Star SA\", url: \"https://gbcsa.org.za\" },\n ],\n canonicalName: \"Green Star SA\",\n aliases: [\"Green Star SA\", \"Green Star South Africa\"],\n operatorName: \"Green Building Council South Africa\",\n category: \"building_rating\",\n region: \"South Africa\",\n plainLanguageSummary:\n \"South Africa's adaptation of Australia's Green Star, run by the GBCSA and the dominant certification across Sub-Saharan African commercial projects.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"gs-sa-current\",\n label: \"Green Star SA reference\",\n status: \"reviewed\",\n notes: [\"Derived from GBCA Green Star but independently maintained.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Not interchangeable with Australian Green Star credits despite the shared name.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"miljobyggnad\",\n sources: [\n { label: \"Sweden Green Building Council\", url: \"https://www.sgbc.se\" },\n ],\n canonicalName: \"Miljöbyggnad\",\n aliases: [\"Miljöbyggnad\", \"Miljobyggnad\"],\n operatorName: \"Sweden Green Building Council\",\n category: \"building_rating\",\n region: \"Sweden\",\n plainLanguageSummary:\n \"Sweden's most used building certification, with a strong materials-logging culture — Swedish projects routinely demand full product content documentation via systems like Byggvarubedömningen.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"miljobyggnad-current\",\n label: \"Miljöbyggnad 4.0 reference\",\n status: \"reviewed\",\n notes: [\"Material assessments commonly reference Swedish databases (BVB, SundaHus).\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Swedish material-database listings are often a de facto requirement beyond the certification itself.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"minergie\",\n sources: [\n { label: \"Minergie\", url: \"https://www.minergie.ch\" },\n ],\n canonicalName: \"Minergie\",\n aliases: [\"Minergie\", \"Minergie-P\", \"Minergie-ECO\"],\n operatorName: \"Minergie Association (Switzerland)\",\n category: \"energy_carbon\",\n region: \"Switzerland\",\n plainLanguageSummary:\n \"Switzerland's building energy standard with broad market recognition. The ECO variant adds health and ecology criteria, including low-emission materials.\",\n impactAreas: [\"climate_health\", \"human_health\"],\n ruleVersions: [\n {\n id: \"minergie-current\",\n label: \"Minergie / Minergie-ECO reference\",\n status: \"reviewed\",\n notes: [\"Only the ECO variant carries material health requirements.\"],\n },\n ],\n sourceAuthorityTier: \"programme_operator\",\n caveats: [\"Plain Minergie is an energy standard; material claims relate to Minergie-ECO.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"bels\",\n sources: [\n { label: \"MLIT (Japan)\", url: \"https://www.mlit.go.jp\" },\n ],\n canonicalName: \"BELS\",\n aliases: [\"BELS\", \"Building-Housing Energy-efficiency Labeling System\"],\n operatorName: \"Japan (MLIT-designated assessment bodies)\",\n category: \"energy_carbon\",\n region: \"Japan\",\n plainLanguageSummary:\n \"Japan's building energy-efficiency labelling system, rating buildings by calculated energy performance on a star scale.\",\n impactAreas: [\"climate_health\"],\n ruleVersions: [\n {\n id: \"bels-current\",\n label: \"BELS reference\",\n status: \"reviewed\",\n notes: [\"An energy label, not a holistic sustainability rating.\"],\n },\n ],\n sourceAuthorityTier: \"programme_operator\",\n caveats: [\"Energy-only; says nothing about materials or health.\"],\n reviewStatus: \"draft\",\n },\n {\n frameworkId: \"aqua-hqe\",\n sources: [\n { label: \"Fundação Vanzolini\", url: \"https://vanzolini.org.br\" },\n ],\n canonicalName: \"AQUA-HQE\",\n aliases: [\"AQUA\", \"AQUA-HQE\"],\n operatorName: \"Fundação Vanzolini (Brazil), with Cerway\",\n category: \"building_rating\",\n region: \"Brazil\",\n plainLanguageSummary:\n \"Brazil's adaptation of the French HQE system, the leading certification in the Brazilian market alongside LEED.\",\n impactAreas: [\"climate_health\", \"human_health\", \"ecosystem_health\"],\n ruleVersions: [\n {\n id: \"aqua-hqe-current\",\n label: \"AQUA-HQE reference\",\n status: \"reviewed\",\n notes: [\"Brazilian referential adapted from HQE; assessed locally.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Brazilian product evidence ecosystems differ; check assessor guidance.\"],\n reviewStatus: \"draft\",\n },\n {\n frameworkId: \"architecture-2030\",\n sources: [\n { label: \"Architecture 2030\", url: \"https://www.architecture2030.org\" },\n ],\n canonicalName: \"AIA 2030 Commitment\",\n aliases: [\"2030 Commitment\", \"Architecture 2030\", \"AIA 2030\"],\n operatorName: \"American Institute of Architects / Architecture 2030\",\n category: \"commitment\",\n region: \"North America\",\n plainLanguageSummary:\n \"A firm-level commitment to reach carbon-neutral design portfolios, reported annually through the AIA's DDx platform. Increasingly extended to embodied carbon.\",\n impactAreas: [\"climate_health\"],\n ruleVersions: [\n {\n id: \"a2030-current\",\n label: \"2030 Commitment reporting reference\",\n status: \"reviewed\",\n notes: [\"Reporting covers predicted energy intensity and, increasingly, embodied carbon.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"A reporting commitment by design firms — not a building or product certification.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"se-2050\",\n sources: [\n { label: \"SEI — SE 2050\", url: \"https://se2050.org\" },\n ],\n canonicalName: \"SE 2050\",\n aliases: [\"SE 2050\", \"SE2050\"],\n operatorName: \"Structural Engineering Institute (ASCE)\",\n category: \"commitment\",\n region: \"North America\",\n plainLanguageSummary:\n \"The structural engineering profession's commitment to net-zero embodied carbon structures by 2050 — the reason structural product EPDs are increasingly requested.\",\n impactAreas: [\"climate_health\"],\n ruleVersions: [\n {\n id: \"se2050-current\",\n label: \"SE 2050 reference\",\n status: \"reviewed\",\n notes: [\"Drives demand for concrete, steel, and timber EPDs on structural packages.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Firm-level commitment; influence on product selection is indirect but growing.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"leti\",\n sources: [\n { label: \"LETI\", url: \"https://www.leti.uk\" },\n ],\n canonicalName: \"LETI\",\n aliases: [\"LETI\", \"London Energy Transformation Initiative\"],\n operatorName: \"LETI (UK voluntary network)\",\n category: \"commitment\",\n region: \"UK\",\n plainLanguageSummary:\n \"A UK industry network whose embodied-carbon and operational-energy targets have become de facto benchmarks in British practice, widely cited in briefs and planning submissions.\",\n impactAreas: [\"climate_health\"],\n ruleVersions: [\n {\n id: \"leti-current\",\n label: \"LETI embodied carbon targets reference\",\n status: \"reviewed\",\n notes: [\"Targets are benchmarks, not certifications; verification is by project carbon assessment.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"LETI publishes targets and guidance; nobody is 'LETI certified'.\"],\n reviewStatus: \"reviewed\",\n },\n {\n frameworkId: \"well-health-safety\",\n sources: [\n { label: \"IWBI — WELL Health-Safety\", url: \"https://www.wellcertified.com\" },\n ],\n canonicalName: \"WELL Health-Safety Rating\",\n aliases: [\"WELL Health-Safety\", \"WELL HSR\"],\n operatorName: \"International WELL Building Institute\",\n category: \"health_wellbeing\",\n region: \"Global\",\n plainLanguageSummary:\n \"A lighter, operations-focused rating from the WELL family covering cleaning policies, emergency preparedness, and air and water management — popular post-pandemic.\",\n impactAreas: [\"human_health\"],\n ruleVersions: [\n {\n id: \"whsr-current\",\n label: \"WELL Health-Safety reference\",\n status: \"reviewed\",\n notes: [\"Operational policies, not building design or products.\"],\n },\n ],\n sourceAuthorityTier: \"expert_interpretation\",\n caveats: [\"Often confused with full WELL certification; it is a much narrower operational rating.\"],\n reviewStatus: \"reviewed\",\n },\n];\n","import type { SourceType } from \"../canon.ts\";\n\n// Extended certificate/source-type corpus. Authored from domain expertise;\n// entries are reviewStatus \"draft\" until verified against issuer documentation.\n\nexport const extendedSourceTypes: readonly SourceType[] = [\n {\n sourceTypeId: \"cradle_to_cradle_certificate\",\n sources: [\n { label: \"C2C Products Innovation Institute\", url: \"https://c2ccertified.org\" },\n ],\n canonicalName: \"Cradle to Cradle Certified\",\n aliases: [\"C2C\", \"Cradle to Cradle\", \"C2C Certified\", \"Cradle to Cradle Certified\"],\n category: \"multi_attribute\",\n issuerExamples: [\"Cradle to Cradle Products Innovation Institute\"],\n supportsClaim:\n \"Third-party certification across five categories — material health, circularity, clean air & climate protection, water & soil stewardship, and social fairness — at an overall level (Bronze to Platinum).\",\n doesNotSupport: [\n \"That every category scored at the overall level — categories are scored individually; the overall level is the lowest.\",\n \"Anything about product performance or durability.\",\n ],\n requiredFields: [\"certification_level\", \"version\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Always ask for the level per category, not just the overall badge.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"c2c_material_health_certificate\",\n sources: [\n { label: \"C2C Products Innovation Institute\", url: \"https://c2ccertified.org\" },\n ],\n canonicalName: \"C2C Material Health Certificate\",\n aliases: [\"Material Health Certificate\", \"MHC\"],\n category: \"ingredient_chemical\",\n issuerExamples: [\"Cradle to Cradle Products Innovation Institute\"],\n supportsClaim:\n \"A standalone certificate covering only the material health category of Cradle to Cradle — chemical ingredients assessed against hazard criteria.\",\n doesNotSupport: [\n \"Circularity, carbon, water, or social claims — it is a single-category certificate.\",\n ],\n requiredFields: [\"certification_level\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Often confused with full C2C certification; it is narrower.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"living_product_challenge_label\",\n sources: [\n { label: \"ILFI — Living Product Challenge\", url: \"https://living-future.org/lpc/\" },\n ],\n canonicalName: \"Living Product Challenge Label\",\n aliases: [\"LPC\", \"Living Product Challenge\"],\n category: \"multi_attribute\",\n issuerExamples: [\"International Living Future Institute\"],\n supportsClaim:\n \"Certification that a product meets ILFI's regenerative product standard, including Red List avoidance and handprinting (giving back more than the product takes).\",\n doesNotSupport: [\"That the manufacturer's whole portfolio meets the standard.\"],\n requiredFields: [\"imperatives_achieved\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Rare in the market; verify scope of the certified product line.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"greenguard_certificate\",\n sources: [\n { label: \"UL Solutions — GREENGUARD\", url: \"https://www.ul.com\" },\n ],\n canonicalName: \"GREENGUARD Certificate\",\n aliases: [\"GREENGUARD\", \"GREENGUARD Gold\", \"UL GREENGUARD\"],\n category: \"iaq_emissions\",\n issuerExamples: [\"UL Solutions\"],\n supportsClaim:\n \"Third-party chamber testing showing the product meets VOC emission limits; Gold applies stricter limits suitable for schools and healthcare.\",\n doesNotSupport: [\n \"Anything about the product's ingredients, recycled content, or carbon footprint.\",\n \"VOC *content* claims — emissions and content are different measurements.\",\n ],\n requiredFields: [\"certificate_level\", \"certificate_number\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Distinguish GREENGUARD from GREENGUARD Gold — limits differ significantly.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"scs_indoor_advantage_certificate\",\n sources: [\n { label: \"SCS Global Services\", url: \"https://www.scsglobalservices.com\" },\n ],\n canonicalName: \"SCS Indoor Advantage Certificate\",\n aliases: [\"Indoor Advantage\", \"Indoor Advantage Gold\"],\n category: \"iaq_emissions\",\n issuerExamples: [\"SCS Global Services\"],\n supportsClaim:\n \"Third-party certification of indoor air quality emissions for furniture and building materials; Gold meets CDPH 01350 and BIFMA limits.\",\n doesNotSupport: [\"Chemical content, recycled content, or any non-emissions attribute.\"],\n requiredFields: [\"certificate_level\", \"certificate_number\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Functionally parallel to GREENGUARD; rating systems usually accept either.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"m1_emission_classification\",\n sources: [\n { label: \"RTS — M1 classification\", url: \"https://cer.rts.fi\" },\n ],\n canonicalName: \"M1 Emission Classification\",\n aliases: [\"M1\", \"M1 classified\", \"Finnish emission classification\"],\n category: \"iaq_emissions\",\n issuerExamples: [\"Building Information Foundation RTS (Finland)\"],\n supportsClaim:\n \"The product meets Finland's M1 class limits for VOC and odour emissions — the strictest tier of the Nordic emission classification.\",\n doesNotSupport: [\"Non-emissions attributes; recognition outside Nordic-influenced projects varies.\"],\n requiredFields: [\"classification\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Common on European products; check equivalence before substituting for CDPH-based certificates.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"blue_angel_label\",\n sources: [\n { label: \"Blue Angel\", url: \"https://www.blauer-engel.de/en\" },\n ],\n canonicalName: \"Blue Angel\",\n aliases: [\"Blue Angel\", \"Blauer Engel\"],\n category: \"multi_attribute\",\n issuerExamples: [\"German Federal Environment Agency (UBA) / RAL gGmbH\"],\n supportsClaim:\n \"Germany's national Type I ecolabel: the product meets published multi-criteria environmental requirements for its category, verified by an independent body.\",\n doesNotSupport: [\n \"Criteria outside its product category document — coverage varies widely by category.\",\n ],\n requiredFields: [\"basic_award_criteria\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Always identify the criteria document (DE-UZ number) behind the label.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"eu_ecolabel\",\n sources: [\n { label: \"European Commission — EU Ecolabel\", url: \"https://environment.ec.europa.eu\" },\n ],\n canonicalName: \"EU Ecolabel\",\n aliases: [\"EU Ecolabel\", \"EU Flower\"],\n category: \"multi_attribute\",\n issuerExamples: [\"European Commission via national competent bodies\"],\n supportsClaim:\n \"The EU's official Type I ecolabel: independently verified compliance with multi-criteria environmental standards for the product group.\",\n doesNotSupport: [\"Attributes not covered by the product group criteria.\"],\n requiredFields: [\"licence_number\", \"product_group\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Product-group criteria are revised periodically; check the version.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"nordic_swan_label\",\n sources: [\n { label: \"Nordic Swan Ecolabel\", url: \"https://www.nordic-swan-ecolabel.org\" },\n ],\n canonicalName: \"Nordic Swan Ecolabel\",\n aliases: [\"Nordic Swan\", \"Svanen\"],\n category: \"multi_attribute\",\n issuerExamples: [\"Nordic Ecolabelling Board\"],\n supportsClaim:\n \"The official Nordic Type I ecolabel: independently verified multi-criteria environmental performance, generally strict on chemicals.\",\n doesNotSupport: [\"Attributes outside the product-group criteria.\"],\n requiredFields: [\"licence_number\", \"product_group\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Strong on chemical restrictions; carbon coverage varies by product group.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"green_seal_certificate\",\n sources: [\n { label: \"Green Seal\", url: \"https://greenseal.org\" },\n ],\n canonicalName: \"Green Seal Certificate\",\n aliases: [\"Green Seal\", \"GS certified\"],\n category: \"multi_attribute\",\n issuerExamples: [\"Green Seal\"],\n supportsClaim:\n \"US-based Type I ecolabel certification against published standards (e.g. GS-11 for paints), covering health and environmental criteria.\",\n doesNotSupport: [\"Attributes outside the cited Green Seal standard.\"],\n requiredFields: [\"standard_number\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Cite the specific standard (e.g. GS-11) — coverage differs per standard.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"ul_ecologo_certificate\",\n sources: [\n { label: \"UL Solutions — ECOLOGO\", url: \"https://www.ul.com\" },\n ],\n canonicalName: \"UL ECOLOGO Certificate\",\n aliases: [\"ECOLOGO\", \"UL ECOLOGO\"],\n category: \"multi_attribute\",\n issuerExamples: [\"UL Solutions\"],\n supportsClaim:\n \"Type I ecolabel certification to a UL environmental standard covering multiple lifecycle criteria for the product category.\",\n doesNotSupport: [\"Attributes outside the cited UL standard.\"],\n requiredFields: [\"standard_number\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Common for paints, adhesives, and cleaning products.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"bifma_level_certificate\",\n sources: [\n { label: \"BIFMA — LEVEL\", url: \"https://www.levelcertified.org\" },\n ],\n canonicalName: \"BIFMA LEVEL Certificate\",\n aliases: [\"LEVEL\", \"BIFMA LEVEL\", \"ANSI/BIFMA e3\"],\n category: \"multi_attribute\",\n issuerExamples: [\"SCS Global Services\", \"UL Solutions\", \"Intertek\"],\n supportsClaim:\n \"Furniture-industry sustainability certification against ANSI/BIFMA e3, scored 1–3 across materials, energy, health, and social responsibility.\",\n doesNotSupport: [\n \"Single-attribute guarantees — LEVEL is a points standard; a level says little about any one criterion.\",\n ],\n requiredFields: [\"level\", \"e3_version\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Ask for the scorecard to see where points were earned.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"nsf_ansi_140_certificate\",\n sources: [\n { label: \"NSF\", url: \"https://www.nsf.org\" },\n ],\n canonicalName: \"NSF/ANSI 140 Certificate\",\n aliases: [\"NSF 140\", \"NSF/ANSI 140\"],\n category: \"multi_attribute\",\n issuerExamples: [\"NSF\", \"SCS Global Services\", \"UL Solutions\"],\n supportsClaim:\n \"Sustainability assessment certification for carpet (Silver/Gold/Platinum) covering lifecycle criteria including recycled content and end-of-life management.\",\n doesNotSupport: [\"Hard-surface flooring claims — the standard covers carpet only.\"],\n requiredFields: [\"level\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Platinum requires reclamation programmes — relevant to circularity claims.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"nsf_ansi_332_certificate\",\n sources: [\n { label: \"NSF\", url: \"https://www.nsf.org\" },\n ],\n canonicalName: \"NSF/ANSI 332 Certificate\",\n aliases: [\"NSF 332\", \"NSF/ANSI 332\"],\n category: \"multi_attribute\",\n issuerExamples: [\"NSF\", \"SCS Global Services\"],\n supportsClaim:\n \"Sustainability assessment certification for resilient flooring (vinyl, linoleum, rubber) across lifecycle criteria.\",\n doesNotSupport: [\"Carpet or hard-surface claims outside resilient flooring.\"],\n requiredFields: [\"level\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Parallel to NSF 140 but for resilient products.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"nsf_ansi_336_certificate\",\n sources: [{ label: \"NSF\", url: \"https://www.nsf.org\" }],\n canonicalName: \"NSF/ANSI 336 Certificate\",\n aliases: [\"NSF 336\", \"NSF/ANSI 336\", \"NSF 336 Compliant\"],\n category: \"multi_attribute\",\n issuerExamples: [\"NSF\", \"SCS Global Services\", \"UL Solutions\"],\n supportsClaim:\n \"Multi-attribute sustainability assessment certification for commercial furnishings fabric (Compliant / Silver / Gold / Platinum) across lifecycle criteria including fibre sourcing, manufacturing, and end-of-life management.\",\n doesNotSupport: [\"Flooring, wallcovering, or non-fabric product claims.\"],\n requiredFields: [\"level\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\n \"Conformance level (Compliant through Platinum) matters — ask for the certificate level.\",\n \"Sibling to NSF 140 (carpet) and NSF 332 (resilient) but scoped to contract textiles.\",\n ],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"nsf_ansi_342_certificate\",\n sources: [{ label: \"NSF\", url: \"https://www.nsf.org\" }],\n canonicalName: \"NSF/ANSI 342 Certificate\",\n aliases: [\"NSF 342\", \"NSF/ANSI 342\"],\n category: \"multi_attribute\",\n issuerExamples: [\"NSF\", \"SCS Global Services\"],\n supportsClaim:\n \"Multi-attribute sustainability assessment certification for commercial wallcovering across lifecycle criteria, parallel to the NSF 140 / 332 / 336 family.\",\n doesNotSupport: [\"Fabric, flooring, or non-wallcovering product claims.\"],\n requiredFields: [\"level\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Conformance level matters — ask for the certificate level.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"green_squared_certificate\",\n sources: [{ label: \"TCNA — Green Squared\", url: \"https://www.tileusa.com\" }],\n canonicalName: \"Green Squared Certified (ANSI A138.1)\",\n aliases: [\"Green Squared\", \"ANSI A138.1\", \"Green Squared Certified\"],\n category: \"multi_attribute\",\n issuerExamples: [\"SCS Global Services\", \"UL Solutions\"],\n supportsClaim:\n \"Multi-attribute sustainability certification for ceramic tile and tile installation materials (ANSI A138.1) covering product characteristics, manufacturing, end-of-life management, and progressive/innovation credits.\",\n doesNotSupport: [\"Non-tile product claims.\"],\n requiredFields: [\"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Scoped to ceramic tile and installation materials specifically.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"cri_green_label_plus_certificate\",\n sources: [{ label: \"Carpet and Rug Institute\", url: \"https://carpet-rug.org\" }],\n canonicalName: \"CRI Green Label Plus\",\n aliases: [\"Green Label Plus\", \"CRI GLP\", \"CRI Green Label Plus\"],\n category: \"iaq_emissions\",\n issuerExamples: [\"Carpet and Rug Institute (CRI)\"],\n supportsClaim:\n \"Low-VOC indoor-air-quality emissions certification for carpet, cushion, and adhesives, tested against stricter emission thresholds than the base Green Label programme.\",\n doesNotSupport: [\n \"Hard-surface flooring or non-carpet products.\",\n \"Lifecycle, recycled-content, or circularity claims — this is an emissions-only programme.\",\n ],\n requiredFields: [\"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Assesses VOC emissions only, not broader lifecycle sustainability.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"oeko_tex_standard_100_certificate\",\n sources: [\n { label: \"OEKO-TEX\", url: \"https://www.oeko-tex.com\" },\n ],\n canonicalName: \"OEKO-TEX Standard 100 Certificate\",\n aliases: [\"OEKO-TEX\", \"OEKO-TEX Standard 100\", \"Oeko-Tex 100\"],\n category: \"ingredient_chemical\",\n issuerExamples: [\"OEKO-TEX Association member institutes (e.g. Hohenstein)\"],\n supportsClaim:\n \"Every component of the textile article has been tested against a harmful-substances list, with limits stricter than most legal requirements.\",\n doesNotSupport: [\n \"Organic or recycled fibre origin claims.\",\n \"Environmental claims about manufacturing — Standard 100 tests the finished article.\",\n ],\n requiredFields: [\"certificate_number\", \"product_class\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Product class matters: Class I (baby) is far stricter than Class IV (furnishings).\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"gots_certificate\",\n sources: [\n { label: \"Global Organic Textile Standard\", url: \"https://global-standard.org\" },\n ],\n canonicalName: \"GOTS Certificate\",\n aliases: [\"GOTS\", \"Global Organic Textile Standard\"],\n category: \"material_origin\",\n issuerExamples: [\"Control Union\", \"Ecocert\", \"GOTS-approved certifiers\"],\n supportsClaim:\n \"The textile contains a verified minimum of organic fibre (70% for 'made with organic', 95% for 'organic') with environmental and social criteria applied through processing.\",\n doesNotSupport: [\"Emissions or chemical-content claims about the installed product.\"],\n requiredFields: [\"certificate_number\", \"label_grade\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Check the label grade — 'organic' and 'made with organic' differ.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"global_recycled_standard_certificate\",\n sources: [\n { label: \"Textile Exchange — GRS\", url: \"https://textileexchange.org\" },\n ],\n canonicalName: \"Global Recycled Standard Certificate\",\n aliases: [\"GRS\", \"Global Recycled Standard\"],\n category: \"circularity\",\n issuerExamples: [\"Control Union\", \"SCS Global Services\", \"Textile Exchange certifiers\"],\n supportsClaim:\n \"Third-party verification of recycled content (minimum 20%, 50%+ for the GRS label) with chain of custody plus social and chemical criteria.\",\n doesNotSupport: [\"Post-consumer vs post-industrial split unless stated on the certificate.\"],\n requiredFields: [\"certificate_number\", \"recycled_percentage\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Stronger than a bare recycled-content claim because custody is audited.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"recycled_claim_standard_certificate\",\n sources: [\n { label: \"Textile Exchange — RCS\", url: \"https://textileexchange.org\" },\n ],\n canonicalName: \"Recycled Claim Standard Certificate\",\n aliases: [\"RCS\", \"Recycled Claim Standard\"],\n category: \"circularity\",\n issuerExamples: [\"Control Union\", \"Textile Exchange certifiers\"],\n supportsClaim:\n \"Chain-of-custody verification that claimed recycled material is genuinely present (5% minimum) — content tracking only.\",\n doesNotSupport: [\n \"Environmental or social processing criteria — unlike GRS, RCS tracks content only.\",\n ],\n requiredFields: [\"certificate_number\", \"recycled_percentage\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"RCS is the lighter sibling of GRS.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"iscc_plus_certificate\",\n sources: [\n { label: \"ISCC System\", url: \"https://www.iscc-system.org\" },\n ],\n canonicalName: \"ISCC PLUS Certificate\",\n aliases: [\"ISCC PLUS\", \"ISCC\"],\n category: \"material_origin\",\n issuerExamples: [\"ISCC System GmbH via accredited certification bodies\"],\n supportsClaim:\n \"Chain-of-custody certification for bio-based or circular feedstocks, usually via mass balance allocation rather than physical segregation.\",\n doesNotSupport: [\n \"That the specific physical product contains the bio-based or recycled material — mass balance allocates credits across production.\",\n ],\n requiredFields: [\"certificate_number\", \"allocation_method\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Mass balance is legitimate but must be disclosed as such — physical content may be zero.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"carbon_footprint_report\",\n sources: [\n { label: \"ISO 14067\", url: \"https://www.iso.org\" },\n ],\n canonicalName: \"Product Carbon Footprint Report\",\n aliases: [\"PCF\", \"Carbon footprint\", \"ISO 14067 report\"],\n category: \"lifecycle_carbon\",\n issuerExamples: [\"LCA consultancies\", \"Manufacturer (ISO 14067 study)\"],\n supportsClaim:\n \"A quantified cradle-to-gate or cradle-to-grave greenhouse-gas figure for the product, ideally to ISO 14067.\",\n doesNotSupport: [\n \"Comparability with other products without matching scope, functional unit, and methodology.\",\n \"'Low carbon' as a judgement — the report gives a number, not a benchmark.\",\n ],\n requiredFields: [\"system_boundary\", \"functional_unit\", \"methodology\", \"reference_year\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n expiryRelevant: false,\n caveats: [\"Third-party verification elevates this substantially; ask if it was reviewed.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"carbon_neutral_certificate\",\n sources: [\n { label: \"ISO 14068-1:2023\", url: \"https://www.iso.org\" },\n ],\n canonicalName: \"Carbon Neutral Certificate\",\n aliases: [\"Carbon neutral certified\", \"ISO 14068-1\", \"PAS 2060\", \"Climate Impact certification\"],\n category: \"lifecycle_carbon\",\n issuerExamples: [\"BSI\", \"Climate Impact Partners\", \"South Pole\", \"SCS Global Services\"],\n supportsClaim:\n \"The product's measured footprint has been addressed under a stated carbon-neutrality protocol — now ISO 14068-1:2023, which requires a reduce-remove-offset hierarchy rather than offsetting alone.\",\n doesNotSupport: [\n \"That the product's own emissions are low — check the reduction plan, not just the badge.\",\n \"Offset quality — credit standards vary widely.\",\n ],\n requiredFields: [\"protocol\", \"scope\", \"offset_standard\", \"period\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\n \"PAS 2060 was withdrawn in November 2025; certificates still citing it are against a retired standard.\",\n \"Regulators increasingly scrutinise offset-based neutrality claims; treat with care.\",\n ],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"environmental_management_certificate\",\n sources: [\n { label: \"ISO 14001\", url: \"https://www.iso.org\" },\n ],\n canonicalName: \"Environmental Management System Certificate\",\n aliases: [\"ISO 14001\", \"ISO 14001 certified\", \"EMS certificate\"],\n category: \"social_organizational\",\n issuerExamples: [\"BSI\", \"TÜV\", \"SGS\", \"Bureau Veritas\"],\n supportsClaim:\n \"The manufacturer operates an audited environmental management system at the certified site(s) under ISO 14001.\",\n doesNotSupport: [\n \"Anything about a specific product — ISO 14001 certifies management processes, not outcomes or products.\",\n ],\n requiredFields: [\"certificate_number\", \"certified_sites\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Frequently misused as a product green claim; it is an organisational certificate.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"just_label\",\n sources: [\n { label: \"ILFI — JUST\", url: \"https://living-future.org/just/\" },\n ],\n canonicalName: \"JUST Label\",\n aliases: [\"JUST\", \"JUST 2.0\"],\n category: \"social_organizational\",\n issuerExamples: [\"International Living Future Institute\"],\n supportsClaim:\n \"A transparency disclosure of the organisation's social-equity performance — diversity, worker benefits, local sourcing — scored across indicators.\",\n doesNotSupport: [\n \"A pass/fail social standard — JUST is disclosure, not certification of performance.\",\n ],\n requiredFields: [\"organization_scope\", \"valid_until\"],\n minimumSourceAuthority: \"programme_operator\",\n expiryRelevant: true,\n caveats: [\"Read the scorecard; the label itself implies no minimum performance.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"b_corp_certificate\",\n sources: [\n { label: \"B Lab\", url: \"https://www.bcorporation.net\" },\n ],\n canonicalName: \"B Corp Certification\",\n aliases: [\"B Corp\", \"Certified B Corporation\"],\n category: \"social_organizational\",\n issuerExamples: [\"B Lab\"],\n supportsClaim:\n \"The company met B Lab's threshold score for overall social and environmental performance, with legal accountability commitments.\",\n doesNotSupport: [\n \"Product-level claims of any kind — B Corp assesses the company.\",\n ],\n requiredFields: [\"company_scope\", \"score\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Useful context about the maker; never a substitute for product evidence.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"social_accountability_certificate\",\n sources: [\n { label: \"SAI — SA8000\", url: \"https://sa-intl.org\" },\n ],\n canonicalName: \"Social Accountability Certificate\",\n aliases: [\"SA8000\", \"SMETA audit\", \"amfori BSCI\"],\n category: \"social_organizational\",\n issuerExamples: [\"SAI (SA8000)\", \"Sedex members (SMETA)\", \"amfori\"],\n supportsClaim:\n \"The production site passed a labour-standards audit (e.g. SA8000 certification or a SMETA audit) covering working conditions.\",\n doesNotSupport: [\n \"Conditions in upstream supply chains beyond the audited site.\",\n ],\n requiredFields: [\"standard\", \"audited_sites\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Audit scope is site-specific; multi-tier supply chains need multi-tier evidence.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"conflict_minerals_report\",\n sources: [\n { label: \"Responsible Minerals Initiative\", url: \"https://www.responsiblemineralsinitiative.org\" },\n ],\n canonicalName: \"Conflict Minerals Report\",\n aliases: [\"CMRT\", \"Conflict Minerals Reporting Template\", \"3TG report\"],\n category: \"social_organizational\",\n issuerExamples: [\"Manufacturer via RMI's CMRT template\"],\n supportsClaim:\n \"The manufacturer has performed due diligence on tin, tantalum, tungsten, and gold (3TG) sourcing, documented via the standard reporting template.\",\n doesNotSupport: [\n \"Absence of all conflict-affected materials — the CMRT documents inquiry, not certainty.\",\n ],\n requiredFields: [\"template_version\", \"declaration_scope\", \"date\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n expiryRelevant: true,\n caveats: [\"Mostly relevant to products with electronic components or metal hardware.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"takeback_program_documentation\",\n sources: [\n { label: \"FTC Green Guides\", url: \"https://www.ftc.gov\" },\n ],\n canonicalName: \"Take-Back Programme Documentation\",\n aliases: [\"Take-back program\", \"Product reclamation\", \"End-of-life take-back\"],\n category: \"circularity\",\n issuerExamples: [\"Manufacturer programme terms\"],\n supportsClaim:\n \"The manufacturer operates a programme to reclaim the product at end of life, under published terms.\",\n doesNotSupport: [\n \"That reclaimed product is actually recycled into new product — ask for recovery outcomes.\",\n \"Availability in your region or for your project size.\",\n ],\n requiredFields: [\"program_terms\", \"regions_covered\", \"materials_accepted\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n expiryRelevant: false,\n caveats: [\"Programmes are sometimes discontinued quietly; confirm it is active.\"],\n reviewStatus: \"reviewed\",\n },\n {\n sourceTypeId: \"global_greentag_certificate\",\n canonicalName: \"Global GreenTag Certificate\",\n aliases: [\"Global GreenTag\", \"Global GreenTag Certified\", \"GreenTag Certified\", \"Global GreenTag GreenRate\", \"Global GreenTag LCARate\", \"GreenTag LCARate\", \"GreenTag GreenRate\", \"GreenTag Platinum\", \"GreenTag Gold\", \"GreenTag Silver\", \"GreenTag Bronze\", \"GreenTag Product Health Declaration\", \"GreenTag PhD\"],\n category: \"multi_attribute\",\n issuerExamples: [\"Global GreenTag International Pty Ltd\"],\n sources: [{ label: \"Global GreenTag International\", url: \"https://www.globalgreentag.com\" }],\n supportsClaim: \"Third-party certification (Australian-origin, internationally operated ISO 14024 Type I ecolabel) that the product met the criteria of a specific GreenTag programme — GreenRate (level A, B, or C) or LCARate (Bronze, Silver, Gold, or Platinum, based on comparative life cycle assessment) — with the level stated on the certificate; the separate GreenTag Product Health Declaration covers ingredient health disclosure only.\",\n doesNotSupport: [\"That the product is 'sustainable' in general — it met one GreenTag programme's criteria set at the stated level, nothing broader.\", \"Equivalence between GreenRate and LCARate — they are different schemes with different bases (rating-system compliance vs. comparative LCA), and a level in one says nothing about the other.\", \"Any specific single-attribute value (exact recycled content percentage, carbon footprint number, or VOC emission rate) unless separately documented.\", \"Automatic credit in non-Australian rating systems — recognition varies by system and version.\"],\n requiredFields: [\"certificate_number\", \"certification_scheme\", \"certification_level\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Always identify which scheme (GreenRate vs. LCARate) and which level — a GreenRate Level C and an LCARate Platinum are very different achievements.\", \"GreenTag is strongest in Australia/New Zealand (Green Star recognition); check the certificate's stated scope before assuming recognition elsewhere.\", \"LCARate tiers (Bronze to Platinum) reflect comparative performance against a business-as-usual benchmark product, not an absolute impact threshold.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"greencircle_certificate\",\n canonicalName: \"GreenCircle Certified Certificate\",\n aliases: [\"GreenCircle Certified\", \"Green Circle Certified\", \"GreenCircle Certified Recycled Content\", \"GreenCircle Certified Closed Loop Product\", \"GreenCircle Certified Waste Diversion from Landfill\", \"GreenCircle Certified Biobased Content\", \"GreenCircle Certified Carbon Footprint Reduction\", \"GreenCircle Certified Renewable Energy Use\", \"GreenCircle Recycled Content Certified\"],\n category: \"circularity\",\n issuerExamples: [\"GreenCircle Certified, LLC\"],\n sources: [{ label: \"GreenCircle Certified\", url: \"https://www.greencirclecertified.com\" }],\n supportsClaim: \"Third-party verification by GreenCircle Certified, LLC of ONE specific named attribute stated on the certificate — such as Recycled Content (with percentage), Biobased Content, Closed Loop Product, Waste Diversion from Landfill, Renewable Energy Use, or Carbon Footprint Reduction — for the stated product or facility scope.\",\n doesNotSupport: [\"Any attribute other than the one named on the certificate — a Recycled Content certificate says nothing about chemicals, emissions, or carbon.\", \"That the product is broadly 'certified green' or passed a multi-attribute ecolabel assessment — GreenCircle verifies single claims, not whole-product sustainability.\", \"Product-level performance when the certified scope is a facility or process (e.g. Waste Diversion, Renewable Energy Use are typically facility-level).\"],\n requiredFields: [\"certificate_number\", \"verified_attribute\", \"attribute_value\", \"certified_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Treat each GreenCircle certificate as evidence for exactly one claim family — the verified_attribute field determines which.\", \"Check whether the certified scope is the product or the manufacturing facility; facility-level attributes do not transfer to per-product claims.\", \"Most GreenCircle attributes are circularity claims, but Biobased Content, Renewable Energy Use, and Carbon Footprint Reduction fall outside circularity — categorize by the verified attribute, not the logo.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"eco_mark_certificate\",\n canonicalName: \"Eco Mark Certificate\",\n aliases: [\"Eco Mark\", \"Eco Mark Certified\", \"Eco Mark Japan\", \"Japan Eco Mark\", \"Eco Mark Program\", \"Eco Mark Certification\"],\n category: \"multi_attribute\",\n issuerExamples: [\"Japan Environment Association (JEA)\"],\n sources: [{ label: \"Eco Mark Office, Japan Environment Association\", url: \"https://www.ecomark.jp\" }],\n supportsClaim: \"Certification under Japan's national ISO 14024 Type I ecolabel (operated by the Japan Environment Association) that the product met the multi-criteria requirements of the specific Eco Mark product category standard it was certified against, verified by the programme rather than self-declared.\",\n doesNotSupport: [\"General 'verified sustainable' status — it proves the product met one Eco Mark product category's criteria set, which varies widely between categories.\", \"Specific attribute values (recycled content percentage, VOC emission rate, carbon footprint) unless separately documented — criteria are pass/fail against category thresholds.\", \"Recognition or equivalence in non-Japanese rating systems and procurement schemes, which must be checked case by case.\"],\n requiredFields: [\"certificate_number\", \"product_category_number\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Criteria are set per product category (each with its own numbered standard and version) — always identify which category standard the product was certified against.\", \"Eco Mark's market weight is primarily Japanese (including green procurement there); assess relevance for projects elsewhere before leaning on it.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"natureplus_certificate\",\n canonicalName: \"natureplus Quality Label\",\n aliases: [\"natureplus certified\", \"natureplus label\", \"natureplus quality label\", \"natureplus quality mark\", \"natureplus certificate\", \"NaturePlus Certified\", \"natureplus e.V. label\"],\n category: \"multi_attribute\",\n issuerExamples: [\"natureplus e.V. (International Association for Sustainable Building and Living)\"],\n sources: [{ label: \"natureplus e.V.\", url: \"https://www.natureplus.org\" }],\n supportsClaim: \"Third-party European Type I ecolabel specifically for building and construction products, certifying that the product met natureplus's combined criteria on health (strict emissions testing and harmful-substance limits), environment (raw materials predominantly renewable or abundant mineral resources, with resource and production requirements), and fitness for use, per the applicable product-group award guideline.\",\n doesNotSupport: [\"General 'verified sustainable' status — it proves compliance with natureplus's specific criteria set for that product group, at that guideline version.\", \"Applicability beyond building/construction products — the label's scope is that sector only.\", \"Specific quantified values (exact emission rates, renewable-content percentages, or carbon figures) unless stated in accompanying test documentation.\", \"Carbon neutrality or a low product carbon footprint — carbon is not the label's central test.\"],\n requiredFields: [\"certificate_number\", \"product_group_guideline\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"natureplus is notably strict on ingredient and emissions limits — often stricter than generic ecolabels — but only for the product groups it covers; always cite the product-group award guideline.\", \"Its raw-material rules generally exclude predominantly petrochemical products, so absence of the label often reflects eligibility, not failure.\", \"Recognition is strongest in German-speaking and wider European markets; check acceptance in other rating systems before relying on it.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"scs_epp_certificate\",\n canonicalName: \"SCS Environmentally Preferable Product Certificate\",\n aliases: [\"SCS Environmentally Preferable Product\", \"Environmentally Preferable Product\", \"Environmentally Preferable Product Certification\", \"SCS EPP Certified\", \"SCS Certified Environmentally Preferable Product\", \"Environmentally Preferable Products\"],\n category: \"multi_attribute\",\n issuerExamples: [\"SCS Global Services\"],\n sources: [{ label: \"SCS Global Services\", url: \"https://www.scsglobalservices.com\" }],\n supportsClaim: \"Third-party certification by SCS Global Services that the product met the requirements of the SCS Environmentally Preferable Product standard it was certified against — a multi-attribute assessment informed by life cycle assessment covering areas such as materials, manufacturing impacts, and end-of-life — for the stated product scope and standard version.\",\n doesNotSupport: [\"General 'verified sustainable' or 'best in class' status — it proves conformance with one certifier's standard at the stated version, not superiority over all alternatives.\", \"A specific quantified carbon footprint, recycled content percentage, or emission rate — those values require their own documents even when the LCA informed the certification.\", \"Indoor air quality emissions performance — that is SCS's separate Indoor Advantage programme, not EPP.\", \"Equivalence with national Type I ecolabels (Blue Angel, EU Ecolabel) — EPP is a certifier-operated programme and its recognition in rating systems must be checked per system.\"],\n requiredFields: [\"certificate_number\", \"standard_version\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"SCS is both the standard developer and the certifier for EPP; treat its assurance as third-party verified but note it is not a national ecolabel programme.\", \"Do not conflate SCS EPP with other SCS marks (FloorScore, Indoor Advantage, SCS Recycled Content) — each proves something different.\", \"Identify the exact EPP standard and version on the certificate; criteria and scope have varied across product categories and revisions.\"],\n reviewStatus: \"draft\",\n },\n\n // ── Batch 3: materials / sector stewardship certifications ────────────\n\n {\n sourceTypeId: \"aws_water_stewardship_certificate\",\n canonicalName: \"AWS Water Stewardship Certificate\",\n aliases: [\"Alliance for Water Stewardship\", \"AWS Standard\", \"AWS International Water Stewardship Standard\", \"AWS Certified\", \"AWS Core Certification\", \"AWS Gold Certification\", \"AWS Platinum Certification\"],\n category: \"social_organizational\",\n issuerExamples: [\"Alliance for Water Stewardship (via AWS-accredited certification bodies)\"],\n sources: [{ label: \"Alliance for Water Stewardship\", url: \"https://a4ws.org\" }],\n supportsClaim: \"A specific site has been independently audited against the AWS International Water Stewardship Standard, covering water governance, water balance, water quality, important water-related areas, and safe water/sanitation/hygiene at that site and in its catchment; Core, Gold, and Platinum reflect increasing performance.\",\n doesNotSupport: [\"Any product-level claim — it certifies a site, not the water footprint of products made there.\", \"Claims about the manufacturer's other sites or the company as a whole.\", \"'Water positive' or 'water neutral' claims — AWS certifies stewardship practice, not a net water balance.\"],\n requiredFields: [\"certified_site\", \"certification_level\", \"certificate_number\", \"certification_body\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"This is the third-party-audited form of a water stewardship claim — a vendor saying 'water stewardship' without an AWS (or equivalent) certificate remains an unverified organizational commitment.\", \"Certification is per site: confirm the product is actually made at the certified site.\", \"Levels differ meaningfully — Core is conformance; Gold and Platinum require advanced performance.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"aluminium_stewardship_certificate\",\n canonicalName: \"ASI Aluminium Stewardship Certificate\",\n aliases: [\"Aluminium Stewardship Initiative\", \"ASI Certified\", \"ASI Performance Standard\", \"ASI Chain of Custody\", \"ASI Chain of Custody Standard\", \"ASI Aluminium\", \"ASI CoC Certified\"],\n category: \"material_origin\",\n issuerExamples: [\"Aluminium Stewardship Initiative (via ASI-accredited auditors)\"],\n sources: [{ label: \"Aluminium Stewardship Initiative\", url: \"https://aluminium-stewardship.org\" }],\n supportsClaim: \"Facilities in the aluminium supply chain were independently audited against ASI's Performance Standard (environmental, social, and governance practices from bauxite mining through smelting and fabrication); an additional Chain of Custody certificate allows material produced through certified facilities to be sold as ASI Aluminium.\",\n doesNotSupport: [\"That the aluminium in a specific product is low-carbon — Performance Standard certification is not a carbon footprint claim.\", \"Recycled content claims — ASI certification is independent of recycled content percentage.\", \"Material-flow claims from a Performance Standard certificate alone — only Chain of Custody certification links certified facilities to the metal in a product.\"],\n requiredFields: [\"standard_type\", \"certified_entity\", \"certification_scope\", \"certificate_number\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Always distinguish the two ASI standards: Performance Standard certifies how facilities operate; Chain of Custody certifies where the metal flowed.\", \"A supplier's ASI membership is not certification — check for an actual certificate and its scope.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"copper_mark_assurance\",\n canonicalName: \"Copper Mark Assurance\",\n aliases: [\"The Copper Mark\", \"Copper Mark Awarded\", \"Copper Mark Assurance Framework\", \"Copper Mark Certified\"],\n category: \"material_origin\",\n issuerExamples: [\"The Copper Mark Company (via independent third-party assessors)\"],\n sources: [{ label: \"The Copper Mark\", url: \"https://coppermark.org\" }],\n supportsClaim: \"A specific copper-producing site (mine, smelter, or refiner) has been independently assessed against the Copper Mark's responsible production criteria, covering environmental, social, and governance issues, and holds the Copper Mark award subject to periodic re-assessment.\",\n doesNotSupport: [\"That the copper in a specific finished product came from an awarded site, unless supply-chain traceability is separately documented.\", \"Low-carbon copper claims — the assessment covers responsible production practices, not carbon intensity.\", \"Company-wide claims — the award applies to the assessed site only.\"],\n requiredFields: [\"participant_site\", \"award_status\", \"assessment_date\", \"criteria_version\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"The Copper Mark is awarded per site and requires re-assessment on a set cycle — check the award is current.\", \"The programme has expanded to related metals (e.g. zinc, nickel, molybdenum) under equivalent marks; confirm which metal and site the award covers.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"responsiblesteel_certificate\",\n canonicalName: \"ResponsibleSteel Certificate\",\n aliases: [\"ResponsibleSteel Certified\", \"ResponsibleSteel Certified Site\", \"ResponsibleSteel Certified Steel\", \"ResponsibleSteel International Standard\"],\n category: \"material_origin\",\n issuerExamples: [\"ResponsibleSteel (via approved certification bodies)\"],\n sources: [{ label: \"ResponsibleSteel\", url: \"https://www.responsiblesteel.org\" }],\n supportsClaim: \"A steelmaking site has been independently audited against the ResponsibleSteel International Standard's environmental, social, and governance requirements (Certified Site); Certified Steel additionally requires the site to meet requirements on responsible input sourcing and greenhouse-gas performance, with graded progress levels, allowing product-level claims for steel from that site.\",\n doesNotSupport: [\"Product-level claims from a Certified Site certificate alone — only Certified Steel supports claims about the steel itself.\", \"That certified steel is 'green' or near-zero-emissions — Certified Steel progress levels reflect decarbonisation progress, not zero-carbon steel.\", \"Recycled content percentages, which require separate evidence.\"],\n requiredFields: [\"certification_type\", \"certified_site\", \"certificate_number\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Distinguish Certified Site (how the site operates) from Certified Steel (claims about the steel product, including GHG progress levels) — marketing often blurs the two.\", \"For Certified Steel, note the progress level: levels are graded and lower levels reflect early decarbonisation progress.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"irma_mine_site_assessment\",\n canonicalName: \"IRMA Mine Site Assessment\",\n aliases: [\"Initiative for Responsible Mining Assurance\", \"IRMA Standard for Responsible Mining\", \"IRMA 50 Achievement\", \"IRMA 75 Achievement\", \"IRMA 100 Achievement\", \"IRMA Transparency\", \"IRMA Assessed Mine\"],\n category: \"material_origin\",\n issuerExamples: [\"Initiative for Responsible Mining Assurance (via approved independent audit firms)\"],\n sources: [{ label: \"IRMA — Responsible Mining\", url: \"https://responsiblemining.net\" }],\n supportsClaim: \"A specific mine site has undergone an independent third-party audit against the IRMA Standard for Responsible Mining, with a public audit report and a measured achievement level (IRMA Transparency, IRMA 50, IRMA 75, or IRMA 100) reflecting the share of the standard's requirements met.\",\n doesNotSupport: [\"A pass/fail 'certified responsible' claim — IRMA reports measured performance levels, and lower levels mean substantial requirements are not yet met.\", \"That minerals in a specific product came from the assessed mine, without separate chain-of-custody evidence.\", \"Anything about downstream processing (smelting, refining) or the finished product's impacts.\"],\n requiredFields: [\"mine_site\", \"achievement_level\", \"audit_date\", \"audit_report_reference\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"IRMA is deliberately not a binary certification: IRMA 50 means roughly half the critical requirements are met — read the level, not just the logo.\", \"Audit reports are public; the report is stronger evidence than the badge.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"csc_responsible_sourcing_certificate\",\n canonicalName: \"CSC Responsible Sourcing Certificate\",\n aliases: [\"Concrete Sustainability Council\", \"CSC Certified\", \"CSC Bronze Certification\", \"CSC Silver Certification\", \"CSC Gold Certification\", \"CSC Platinum Certification\", \"CSC Responsible Sourcing\"],\n category: \"material_origin\",\n issuerExamples: [\"Concrete Sustainability Council (via regional system operators and accredited certification bodies)\"],\n sources: [{ label: \"Concrete Sustainability Council\", url: \"https://www.csc-concrete.com\" }],\n supportsClaim: \"A concrete, cement, or aggregates plant has been independently certified against the CSC responsible sourcing framework, covering management, environmental, social, and supply-chain criteria, at Bronze, Silver, Gold, or Platinum level.\",\n doesNotSupport: [\"Low-carbon concrete claims — CSC certifies responsible sourcing and production practice, not the mix's embodied carbon, which needs an EPD.\", \"Claims about concrete supplied from the producer's non-certified plants.\", \"Structural or durability performance of the concrete.\"],\n requiredFields: [\"certificate_level\", \"certified_plant\", \"certificate_number\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Certification is per plant and per level — Bronze and Platinum represent very different performance.\", \"CSC certification is recognised in some building rating schemes' responsible-sourcing credits (e.g. BREEAM Mat credits); recognition varies by scheme and region.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"nsc_373_certificate\",\n canonicalName: \"ANSI/NSC 373 Certificate\",\n aliases: [\"ANSI/NSC 373\", \"NSC 373 Certified\", \"Sustainable Production of Natural Dimension Stone\", \"Natural Stone Sustainability Standard\", \"NSC 373 Bronze\", \"NSC 373 Silver\", \"NSC 373 Gold\", \"NSC 373 Platinum\"],\n category: \"material_origin\",\n issuerExamples: [\"Natural Stone Institute (standard developer, with the Natural Stone Council)\", \"NSF Certification LLC (certifier)\"],\n sources: [{ label: \"Natural Stone Institute — Sustainability\", url: \"https://www.naturalstoneinstitute.org\" }],\n supportsClaim: \"A stone quarry or processing facility has been third-party certified to ANSI/NSC 373 for sustainable production of natural dimension stone — covering water, energy, site and habitat management, waste, worker health and safety, and community — at Bronze, Silver, Gold, or Platinum level, with a companion chain-of-custody standard linking certified stone to projects.\",\n doesNotSupport: [\"That stone from the producer's non-certified quarries or facilities is covered.\", \"Product performance, embodied carbon, or chemical-safety claims for the stone.\", \"Certified-origin claims for a specific shipment without the chain-of-custody documentation.\"],\n requiredFields: [\"facility_scope\", \"certification_level\", \"certificate_number\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Certification applies per quarry or processing facility; the level (Bronze–Platinum) reflects points earned.\", \"A separate chain-of-custody certificate is what connects certified stone to a specific project or product.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"nsf_ansi_347_certificate\",\n canonicalName: \"NSF/ANSI 347 Certificate\",\n aliases: [\"NSF/ANSI 347\", \"NSF ANSI 347 Certified\", \"Sustainability Assessment for Single Ply Roofing Membranes\", \"NSF 347 Certified\", \"NSF/ANSI 347 Silver\", \"NSF/ANSI 347 Gold\", \"NSF/ANSI 347 Platinum\"],\n category: \"multi_attribute\",\n issuerExamples: [\"NSF Certification LLC\", \"SCS Global Services\"],\n sources: [{ label: \"NSF — Sustainability Standards\", url: \"https://www.nsf.org\" }],\n supportsClaim: \"A single-ply roofing membrane product is certified to NSF/ANSI 347, a point-based multi-attribute sustainability assessment covering product design, product manufacturing, membrane durability, corporate governance, and innovation, at Conformant, Silver, Gold, or Platinum level.\",\n doesNotSupport: [\"Specific single-attribute claims (recycled content percentage, VOC emissions, carbon footprint) — those need their own evidence even if they earned points here.\", \"Roofing system performance claims such as reflectivity ratings or wind uplift, which are covered by other programmes.\", \"Claims for membrane products outside the certified product scope.\"],\n requiredFields: [\"certificate_number\", \"certification_level\", \"product_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Point-based multi-attribute standard: two certified membranes can earn their points in very different ways, so the level alone hides the detail.\", \"Follows the same pattern as NSF/ANSI 140 (carpet), 332 (resilient flooring), 336 (fabrics), and 342 (wallcoverings) — category-specific standards, not interchangeable.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"rainforest_alliance_certificate\",\n canonicalName: \"Rainforest Alliance Certificate\",\n aliases: [\"Rainforest Alliance Certified\", \"Rainforest Alliance Certification\", \"Rainforest Alliance Sustainable Agriculture Standard\", \"Rainforest Alliance Seal\"],\n category: \"material_origin\",\n issuerExamples: [\"Rainforest Alliance (via authorized certification bodies)\"],\n sources: [{ label: \"Rainforest Alliance\", url: \"https://www.rainforest-alliance.org\" }],\n supportsClaim: \"An agricultural raw material (relevant to interiors: natural rubber/latex, cork, and other natural fibres and crops) was produced on farms independently audited against the Rainforest Alliance Sustainable Agriculture Standard — covering forest and ecosystem protection, farming practices, and human rights and livelihoods — with supply-chain requirements governing how certified volumes are tracked and claimed.\",\n doesNotSupport: [\"Organic certification — Rainforest Alliance is not an organic standard.\", \"That 100% of the material in the product is certified — some supply chains use mass-balance or partial-content rules, so the certified percentage matters.\", \"Environmental impacts of processing and manufacturing after the farm, or the finished product's chemical safety.\"],\n requiredFields: [\"certificate_holder\", \"certified_crop_or_material\", \"certificate_number\", \"valid_until\", \"traceability_type\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Check the traceability type on the certificate: identity-preserved, segregated, and mass-balance sourcing support different strength claims.\", \"Seal-use rules vary by crop and certified percentage; the certificate, not the logo, defines what is covered.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"responsible_wool_standard_certificate\",\n canonicalName: \"Responsible Wool Standard Certificate\",\n aliases: [\"Responsible Wool Standard\", \"RWS Certified\", \"RWS Certified Wool\", \"Textile Exchange Responsible Wool Standard\"],\n category: \"material_origin\",\n issuerExamples: [\"Textile Exchange (standard owner; certification via approved bodies such as Control Union)\"],\n sources: [{ label: \"Textile Exchange — Responsible Wool Standard\", url: \"https://textileexchange.org\" }],\n supportsClaim: \"Wool in the product originates from farms independently certified to the Responsible Wool Standard for animal welfare (including a prohibition on mulesing) and land management practices, with chain-of-custody certification (scope and transaction certificates) tracking the certified wool through each supply-chain stage.\",\n doesNotSupport: [\"Organic wool claims — RWS is a welfare and land-management standard, not an organic standard.\", \"Chemical-safety claims about dyeing, finishing, or the final textile.\", \"Claims for products whose supply chain lacks valid scope and transaction certificates at every stage.\"],\n requiredFields: [\"scope_certificate_number\", \"certified_organization\", \"certified_material_percentage\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Every stage from farm to final product needs chain-of-custody coverage; a broken chain breaks the claim.\", \"Check the certified wool percentage — blended products may contain a mix of RWS and non-RWS wool.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"leather_working_group_certificate\",\n canonicalName: \"Leather Working Group Certificate\",\n aliases: [\"Leather Working Group\", \"LWG Certified\", \"LWG Gold Rated\", \"LWG Silver Rated\", \"LWG Bronze Rated\", \"LWG Audited\", \"LWG Rated Tannery\"],\n category: \"material_origin\",\n issuerExamples: [\"Leather Working Group (via approved auditors)\"],\n sources: [{ label: \"Leather Working Group\", url: \"https://www.leatherworkinggroup.com\" }],\n supportsClaim: \"The leather was processed at a leather manufacturing facility (tannery) independently audited against the Leather Working Group's environmental audit protocol — covering water and energy use, chemical management, waste, and traceability of incoming hides — with a published rating (Audited, Bronze, Silver, or Gold).\",\n doesNotSupport: [\"Animal welfare claims — LWG audits the tannery's environmental performance, not how animals were raised or slaughtered.\", \"Deforestation-free or farm-level sourcing claims, which depend on hide traceability beyond the audit's core scope.\", \"Chemical safety of the finished leather product, which needs separate testing (e.g. restricted-substances evidence).\"],\n requiredFields: [\"audited_facility\", \"audit_rating\", \"audit_date\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"The rating applies to the tannery, not the brand or product; confirm the product's leather actually comes from the rated facility.\", \"Ratings differ meaningfully — Gold reflects strong environmental performance, while 'Audited' means assessed without reaching a medal rating.\", \"Traceability scores cover hides into the tannery and are improving, but LWG is not by itself proof of farm-level origin.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"watersense_label\",\n canonicalName: \"WaterSense Label\",\n aliases: [\"EPA WaterSense\", \"WaterSense Labeled\", \"WaterSense Certified\", \"US EPA WaterSense Label\"],\n category: \"regulatory\",\n issuerExamples: [\"US Environmental Protection Agency (via EPA-licensed certifying bodies such as IAPMO R&T and ICC-ES)\"],\n sources: [{ label: \"US EPA — WaterSense\", url: \"https://www.epa.gov/watersense\" }],\n supportsClaim: \"The plumbing product or irrigation control is independently certified to the EPA WaterSense specification for its category, meaning it uses at least 20% less water than the standard for comparable products while meeting the specification's performance criteria.\",\n doesNotSupport: [\"Site or corporate water stewardship claims — WaterSense covers the product's water use, not the manufacturer's operations.\", \"Anything about the product's materials, chemical content, or embodied carbon.\", \"Energy-efficiency claims, except indirectly where hot-water savings apply.\"],\n requiredFields: [\"product_model\", \"certifying_body\", \"certification_date\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: false,\n caveats: [\"The label is voluntary and US-based; verify the specific model is currently listed in the EPA WaterSense product registry, since listings can be withdrawn.\", \"LEED's indoor water prerequisite requires WaterSense labels for fixture types that have a specification — relevant for US projects.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"bes_6001_certificate\",\n canonicalName: \"BES 6001 Responsible Sourcing Certificate\",\n aliases: [\"BES 6001\", \"BRE BES 6001\", \"BES 6001 Certified\", \"Responsible Sourcing of Construction Products\", \"BES 6001 Pass Rating\", \"BES 6001 Good Rating\", \"BES 6001 Very Good Rating\", \"BES 6001 Excellent Rating\"],\n category: \"material_origin\",\n issuerExamples: [\"BRE Global\"],\n sources: [{ label: \"BRE Group — BES 6001\", url: \"https://bregroup.com\" }],\n supportsClaim: \"A construction product has been certified under BRE's BES 6001 framework standard for responsible sourcing, verifying the manufacturer's organizational governance, supply-chain management of the product's constituent materials, and management of environmental and social aspects, with a performance rating of Pass, Good, Very Good, or Excellent.\",\n doesNotSupport: [\"Low embodied carbon or any quantified environmental impact of the product — that requires an EPD.\", \"Chemical content or emissions claims for the product.\", \"Claims for products outside the certificate's stated product scope.\"],\n requiredFields: [\"certificate_number\", \"rating_level\", \"product_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"BES 6001 ratings feed BREEAM's responsible-sourcing (Mat) credits, with higher ratings earning more — record the rating, not just the certificate.\", \"It certifies management and traceability of constituent-material supply chains, not the measured impacts of the product itself.\", \"Primarily a UK standard; recognition outside BREEAM-based schemes is limited.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"bes_6002_certificate\",\n canonicalName: \"BES 6002 Ethical Labour Sourcing Verification\",\n aliases: [\"BES 6002\", \"BRE BES 6002\", \"Ethical Labour Sourcing Standard\", \"BES 6002 Verified\", \"Ethical Labour Sourcing Verification\"],\n category: \"social_organizational\",\n issuerExamples: [\"BRE Global\"],\n sources: [{ label: \"BRE Group — BES 6002\", url: \"https://bregroup.com\" }],\n supportsClaim: \"An organization has been independently verified against BRE's BES 6002 Ethical Labour Sourcing standard, assessing the maturity of its processes for addressing ethical labour risks — including modern slavery due diligence — in its own operations and sourcing.\",\n doesNotSupport: [\"A guarantee that no labour abuses exist anywhere in the supply chain — it verifies the organization's management processes and their maturity, not every supplier site.\", \"Environmental claims of any kind.\", \"Product-level claims — verification applies to the organization.\"],\n requiredFields: [\"verified_organization\", \"verification_number\", \"assessment_date\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"BES 6002 is a maturity-based verification of management processes, which is meaningfully weaker than site-level social audits of actual working conditions.\", \"Primarily a UK standard, developed alongside BES 6001 and modern-slavery due-diligence expectations.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"greenscreen_certified_certificate\",\n canonicalName: \"GreenScreen Certified\",\n aliases: [\"GreenScreen Certified\", \"GreenScreen Certified Bronze\", \"GreenScreen Certified Silver\", \"GreenScreen Certified Gold\", \"GreenScreen for Safer Chemicals\", \"Clean Production Action GreenScreen\"],\n category: \"ingredient_chemical\",\n issuerExamples: [\"Clean Production Action\"],\n sources: [{ label: \"Clean Production Action — GreenScreen Certified\", url: \"https://www.greenscreenchemicals.org\" }],\n supportsClaim: \"Chemicals intentionally added to the product were hazard-assessed against GreenScreen benchmark criteria by the programme, with chemicals of highest concern (including all intentionally added PFAS) excluded; Bronze, Silver, and Gold apply progressively stricter assessment depth and exclusions per the product-category standard.\",\n doesNotSupport: [\"A claim that the product is non-toxic or hazard-free — GreenScreen assesses and benchmarks hazards; it does not eliminate them all.\", \"Risk or exposure conclusions — hazard assessment says what a chemical could do, not what users are actually exposed to.\", \"VOC emissions performance, carbon footprint, recycled content, or any circularity attribute.\", \"A bare 'PFAS free' marketing claim made without naming the certification level and product scope.\"],\n requiredFields: [\"certificate_level\", \"certificate_number\", \"standard_version\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Level names and exclusion thresholds are defined per product-category standard (e.g. Furniture & Fabrics, Cleaners & Degreasers) — always record which standard and version the certificate was issued under.\", \"Hazard is not risk: a benchmarked hazard assessment does not measure exposure in use.\", \"PFAS exclusion applies to intentionally added PFAS per the standard's thresholds; verify the standard version before repeating a PFAS-free claim.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"safer_choice_certification\",\n canonicalName: \"EPA Safer Choice\",\n aliases: [\"Safer Choice\", \"EPA Safer Choice\", \"US EPA Safer Choice\", \"Safer Choice Certified\", \"Safer Choice Label\", \"Design for the Environment\"],\n category: \"ingredient_chemical\",\n issuerExamples: [\"US Environmental Protection Agency\"],\n sources: [{ label: \"US EPA — Safer Choice\", url: \"https://www.epa.gov/saferchoice\" }],\n supportsClaim: \"Every intentionally added ingredient in the product was reviewed against EPA's Safer Choice criteria and found to be among the safer available chemicals for its functional class; products are listed publicly by EPA and subject to periodic audit.\",\n doesNotSupport: [\"A claim that the product is non-toxic, chemical-free, or free of all hazards — 'safer for its functional class' is a comparative judgement, not an absence claim.\", \"Exclusion of any specific named chemical (e.g. PFAS-free) unless separately documented.\", \"Carbon footprint, recycled content, or other lifecycle attributes.\", \"Relevance to most durable building materials — the label predominantly covers cleaning, maintenance, and similar formulated products.\"],\n requiredFields: [\"product_scope\", \"partner_company\", \"listing_status\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Verify the product appears on EPA's current Safer Choice product list — the listing, not the logo on packaging, is the evidence.\", \"Safer Choice evaluates ingredients per functional class; two certified products can still differ substantially in hazard profile.\", \"Formerly branded Design for the Environment (DfE); the DfE label now applies to antimicrobial products specifically.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"usda_certified_biobased_label\",\n canonicalName: \"USDA Certified Biobased Product Label\",\n aliases: [\"USDA BioPreferred\", \"USDA Certified Biobased Product\", \"USDA Certified Biobased\", \"BioPreferred Program\", \"USDA Biobased Label\"],\n category: \"material_origin\",\n issuerExamples: [\"US Department of Agriculture (BioPreferred Program)\"],\n sources: [{ label: \"USDA BioPreferred Program\", url: \"https://www.biopreferred.gov\" }],\n supportsClaim: \"Independent laboratory testing to ASTM D6866 (radiocarbon analysis) verified the percentage of the product's carbon that comes from recent biological sources, and USDA certified the product to display that percentage, which must meet the minimum for its product category.\",\n doesNotSupport: [\"Biodegradability or compostability — biobased carbon content says nothing about how the product breaks down.\", \"A lower carbon footprint — biobased origin does not by itself prove lower lifecycle emissions.\", \"That the product is 100% biobased — the label states a specific verified percentage, which can be as low as the category minimum.\", \"Anything about how the biomass was grown or sourced (no farming, forestry, or land-use criteria).\"],\n requiredFields: [\"certification_number\", \"biobased_content_percentage\", \"product_category\", \"certification_date\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: false,\n caveats: [\"Certification has no fixed expiry, but reformulation invalidates the tested percentage and USDA conducts periodic audits — confirm the certified formulation matches the shipping product.\", \"Minimum required biobased content varies by product category; always read the actual percentage on the label, not just the mark.\", \"Distinguish the certified label from mere BioPreferred catalog listing for federal procurement.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"ok_biobased_certificate\",\n canonicalName: \"OK Biobased Certificate\",\n aliases: [\"OK Biobased\", \"OK biobased\", \"TÜV Austria OK biobased\", \"OK biobased certified\"],\n category: \"material_origin\",\n issuerExamples: [\"TÜV Austria (formerly Vinçotte)\"],\n sources: [{ label: \"TÜV Austria — OK biobased\", url: \"https://www.tuv-at.be\" }],\n supportsClaim: \"Independent testing of biobased (renewable) carbon share verified by TÜV Austria, expressed as a one-to-four-star rating: one star for 20–40% renewable carbon, two for 40–60%, three for 60–80%, and four stars above 80%.\",\n doesNotSupport: [\"Biodegradability or compostability — TÜV Austria issues those as separate marks (OK compost, OK biodegradable); OK biobased proves neither.\", \"A lower carbon footprint — renewable carbon origin does not by itself prove lower lifecycle emissions.\", \"Full biobased composition — even four stars means above 80%, not 100%.\", \"Anything about how the biomass was grown or sourced.\"],\n requiredFields: [\"certificate_number\", \"star_rating\", \"biobased_carbon_percentage\", \"valid_until\", \"product_scope\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Always capture the star rating and the underlying percentage — 'OK biobased' alone spans 20% to over 80% renewable carbon.\", \"The star rating measures the share of renewable carbon in total carbon, so products with little organic carbon overall need scrutiny of scope.\", \"Do not conflate with TÜV Austria's OK compost or OK biodegradable marks, which certify different properties.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"energy_star_certificate\",\n canonicalName: \"ENERGY STAR Certificate\",\n aliases: [\"ENERGY STAR\", \"ENERGY STAR Certified\", \"Energy Star Certified\", \"ENERGY STAR Qualified\", \"ENERGY STAR Most Efficient\"],\n category: \"lifecycle_carbon\",\n issuerExamples: [\"US Environmental Protection Agency (programme owner)\", \"EPA-recognized certification bodies\"],\n sources: [{ label: \"US EPA — ENERGY STAR\", url: \"https://www.energystar.gov\" }],\n supportsClaim: \"The specific product model meets US EPA energy-efficiency specifications for its product category, verified through EPA-recognized third-party certification and listed in the public ENERGY STAR product registry.\",\n doesNotSupport: [\"Anything about the product's materials, chemical ingredients, recycled content, or manufacturing footprint.\", \"That the product is the most efficient available — it meets a category threshold, not a best-in-class ranking.\", \"Embodied-carbon or whole-lifecycle claims — ENERGY STAR measures in-use energy consumption only.\", \"Organization-level claims about the manufacturer's climate performance.\"],\n requiredFields: [\"model_identifier\", \"product_category\", \"specification_version\", \"certification_body\"],\n minimumSourceAuthority: \"official_registry\",\n expiryRelevant: true,\n caveats: [\"Specifications are revised over time and models are delisted when a new version takes effect — always check the current registry listing, not a dated logo.\", \"'ENERGY STAR Partner' is a programme membership, not a product certification — only registry-listed models are certified.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"epeat_registration\",\n canonicalName: \"EPEAT Registration\",\n aliases: [\"EPEAT Registered\", \"EPEAT Bronze\", \"EPEAT Silver\", \"EPEAT Gold\", \"EPEAT Climate+\", \"EPEAT Climate Plus\", \"Electronic Product Environmental Assessment Tool\"],\n category: \"lifecycle_carbon\",\n issuerExamples: [\"Global Electronics Council\"],\n sources: [{ label: \"Global Electronics Council — EPEAT Registry\", url: \"https://www.epeat.net\" }],\n supportsClaim: \"The electronic product is registered in the Global Electronics Council's EPEAT registry as meeting the required environmental criteria for its category, at a stated tier (Bronze, Silver, or Gold) based on optional criteria met; the Climate+ designation adds climate-focused criteria including manufacturer emissions commitments.\",\n doesNotSupport: [\"Full verification of every criterion — conformity relies on manufacturer declarations subject to spot verification by the registry's assurance scheme, not per-product auditing.\", \"Material-health or chemical-safety proof — EPEAT includes some substance criteria but is not an ingredient-level assessment like an HPD or Declare label.\", \"Claims outside registered countries — registrations are country-specific.\", \"Anything about non-electronic products from the same brand.\"],\n requiredFields: [\"registration_tier\", \"product_category\", \"registry_record_id\", \"registered_countries\"],\n minimumSourceAuthority: \"official_registry\",\n expiryRelevant: true,\n caveats: [\"Tiers differ meaningfully: Bronze meets required criteria only; Silver and Gold add increasing shares of optional criteria — always state the tier.\", \"Climate+ is a separate designation layered on top of the tier, not a fourth tier.\", \"Registrations can be archived or suspended; the live registry is the source of truth.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"dlc_product_listing\",\n canonicalName: \"DesignLights Consortium Qualified Product Listing\",\n aliases: [\"DesignLights Consortium\", \"DesignLights Consortium Qualified\", \"DLC Qualified\", \"DLC Listed\", \"DLC Premium\", \"DLC Standard\"],\n category: \"lifecycle_carbon\",\n issuerExamples: [\"DesignLights Consortium\"],\n sources: [{ label: \"DesignLights Consortium — Qualified Products Lists\", url: \"https://www.designlights.org\" }],\n supportsClaim: \"The commercial lighting product appears on a DesignLights Consortium Qualified Products List, meaning it met the DLC's efficacy and performance requirements for its category at the technical-requirements version in force; DLC Premium indicates higher efficacy requirements than DLC Standard.\",\n doesNotSupport: [\"Anything about the luminaire's materials, chemical content, recyclability, or manufacturing footprint.\", \"Residential product claims — DLC covers commercial and industrial lighting categories.\", \"That the fixture saves energy in a specific installation — savings depend on design, controls, and what it replaces.\", \"Organization-level claims about the lighting manufacturer.\"],\n requiredFields: [\"product_identifier\", \"qualification_classification\", \"technical_requirements_version\", \"listing_status\"],\n minimumSourceAuthority: \"official_registry\",\n expiryRelevant: true,\n caveats: [\"Distinguish DLC Standard from DLC Premium — Premium requires higher efficacy and is often the threshold for larger utility rebates.\", \"Products are delisted when technical requirements are updated and the product is not requalified — check the live QPL.\", \"DLC listing is primarily a utility-rebate eligibility mechanism, which is why it appears on spec sheets.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"ecovadis_rating\",\n canonicalName: \"EcoVadis Rating\",\n aliases: [\"EcoVadis\", \"EcoVadis Rating\", \"EcoVadis Medal\", \"EcoVadis Bronze\", \"EcoVadis Silver\", \"EcoVadis Gold\", \"EcoVadis Platinum\", \"EcoVadis Rated\"],\n category: \"social_organizational\",\n issuerExamples: [\"EcoVadis SAS\"],\n sources: [{ label: \"EcoVadis\", url: \"https://ecovadis.com\" }],\n supportsClaim: \"The company received an EcoVadis scorecard (0–100) assessing its management practices across environment, labor and human rights, ethics, and sustainable procurement, based on analyst review of company-submitted documentation; medals (Bronze/Silver/Gold/Platinum) reflect percentile position among rated companies.\",\n doesNotSupport: [\"Anything about a specific product or material — the rating covers company management systems, not products.\", \"On-site audit findings — the assessment is a documentation review, not a facility inspection.\", \"Absolute sustainability performance — medals are percentile-based relative to other rated companies.\", \"Currency beyond the validity window — scorecards are valid for 12 months.\"],\n requiredFields: [\"overall_score\", \"medal_level\", \"assessment_date\", \"rated_entity_scope\"],\n minimumSourceAuthority: \"programme_operator\",\n expiryRelevant: true,\n caveats: [\"State both the score and the medal — medal thresholds are percentile-based and have been tightened over time, so the same score can map to different medals in different years.\", \"Check which legal entity was rated — a subsidiary's medal does not automatically cover the whole group, or vice versa.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"sbti_target_validation\",\n canonicalName: \"SBTi Target Validation\",\n aliases: [\"Science Based Targets initiative\", \"Science Based Targets\", \"Science-Based Targets\", \"SBTi Validated\", \"SBTi Approved\", \"Validated Science Based Target\", \"SBTi Net-Zero Target\"],\n category: \"social_organizational\",\n issuerExamples: [\"Science Based Targets initiative\"],\n sources: [{ label: \"Science Based Targets initiative\", url: \"https://sciencebasedtargets.org\" }],\n supportsClaim: \"The company's greenhouse-gas emission-reduction targets were validated by the Science Based Targets initiative as meeting its criteria for alignment with limiting warming (near-term targets, and separately net-zero targets under the SBTi Net-Zero Standard); validation status is listed on the SBTi's public dashboard.\",\n doesNotSupport: [\"That the company has actually reduced emissions — validation covers the targets, not performance against them.\", \"Anything about product-level carbon footprints or specific materials.\", \"Carbon-neutrality claims — a validated target is a commitment trajectory, not an offset or neutrality certification.\", \"'Committed' status — companies that have only committed to set targets have not had anything validated.\"],\n requiredFields: [\"company_name\", \"target_type\", \"target_year\", \"validation_status\"],\n minimumSourceAuthority: \"official_registry\",\n expiryRelevant: true,\n caveats: [\"Distinguish near-term targets from net-zero targets — they are validated against different criteria.\", \"Validation status can be removed if a company fails to meet SBTi's requirements over time, and targets must be periodically updated — check the live dashboard.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"cdp_disclosure_score\",\n canonicalName: \"CDP Disclosure Score\",\n aliases: [\"Carbon Disclosure Project\", \"CDP Score\", \"CDP A List\", \"CDP Climate Change Score\", \"CDP Disclosure\", \"CDP Rating\"],\n category: \"social_organizational\",\n issuerExamples: [\"CDP (formerly the Carbon Disclosure Project)\"],\n sources: [{ label: \"CDP\", url: \"https://www.cdp.net\" }],\n supportsClaim: \"The company responded to CDP's annual questionnaire for a stated theme (climate change, water security, or forests) and received a letter grade from A to D- reflecting the completeness of its disclosure and the quality of its environmental management for that theme and reporting year.\",\n doesNotSupport: [\"Low absolute emissions or strong environmental performance — the grade primarily rewards disclosure completeness and management practices.\", \"Anything about specific products or materials.\", \"Coverage of themes not scored — a climate A grade says nothing about water or forests.\", \"Currency beyond the scored year — grades are re-issued annually.\"],\n requiredFields: [\"company_name\", \"questionnaire_theme\", \"score_grade\", \"reporting_year\"],\n minimumSourceAuthority: \"programme_operator\",\n expiryRelevant: true,\n caveats: [\"Always state the theme and year — 'CDP A List' without them is unverifiable.\", \"An F indicates failure to respond when requested, not measured poor performance.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"gri_sustainability_report\",\n canonicalName: \"GRI Sustainability Report\",\n aliases: [\"Global Reporting Initiative\", \"GRI Standards\", \"GRI Report\", \"Reports under GRI Standards\", \"GRI Standards Report\", \"prepared in accordance with GRI\"],\n category: \"social_organizational\",\n issuerExamples: [\"Global Reporting Initiative (standards setter); the reporting company self-publishes the report\"],\n sources: [{ label: \"Global Reporting Initiative\", url: \"https://www.globalreporting.org\" }],\n supportsClaim: \"The company publishes a sustainability report structured according to the GRI Standards — a widely used set of disclosure topics and formats. It proves the company discloses in a recognized format, nothing more.\",\n doesNotSupport: [\"Any score, grade, rating, or pass/fail result — GRI is a disclosure and reporting framework, NOT a scored assessment; 'reports under GRI' is not evidence of performance the way 'scored 72/100 on EcoVadis' is.\", \"Verification or certification by GRI — GRI does not audit, approve, or certify reports; external assurance is a separate, optional engagement with an assurance provider.\", \"Good sustainability performance — a company can transparently report poor performance in perfect GRI format.\", \"Anything about specific products or materials.\"],\n requiredFields: [\"reporting_entity\", \"reporting_period\", \"gri_standards_edition\", \"external_assurance_status\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n expiryRelevant: false,\n caveats: [\"Reports cover a specific reporting period — check recency, since there is no formal validity window.\", \"Note whether the report received external assurance and at what level; unassured GRI reporting is entirely self-declared.\", \"'In accordance with' and 'with reference to' GRI are different conformance levels — the latter is looser.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"gresb_assessment\",\n canonicalName: \"GRESB Assessment\",\n aliases: [\"Global Real Estate Sustainability Benchmark\", \"GRESB Assessment\", \"GRESB Rating\", \"GRESB Benchmark\", \"GRESB Real Estate Assessment\", \"GRESB Star Rating\"],\n category: \"social_organizational\",\n issuerExamples: [\"GRESB BV\"],\n sources: [{ label: \"GRESB\", url: \"https://www.gresb.com\" }],\n supportsClaim: \"The real-estate or infrastructure entity (typically a fund, portfolio, or company) participated in the annual GRESB assessment and received a score (0–100) and star rating (1–5) benchmarking its ESG management and performance against peers for that assessment year.\",\n doesNotSupport: [\"Anything about a specific building, product, or material — GRESB assesses portfolios and entities.\", \"Absolute performance — star ratings are quintiles relative to the peer group, so 5 stars means top 20% of participants, not a fixed standard.\", \"Claims by product manufacturers — GRESB participation belongs to property owners and investors, and rarely transfers meaning to a materials context.\", \"Currency beyond the assessment year — results refresh annually.\"],\n requiredFields: [\"assessed_entity\", \"assessment_year\", \"gresb_score\", \"star_rating\"],\n minimumSourceAuthority: \"programme_operator\",\n expiryRelevant: true,\n caveats: [\"Confirm which entity was assessed — a parent fund's GRESB result does not describe an individual asset or a supplier to it.\", \"Peer groups change composition year to year, which moves the meaning of a given star rating.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"energy_management_certificate\",\n canonicalName: \"Energy Management System Certificate\",\n aliases: [\"ISO 50001\", \"ISO 50001 Certified\", \"ISO 50001 certified\", \"ISO 50001 Energy Management\", \"certified energy management system\"],\n category: \"social_organizational\",\n issuerExamples: [\"Accredited certification bodies (e.g., BSI, TÜV, SGS, DNV) certifying against ISO 50001\"],\n sources: [{ label: \"ISO — ISO 50001 Energy management\", url: \"https://www.iso.org/iso-50001-energy-management.html\" }],\n supportsClaim: \"The organization operates a certified energy management system conforming to ISO 50001 at the sites named in the certificate scope — meaning it has audited processes for monitoring energy use and pursuing continual improvement in energy performance.\",\n doesNotSupport: [\"That the organization's energy use or carbon footprint is actually low — the standard certifies a management process, not an outcome level.\", \"That the products made at certified sites are energy-efficient or low-carbon.\", \"Coverage of sites outside the certificate scope.\", \"Anything about materials, chemistry, or other environmental topics — this is an energy-management standard only.\"],\n requiredFields: [\"certificate_number\", \"certification_body\", \"certified_sites_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Certificates run on a three-year cycle with surveillance audits — check validity dates and the accreditation of the certification body.\", \"Scope matters: certification may cover one factory, not the whole company.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"occupational_health_safety_management_certificate\",\n canonicalName: \"Occupational Health & Safety Management System Certificate\",\n aliases: [\"ISO 45001\", \"ISO 45001 Certified\", \"ISO 45001 certified\", \"OHSAS 18001\", \"certified occupational health and safety management\"],\n category: \"social_organizational\",\n issuerExamples: [\"Accredited certification bodies (e.g., BSI, TÜV, SGS, DNV) certifying against ISO 45001\"],\n sources: [{ label: \"ISO — ISO 45001 Occupational health and safety\", url: \"https://www.iso.org/iso-45001-occupational-health-and-safety.html\" }],\n supportsClaim: \"The organization operates a certified occupational health and safety management system conforming to ISO 45001 at the sites named in the certificate scope — audited processes for identifying workplace hazards and reducing risks to workers.\",\n doesNotSupport: [\"Any environmental claim whatsoever — ISO 45001 addresses worker health and safety, not environment, energy, or materials, even though it is often listed among 'sustainability certifications'.\", \"That workplaces are injury-free — it certifies a risk-management process, not a safety record.\", \"Fair-wage, forced-labour, or broader social-accountability claims — those are the territory of standards like SA8000, not ISO 45001.\", \"Coverage of sites or suppliers outside the certificate scope.\"],\n requiredFields: [\"certificate_number\", \"certification_body\", \"certified_sites_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"OHSAS 18001 was the predecessor standard, withdrawn in 2021 — certificates citing it are outdated.\", \"Certificates run on a three-year cycle with surveillance audits; check validity and site scope.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"iso_14064_ghg_verification\",\n canonicalName: \"ISO 14064 GHG Inventory Verification\",\n aliases: [\"ISO 14064\", \"ISO 14064-1\", \"ISO 14064-3 Verified\", \"verified greenhouse gas inventory\", \"verified GHG inventory\", \"organizational GHG inventory verification\"],\n category: \"social_organizational\",\n issuerExamples: [\"Accredited GHG verification bodies (e.g., SGS, Bureau Veritas, TÜV) verifying against ISO 14064-3\"],\n sources: [{ label: \"ISO — ISO 14064-1 Greenhouse gases\", url: \"https://www.iso.org/standard/66453.html\" }],\n supportsClaim: \"The organization quantified its greenhouse-gas inventory for a stated reporting period and organizational boundary following ISO 14064-1, and — where an ISO 14064-3 verification statement exists — an independent body verified that inventory to a stated assurance level.\",\n doesNotSupport: [\"That emissions are low or falling — verification confirms the inventory was measured and reported correctly, not that the numbers are good.\", \"Product-level carbon footprints — that is ISO 14067 territory, covered by a product carbon footprint report, not this.\", \"Carbon-neutrality claims — an inventory is an input to such claims, never the claim itself.\", \"Periods or entities outside the stated reporting period and organizational boundary.\"],\n requiredFields: [\"reporting_period\", \"organizational_boundary\", \"verification_body\", \"assurance_level\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"An ISO 14064-1 inventory alone is self-prepared — insist on the ISO 14064-3 verification statement from an independent body.\", \"Check the assurance level (limited vs reasonable) — they carry very different weight.\", \"Verification applies only to the stated reporting period; last year's statement says nothing about this year.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"co2_performance_ladder_certificate\",\n canonicalName: \"CO2 Performance Ladder Certificate\",\n aliases: [\"CO2 Performance Ladder\", \"CO2-Prestatieladder\", \"SKAO CO2 Performance Ladder\", \"CO2 Performance Ladder Level 3\", \"CO2 Performance Ladder Level 5\"],\n category: \"social_organizational\",\n issuerExamples: [\"SKAO (Foundation for Climate Friendly Procurement and Business — scheme owner)\", \"Accredited certification bodies issuing certificates\"],\n sources: [{ label: \"SKAO — CO2 Performance Ladder\", url: \"https://www.co2-prestatieladder.nl\" }],\n supportsClaim: \"The organization holds a certificate at a stated level (1–5) of the CO2 Performance Ladder, meaning an accredited body audited its carbon accounting, reduction targets, transparency, and participation against that level's requirements; levels 4–5 extend the scope to value-chain emissions.\",\n doesNotSupport: [\"That the organization's emissions are low in absolute terms — the ladder certifies management maturity and reduction effort, not an emissions level.\", \"Anything about specific products or materials.\", \"Equivalence across levels — level 3 covers the organization's own emissions, while only levels 4–5 address the value chain.\", \"Relevance outside its procurement context — it is primarily a Dutch and Belgian public-procurement scheme.\"],\n requiredFields: [\"ladder_level\", \"certificate_number\", \"certification_body\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\"Always state the level — the ladder's five levels differ sharply in scope and ambition.\", \"Certificates require annual audits; check currency with the certification body or SKAO's register.\", \"Its main function is tender award advantage in Dutch and Belgian public procurement, which explains its appearance on company materials.\"],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"fairtrade_certificate\",\n canonicalName: \"Fairtrade Certificate\",\n aliases: [\n \"Fairtrade Certified\",\n \"Fair Trade Certified\",\n \"Fairtrade International\",\n \"Fair Trade USA\",\n \"Fairtrade Cotton Mark\",\n \"Fairtrade Textile Standard\",\n \"Fairtrade Mark\",\n ],\n category: \"social_organizational\",\n issuerExamples: [\"Fairtrade International (audited by FLOCERT)\", \"Fair Trade USA (audited by accredited certifiers such as SCS Global Services)\"],\n sources: [\n { label: \"Fairtrade International\", url: \"https://www.fairtrade.net\" },\n { label: \"Fair Trade USA\", url: \"https://www.fairtradecertified.org\" },\n ],\n supportsClaim: \"Independent audits confirm that producers of the certified ingredient or material met the applicable Fairtrade Standard — minimum prices, Fairtrade Premium payments, and core labour protections including prohibition of child and forced labour — within the certified supply-chain scope.\",\n doesNotSupport: [\n \"Any product environmental attribute — emissions, carbon footprint, recycled content, or chemical safety.\",\n \"Organic status — Fairtrade and organic certification are separate schemes.\",\n \"That the whole product is fair trade when only one ingredient is certified — a Fairtrade Cotton Mark on a blended textile covers the cotton, not the finished article.\",\n \"Labour conditions at the brand's own factories, unless the Fairtrade Textile Standard specifically applies to those processing stages.\",\n ],\n requiredFields: [\"certificate_id\", \"certified_entity\", \"standard_scope\", \"product_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\n \"Fairtrade International and Fair Trade USA have been separate schemes since 2011 with differing standards and scopes — identify which one issued the certificate.\",\n \"The Cotton Mark requires physically traceable cotton; some other Fairtrade ingredient models permit mass-balance sourcing, so check the traceability model on the certificate.\",\n \"The Fairtrade Textile Standard covers labour conditions in textile processing (e.g. cut-make-trim); it is a different claim from Fairtrade-certified fibre.\",\n ],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"goodweave_certificate\",\n canonicalName: \"GoodWeave Certification\",\n aliases: [\"GoodWeave Certified\", \"GoodWeave Label\", \"GoodWeave International\", \"GoodWeave Standard\"],\n category: \"social_organizational\",\n issuerExamples: [\"GoodWeave International\"],\n sources: [{ label: \"GoodWeave International\", url: \"https://goodweave.org\" }],\n supportsClaim: \"Independent, unannounced inspections across the production supply chain verify that no child labour, forced labour, or bonded labour was used to make the certified rug, carpet, or home textile, with each certified product carrying a uniquely numbered GoodWeave label.\",\n doesNotSupport: [\n \"Any environmental attribute — fibres, dyes, VOC emissions, or carbon footprint.\",\n \"Fair-trade pricing, premiums, or living wages — GoodWeave is a child/forced-labour certification, not a fair-trade price scheme.\",\n \"Material origin or fibre content claims.\",\n ],\n requiredFields: [\"label_number\", \"licensed_entity\", \"product_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\n \"Each certified product carries a uniquely numbered label — verify the label number, not just the brand's licence.\",\n \"Historic scope is handmade rugs and carpets; coverage of other home textiles and apparel is newer, so confirm the product category is actually within the licence.\",\n \"Licensing fees fund child education and remediation programmes — a programme outcome, not an additional product attribute.\",\n ],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"wfto_guaranteed_fair_trade\",\n canonicalName: \"WFTO Guaranteed Fair Trade Verification\",\n aliases: [\"WFTO Guaranteed Fair Trade\", \"World Fair Trade Organization Guaranteed\", \"WFTO Guarantee System\", \"WFTO Verified Member\", \"Guaranteed Fair Trade Enterprise\"],\n category: \"social_organizational\",\n issuerExamples: [\"World Fair Trade Organization (WFTO)\"],\n sources: [{ label: \"World Fair Trade Organization\", url: \"https://wfto.com\" }],\n supportsClaim: \"The organization — not an individual product — has passed the WFTO Guarantee System (self-assessment, monitoring audit, and peer visits), verifying it operates as a mission-led fair trade enterprise practising the WFTO 10 Principles of Fair Trade across its business.\",\n doesNotSupport: [\n \"Product-level attributes of any kind — the verification attaches to the enterprise, not to specific products or materials.\",\n \"Ingredient-level supply-chain audits comparable to Fairtrade product certification.\",\n \"Any environmental performance claim about a product made or sold by the verified enterprise.\",\n ],\n requiredFields: [\"organization_name\", \"wfto_member_id\", \"guarantee_status\", \"last_monitoring_audit\"],\n minimumSourceAuthority: \"programme_operator\",\n expiryRelevant: true,\n caveats: [\n \"The Guarantee System combines self-assessment, monitoring audits, and peer visits — a lighter assurance model than independent per-product certification, so treat it as enterprise-level evidence.\",\n \"Distinguish 'Guaranteed' status from plain WFTO membership — only Guaranteed members have completed the Guarantee System.\",\n \"Status depends on the ongoing audit cycle; confirm the member is currently listed as Guaranteed on the WFTO register.\",\n ],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"fair_stone_certificate\",\n canonicalName: \"Fair Stone Certificate\",\n aliases: [\"Fair Stone Certified\", \"Fair Stone Partner\", \"Fair Stone Standard\", \"Fair Stone International Social Standard\"],\n category: \"social_organizational\",\n issuerExamples: [\"Fair Stone e.V. / WiN=WiN Fair Stone\"],\n sources: [{ label: \"Fair Stone\", url: \"https://fairstone.org\" }],\n supportsClaim: \"Suppliers registered under the Fair Stone international social standard implement ILO core labour conventions — no child or forced labour, occupational health and safety, and basic working conditions — in natural-stone quarries and processing factories, with implementation progress verified through independent audits and programme traceability.\",\n doesNotSupport: [\n \"Environmental impacts of quarrying — land use, water, dust, energy, or transport emissions are not assessed.\",\n \"Stone quality, technical performance, or geographic origin beyond the audited supply chain.\",\n \"Fair-trade pricing or premium payments — Fair Stone is a labour-conditions standard, not a price scheme.\",\n \"That a newly registered Fair Stone Partner's whole supply chain is already fully audited — implementation is staged.\",\n ],\n requiredFields: [\"partner_id\", \"implementation_status\", \"supply_chain_scope\", \"valid_until\"],\n minimumSourceAuthority: \"programme_operator\",\n expiryRelevant: true,\n caveats: [\n \"Fair Stone uses a step-by-step implementation model — distinguish a registered Partner early in implementation from a supply chain that has passed independent audits.\",\n \"Coverage applies to the specific quarries and factories in the registered chain, not to every product the trader sells.\",\n ],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"xertifix_certificate\",\n canonicalName: \"XertifiX Certificate\",\n aliases: [\"XertifiX Label\", \"XertifiX PLUS\", \"XertifiX PLUS Label\", \"XertifiX Certified\", \"XertifiX Standard\"],\n category: \"social_organizational\",\n issuerExamples: [\"XertifiX e.V.\"],\n sources: [{ label: \"XertifiX\", url: \"https://www.xertifix.de\" }],\n supportsClaim: \"Unannounced independent inspections of quarries and processing sites in Asia verify that the certified natural stone was produced without child labour or bonded labour and that sites are progressing on ILO core labour standards and workplace health and safety.\",\n doesNotSupport: [\n \"Environmental performance of quarrying or processing — no land, water, dust, or carbon assessment.\",\n \"Stone quality or technical performance.\",\n \"Labour conditions outside the audited quarries and factories, such as transport or downstream fabrication.\",\n \"Stone from regions outside the programme's Asian scope (primarily India, China, and Vietnam).\",\n ],\n requiredFields: [\"certificate_number\", \"label_level\", \"site_scope\", \"valid_until\"],\n minimumSourceAuthority: \"third_party_verified\",\n expiryRelevant: true,\n caveats: [\n \"Distinguish the standard XertifiX label from XertifiX PLUS — PLUS applies stricter criteria beyond the core child-labour and safety requirements.\",\n \"Scope is natural stone from Asian supply chains; the label does not cover stone sourced elsewhere.\",\n ],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"greenhealth_approved_certificate\",\n canonicalName: \"Greenhealth Approved Seal\",\n aliases: [\"Greenhealth Approved\", \"GreenHealth Approved\", \"Practice Greenhealth Approved\", \"Healthier Hospitals Compliant\", \"Healthier Hospitals Initiative\"],\n category: \"multi_attribute\",\n issuerExamples: [\"Practice Greenhealth (Greenhealth Approved seal; Healthier Hospitals programme)\"],\n sources: [\n { label: \"Practice Greenhealth\", url: \"https://practicegreenhealth.org\" },\n { label: \"Greenhealth Approved\", url: \"https://greenhealthapproved.org\" },\n ],\n supportsClaim: \"Practice Greenhealth has reviewed manufacturer-submitted documentation and licensed the product to carry the Greenhealth Approved seal, indicating it meets the programme's healthcare-sector sustainability criteria for its product category — largely avoidance of chemicals of concern aligned with Healthier Hospitals goals.\",\n doesNotSupport: [\n \"Independent laboratory testing — the seal rests on programme review of manufacturer attestations, not third-party lab verification.\",\n \"A full environmental footprint claim — carbon, water, circularity, and end-of-life are outside the criteria.\",\n \"Clinical, infection-control, or medical-device performance.\",\n \"'Healthier Hospitals compliant' on its own — that is typically a self-declared checklist claim, not the licensed Greenhealth Approved seal.\",\n ],\n requiredFields: [\"seal_license_id\", \"certified_entity\", \"product_scope\", \"criteria_category\", \"valid_until\"],\n minimumSourceAuthority: \"programme_operator\",\n expiryRelevant: true,\n caveats: [\n \"Criteria are category-specific (e.g. furnishings) — check which category criteria the product was approved against.\",\n \"Distinguish the licensed Greenhealth Approved seal from loose 'Healthier Hospitals compliant' marketing language, which is often self-attested.\",\n \"The seal signals healthcare-sector suitability on chemicals of concern; it is not equivalent to third-party certifications like GREENGUARD or Cradle to Cradle.\",\n ],\n reviewStatus: \"draft\",\n },\n {\n sourceTypeId: \"diverse_supplier_certification\",\n canonicalName: \"Diverse Supplier Certification\",\n aliases: [\n \"Minority Business Enterprise\",\n \"Minority-Owned Business Enterprise\",\n \"Women's Business Enterprise\",\n \"Woman-Owned Business Enterprise\",\n \"Minority and Women-Owned Business Enterprise\",\n \"Women and Minority-Owned Business Enterprise\",\n \"Small Business Enterprise\",\n \"Service-Disabled Veteran-Owned Business\",\n \"Woman-Owned Small Business\",\n \"Veteran-Owned Small Business\",\n \"NGLCC Certified LGBT Business Enterprise\",\n \"LGBT Business Enterprise\",\n \"NMSDC Certified\",\n \"WBENC Certified\",\n \"WEConnect International Certified\",\n \"Disability-Owned Business Enterprise\",\n \"Disability:IN Certified\",\n \"Diverse Supplier\",\n \"Supplier Diversity Certification\",\n ],\n category: \"social_organizational\",\n issuerExamples: [\n \"National Minority Supplier Development Council (NMSDC)\",\n \"Women's Business Enterprise National Council (WBENC)\",\n \"National LGBT Chamber of Commerce (NGLCC)\",\n \"WEConnect International\",\n \"Disability:IN\",\n \"U.S. Small Business Administration and state/local certifying agencies\",\n ],\n sources: [\n { label: \"NMSDC\", url: \"https://nmsdc.org\" },\n { label: \"WBENC\", url: \"https://www.wbenc.org\" },\n ],\n supportsClaim: \"A certifying or registering body has designated the company as majority-owned, controlled, and operated by members of a qualifying group — minority, woman, veteran, service-disabled veteran, LGBTQ+, or disabled owners, or a qualifying small business — under that specific program's rules.\",\n doesNotSupport: [\n \"Any product sustainability attribute — materials, chemicals, emissions, carbon, recycled content, or indoor air quality.\",\n \"Labour conditions, fair-trade practices, or human-rights due diligence in the company's supply chain.\",\n \"Environmental management or corporate ESG performance of any kind.\",\n \"Uniform assurance — certification rigor varies by program: some (e.g. NMSDC, WBENC, NGLCC, Disability:IN, WEConnect) require third-party documentation review and site visits, while others are self-attested registries.\",\n \"That the designation extends to parent companies, subsidiaries, or brands beyond the certified legal entity.\",\n ],\n requiredFields: [\"certifying_body\", \"designation_type\", \"certificate_or_registration_id\", \"certified_entity\", \"valid_until\"],\n minimumSourceAuthority: \"manufacturer_declared\",\n expiryRelevant: true,\n caveats: [\n \"Certification rigor varies widely by program — always identify the specific certifying body and check the company against that body's registry rather than accepting the acronym.\",\n \"Designation definitions and thresholds are program- and jurisdiction-specific (e.g. state and city MWBE rules differ), so the same acronym can mean different things.\",\n \"This is a company-ownership designation, in scope under social health and equity (per mindful MATERIALS), but it says nothing about how any product performs.\",\n ],\n reviewStatus: \"draft\",\n },\n];\n","// Greenwash lens — the gap between what a sustainability claim invites a\n// reader to assume and what its evidence actually establishes. Authored from\n// the claim definitions and caveats already in the canon; the lens reframes\n// them as the plain-language \"reads as → actually proves → watch for\" split\n// that a specifier needs when reading a product page.\n//\n// Not every claim family needs a lens. The ones here are the claims where the\n// gap between marketing and evidence is widest (mostly high greenwash risk).\n// Claims without an entry fall back to their definition and caveats.\n\nexport type GreenwashLens = {\n // The inference the claim invites — what a busy reader is led to assume.\n reads: string;\n // What the evidence actually establishes, stated plainly.\n proves: string;\n // The specific trap, and what to ask to close it.\n watchFor: string;\n};\n\nexport const greenwashLensById: Record<string, GreenwashLens> = {\n // ── Chemical exclusions ────────────────────────────────────────────────\n claims_pfas_free: {\n reads: \"No “forever chemicals” anywhere in this product.\",\n proves: \"The manufacturer states PFAS was not intentionally added — usually to one component, often with no test method or threshold.\",\n watchFor: \"Ask which components were tested, the detection threshold, and whether this is a test report or just a statement.\",\n },\n claims_pfos_free: {\n reads: \"Free of PFAS-related chemistry.\",\n proves: \"Absence of one specific compound (PFOS) — not the broader PFAS class.\",\n watchFor: \"PFOS-free is not PFAS-free. Ask whether the wider class was excluded and tested.\",\n },\n claims_formaldehyde_free: {\n reads: \"This product won’t off-gas formaldehyde.\",\n proves: \"A stated absence of added formaldehyde under some scope — not necessarily zero emissions.\",\n watchFor: \"“No added” isn’t “none detectable.” Ask for an emissions test (CDPH or CARB), not a phrase.\",\n },\n claims_no_added_urea_formaldehyde: {\n reads: \"Formaldehyde-safe.\",\n proves: \"No urea-formaldehyde was added — other formaldehyde sources or binders may remain.\",\n watchFor: \"Ask what binder replaced it and for an emissions test result.\",\n },\n claims_pvc_free: {\n reads: \"Contains no vinyl at all.\",\n proves: \"A declared absence of PVC under some stated scope.\",\n watchFor: \"Confirm the scope covers backing, coatings, and trim — not only the visible face.\",\n },\n claims_phthalates_free: {\n reads: \"Free of harmful plasticizers.\",\n proves: \"A declared absence of specified phthalates under some scope and threshold.\",\n watchFor: \"Ask which phthalates and what limit — “free” usually means below a detection threshold.\",\n },\n claims_bisphenol_free: {\n reads: \"BPA-free, therefore safe.\",\n proves: \"Absence of specified bisphenols under some scope.\",\n watchFor: \"Ask whether BPS/BPF substitutes are also excluded, and at what threshold.\",\n },\n claims_halogenated_flame_retardant_free: {\n reads: \"No toxic flame retardants.\",\n proves: \"A declared absence of halogenated flame retardants under some scope.\",\n watchFor: \"Fire code may still require treatment — ask what replaced the retardants.\",\n },\n claims_heavy_metal_free: {\n reads: \"Free of toxic metals.\",\n proves: \"A declared absence of one or more heavy metals under some scope.\",\n watchFor: \"Ask which metals and what limit — RoHS-style test reports beat bare statements.\",\n },\n claims_non_toxic: {\n reads: \"Safe — won’t harm people.\",\n proves: \"Nothing specific. “Non-toxic” has no standard definition.\",\n watchFor: \"Ask which substances are excluded and how it was tested; otherwise treat as marketing.\",\n },\n claims_chemical_free: {\n reads: \"Contains no chemicals.\",\n proves: \"Nothing — every material is made of chemicals; the phrase is scientifically meaningless.\",\n watchFor: \"Ask which specific substance is excluded and for the test behind it.\",\n },\n claims_red_list_free_statement: {\n reads: \"Free of all hazardous chemicals.\",\n proves: \"A self-stated avoidance of Red List chemicals — not a verified label.\",\n watchFor: \"Prefer a current Declare or registry record; a bare statement isn’t verification.\",\n },\n\n // ── Carbon & lifecycle ─────────────────────────────────────────────────\n has_environmental_product_declaration: {\n reads: \"A verified low-carbon, “green” product.\",\n proves: \"An EPD exists — a disclosure of environmental impacts, not a performance threshold.\",\n watchFor: \"An EPD reports numbers; it doesn’t mean low. Ask for the GWP and whether it’s product-specific.\",\n },\n has_product_specific_epd: {\n reads: \"Verified low carbon for this exact product.\",\n proves: \"An EPD specific to this product exists and reports its impacts.\",\n watchFor: \"It’s disclosure, not a pass/fail. Compare the GWP to a baseline before calling it low.\",\n },\n has_product_carbon_footprint: {\n reads: \"Certified low-carbon.\",\n proves: \"A carbon figure has been calculated under some scope and boundary.\",\n watchFor: \"Ask the boundary (cradle-to-gate vs grave) and the baseline it’s being called “low” against.\",\n },\n claims_low_embodied_carbon: {\n reads: \"A low-carbon product.\",\n proves: \"A relative “low” or “reduced” claim — meaningful only against a stated baseline.\",\n watchFor: \"Without a baseline, scope, and a GWP number, “low” is unverifiable. Ask for the EPD.\",\n },\n claims_carbon_neutral_product: {\n reads: \"This product has no climate impact.\",\n proves: \"The manufacturer says measured emissions were offset — often via purchased credits.\",\n watchFor: \"“Neutral” usually means offset, not zero. Ask what was measured and how it was offset.\",\n },\n claims_carbon_negative: {\n reads: \"This product removes carbon from the air.\",\n proves: \"A claim that removals exceed production emissions — often counting biogenic storage.\",\n watchFor: \"Ask the scope, the accounting method, and whether the stored carbon is permanent.\",\n },\n\n // ── Circularity ────────────────────────────────────────────────────────\n claims_recyclable: {\n reads: \"This gets recycled at end of life.\",\n proves: \"The material is technically capable of being recycled.\",\n watchFor: \"Technically recyclable isn’t actually recycled. Ask if a real take-back route exists locally.\",\n },\n claims_compostable: {\n reads: \"This breaks down naturally at home.\",\n proves: \"It meets a composting standard — usually industrial, not backyard.\",\n watchFor: \"Ask industrial vs home, and whether facilities in the project’s region accept it.\",\n },\n claims_biodegradable: {\n reads: \"This disappears harmlessly.\",\n proves: \"It degrades under some unstated conditions and timeframe.\",\n watchFor: \"Ask the standard, the conditions, and the timeframe — “biodegradable” alone is meaningless.\",\n },\n claims_recycled_content: {\n reads: \"Made from recycled material.\",\n proves: \"A stated recycled percentage under some scope.\",\n watchFor: \"Ask pre- vs post-consumer, the percentage, and whether it’s the whole product or one layer.\",\n },\n claims_mass_balance_allocation: {\n reads: \"Made from recycled or bio feedstock.\",\n proves: \"Recycled or bio content allocated on paper across a production run — not necessarily in this item.\",\n watchFor: \"Mass balance is an accounting method. Ask the certification scheme and the allocation basis.\",\n },\n claims_bio_based_content: {\n reads: \"Made from plants, not petroleum.\",\n proves: \"A stated bio-based percentage under some scope.\",\n watchFor: \"Bio-based isn’t biodegradable or low-carbon. Ask the percentage and the test (e.g. ASTM D6866).\",\n },\n claims_ocean_plastic_content: {\n reads: \"Made from plastic rescued from the ocean.\",\n proves: \"Some recycled content from coastal or marine collection — definitions vary widely.\",\n watchFor: \"Ask the percentage, the definition of “ocean” used, and the chain of custody.\",\n },\n\n // ── Vague & organizational ─────────────────────────────────────────────\n claims_eco_friendly: {\n reads: \"Good for the environment.\",\n proves: \"Nothing specific — an unregulated marketing term.\",\n watchFor: \"Ask for the specific attribute and its evidence; “eco-friendly” alone is unverifiable.\",\n },\n claims_natural_materials: {\n reads: \"Natural, therefore safe and sustainable.\",\n proves: \"The material is described as natural — which is unregulated, and not the same as low-impact.\",\n watchFor: \"Natural isn’t low-emission or sustainable. Ask for the actual attribute and its proof.\",\n },\n claims_made_in_usa: {\n reads: \"Domestically and responsibly made.\",\n proves: \"An origin claim about final assembly or manufacture.\",\n watchFor: \"Says nothing about sustainability, or where the raw materials came from.\",\n },\n has_sustainability_action_plan: {\n reads: \"This is a sustainable company.\",\n proves: \"The manufacturer has published a plan, target, or commitment.\",\n watchFor: \"A commitment is intent, not a product attribute — it says nothing about this product.\",\n },\n claims_fair_labor_practices: {\n reads: \"Made ethically.\",\n proves: \"A labor commitment or policy statement.\",\n watchFor: \"Ask for an audit or certification — a policy is not verification.\",\n },\n\n // ── Rating-system contribution hints ───────────────────────────────────\n rating_system_leed_contribution_hint: {\n reads: \"This product earns LEED points.\",\n proves: \"Language hinting at possible LEED relevance. Products don’t earn credits — projects do.\",\n watchFor: \"Contribution depends on the whole project and its documentation. Treat as a hint, not a credit.\",\n },\n rating_system_well_contribution_hint: {\n reads: \"This product earns WELL points.\",\n proves: \"Language hinting at WELL relevance. Products don’t earn features — projects do.\",\n watchFor: \"Depends on the whole project. Treat as a hint, not a feature.\",\n },\n rating_system_breeam_contribution_hint: {\n reads: \"This product earns BREEAM credits.\",\n proves: \"Language hinting at BREEAM relevance. Products don’t earn credits — projects do.\",\n watchFor: \"Depends on the assessment and documentation. Treat as a hint, not a credit.\",\n },\n\n // ── Materials / sector stewardship certifications ──────────────────────\n has_responsible_material_sourcing_certification: {\n reads: \"This material is sustainable and low-impact.\",\n proves: \"The sites that produced the raw material were independently audited against a sector standard for responsible production practices — environmental management, communities, labour, governance.\",\n watchFor: \"Site certification quietly standing in for product claims: a certified smelter or tannery says nothing about whether YOUR batch came from it (look for chain of custody), and no responsible-sourcing certificate proves the material is low-carbon, non-toxic, or recycled.\",\n },\n\n // ── Chemical hazard assessment ─────────────────────────────────────────\n has_chemical_hazard_assessment: {\n reads: \"This product is non-toxic and safe.\",\n proves: \"An independent programme assessed the intentionally added chemicals against a published benchmark and the worst hazard classes were excluded per that programme's criteria.\",\n watchFor: \"Rounding up to 'non-toxic' or 'chemical-free'; quoting the certification without its level, standard, and product scope; treating a hazard benchmark as proof about real-world exposure.\",\n },\n claims_precautionary_list_free: {\n reads: \"Certified free of harmful chemicals per a leading architecture firm's standard.\",\n proves: \"The manufacturer states the product avoids the chemicals on a named version of the Perkins&Will Precautionary List — a self-declared screening, since no certification programme exists for this list.\",\n watchFor: \"Treating it as a certification; omitting the list version and date; conflating it with LBC Red List Free, which is a different list under a different programme.\",\n },\n has_corporate_esg_assessment: {\n reads: \"This company is certified sustainable, so its products must be too.\",\n proves: \"The company takes part in an organization-level ESG programme — at best a scored rating or validated target covering management practices, at worst simply publishing a report in a standard format.\",\n watchFor: \"'Reports under GRI' dressed up as if it were a score or certification; corporate medals or grades presented as evidence about a specific material; expired EcoVadis scorecards or 'SBTi committed' status passed off as validated targets.\",\n },\n has_verified_fair_labor_certification: {\n reads: \"This product is fair trade — everyone in the supply chain was treated fairly.\",\n proves: \"A specific programme verified a specific scope: Fairtrade audits trade and labour terms for a certified ingredient, GoodWeave verifies child-labour-free production, WFTO verifies the enterprise, Fair Stone and XertifiX audit stone quarries and factories.\",\n watchFor: \"Generic 'fair trade' wording with no named scheme or certificate (route to the unverified claim); ingredient-level certification presented as whole-product; enterprise-level WFTO status presented as product certification; Fair Stone partners still mid-implementation.\",\n },\n has_diverse_supplier_certification: {\n reads: \"Buying this product is a sustainable, socially responsible choice.\",\n proves: \"A program designated the company as majority-owned by a qualifying group — an ownership demographic fact about the business, verified to widely varying degrees depending on the program.\",\n watchFor: \"Ownership credentials presented as product sustainability; acronyms with no named certifying body; self-attested registrations passed off as audited certifications; designations claimed by a parent or sister company rather than the certified entity.\",\n },\n};\n\nexport function getGreenwashLens(claimFamilyId: string): GreenwashLens | null {\n return greenwashLensById[claimFamilyId] ?? null;\n}\n","// Decision contexts — the layer that proves a material cannot be sustainability-\n// rated on its own.\n//\n// A claim, certificate, or programme means different things depending on WHERE\n// and HOW a material is used. The same FloorScore certificate is merely\n// \"relevant\" in the abstract, but \"regulated\" (CDPH §01350) for a California\n// school, and \"strengthens\" the Low-Emitting Materials credit under LEED. A\n// California emissions test says nothing about a UK BREEAM IAQ requirement,\n// which wants EN-method evidence instead.\n//\n// Each DecisionContext is a curated expert briefing on one\n// (target × use context × region × material) cell. It does not own product\n// truth and does not decide whether a specific product qualifies — it explains\n// what the context REQUIRES and how to read evidence against it. Effects are\n// assigned to existing canon ids; nothing here duplicates canon data.\n\nimport { z } from \"zod\";\nimport {\n claimFamilies,\n frameworks,\n reviewStatusSchema,\n sourceLinkSchema,\n sourceTypes,\n} from \"../canon.ts\";\n\n// How a context changes the weight of a claim, certificate, or programme.\n// Ordered loosely from hardest (law) to softest, then the negative cases.\nexport const contextEffectSchema = z.enum([\n // Regional law or building code effectively requires this evidence here.\n \"regulated\",\n // The target programme's pathway requires this to earn the credit.\n \"required\",\n // Contributes toward the target, but is not on its own decisive.\n \"strengthens\",\n // Worth holding in this context, without a formal requirement.\n \"relevant\",\n // Counts, but is never sufficient by itself — must be paired.\n \"insufficient_alone\",\n // Commonly cited here, but does not actually apply in this context.\n \"not_applicable\",\n]);\n\nexport const useContextSchema = z.enum([\n \"healthcare\",\n \"education\",\n \"workplace\",\n \"hospitality\",\n \"residential\",\n \"laboratory\",\n \"interior_general\",\n]);\n\nexport const regionSchema = z.enum([\n \"california\",\n \"us_general\",\n \"eu\",\n \"uk\",\n \"nordics\",\n \"global\",\n]);\n\nexport const contextRefKindSchema = z.enum([\n \"claimFamily\",\n \"sourceType\",\n \"framework\",\n]);\n\nexport const contextRequirementSchema = z.object({\n // A pointer into the existing canon — never a new free-floating record.\n refKind: contextRefKindSchema,\n refId: z.string().min(1),\n effect: contextEffectSchema,\n // Plain language: why this effect, in this context.\n rationale: z.string().min(1),\n // The specific trap or boundary a non-expert would miss.\n caveat: z.string().min(1).optional(),\n // Where the requirement comes from, when it is externally governed.\n source: sourceLinkSchema.optional(),\n});\n\nexport const decisionContextSchema = z.object({\n contextId: z.string().min(1),\n label: z.string().min(1),\n // The material category this context reads against (e.g. resilient flooring).\n materialCategory: z.string().min(1),\n useContext: useContextSchema,\n region: regionSchema,\n // The rating-system target, or null when there is no programme target.\n // Even with no target, regional law still imposes real requirements — which\n // is itself the point: a material is never \"unrated\", only contextually\n // governed.\n target: z\n .object({\n frameworkId: z.string().min(1),\n ruleVersionId: z.string().min(1),\n })\n .nullable(),\n // One-line framing a designer can read at a glance.\n summary: z.string().min(1),\n // The teaching beat specific to this cell — what changes here, and why the\n // material cannot be judged outside it.\n teaching: z.string().min(1),\n requirements: z.array(contextRequirementSchema).min(1),\n caveats: z.array(z.string().min(1)),\n sources: z.array(sourceLinkSchema),\n reviewStatus: reviewStatusSchema,\n});\n\nexport type ContextEffect = z.infer<typeof contextEffectSchema>;\nexport type UseContext = z.infer<typeof useContextSchema>;\nexport type Region = z.infer<typeof regionSchema>;\nexport type ContextRequirement = z.infer<typeof contextRequirementSchema>;\nexport type DecisionContext = z.infer<typeof decisionContextSchema>;\n\n// ── Real-source citations, declared once and reused ─────────────────────────\n\nconst SRC = {\n cdph: {\n label: \"CDPH Standard Method v1.2 (Section 01350)\",\n url: \"https://www.cdph.ca.gov/Programs/CCDPHP/DEODC/EHLB/IAQ/Pages/VOC.aspx\",\n },\n carb: {\n label: \"CARB — Composite Wood Products ATCM (formaldehyde)\",\n url: \"https://ww2.arb.ca.gov/our-work/programs/composite-wood-products\",\n },\n chps: {\n label: \"Collaborative for High Performance Schools (CHPS) Low-Emitting Materials\",\n url: \"https://chps.net/criteria\",\n },\n leedBpdo: {\n label: \"USGBC — LEED v4.1 Building Product Disclosure & Optimization\",\n url: \"https://www.usgbc.org/credits\",\n },\n leedLem: {\n label: \"USGBC — LEED Low-Emitting Materials credit\",\n url: \"https://www.usgbc.org/credits/eqc2\",\n },\n breeamHea02: {\n label: \"BREEAM — Hea 02 Indoor air quality\",\n url: \"https://breeam.com\",\n },\n breeamMat: {\n label: \"BREEAM — Mat 01 / Mat 03 (LCA & responsible sourcing)\",\n url: \"https://breeam.com\",\n },\n en16516: {\n label: \"EN 16516 — emissions of regulated dangerous substances\",\n url: \"https://www.en-standard.eu/bs-en-16516\",\n },\n frenchVoc: {\n label: \"French mandatory VOC emissions labelling (A+/A/B/C)\",\n url: \"https://www.ecologie.gouv.fr/etiquetage-des-emissions-polluants-volatils\",\n },\n en14041: {\n label: \"EN 14041 — resilient, textile & laminate floor coverings (CE marking)\",\n url: \"https://www.en-standard.eu/bs-en-14041\",\n },\n wellX06: {\n label: \"WELL v2 — Materials X06 (VOC restrictions)\",\n url: \"https://v2.wellcertified.com/en/wellv2/materials\",\n },\n} as const;\n\n// ── Contexts (resilient flooring anchor) ────────────────────────────────────\n// Three cells chosen to make the SAME evidence flip meaning across them.\n\nexport const decisionContexts: readonly DecisionContext[] = [\n // 1. California · healthcare · LEED v4.1 — the \"everything matters, and some\n // of it is law\" cell. Emissions evidence is simultaneously a credit input\n // and a regional expectation.\n {\n contextId: \"ctx_resilient_flooring_leed_healthcare_california\",\n label: \"Resilient flooring — LEED healthcare project, California\",\n materialCategory: \"resilient_flooring\",\n useContext: \"healthcare\",\n region: \"california\",\n target: { frameworkId: \"leed\", ruleVersionId: \"leed-v4.1-v5\" },\n summary:\n \"A LEED v4.1 healthcare interior in California. Indoor-air evidence carries the most weight, and California's own emissions method sits underneath the LEED credit.\",\n teaching:\n \"The same flooring is read three ways at once here: California expects an emissions test, LEED's Low-Emitting Materials credit is built on that exact test, and an EPD only discloses carbon rather than proving it is low. None of that is a property of the flooring — it is the project that decides which evidence counts.\",\n requirements: [\n {\n refKind: \"sourceType\",\n refId: \"indoor_air_quality_emissions_certificate\",\n effect: \"required\",\n rationale:\n \"Healthcare interiors lean hardest on indoor-air quality, and the LEED Low-Emitting Materials credit is scored on a CDPH v1.2 emissions test. This evidence is the spine of the context.\",\n caveat:\n \"An emissions test proves what off-gasses, not what the product is made of — pair it with ingredient disclosure for the full picture.\",\n source: SRC.leedLem,\n },\n {\n refKind: \"claimFamily\",\n refId: \"has_cdph_low_emitting_material_test\",\n effect: \"regulated\",\n rationale:\n \"CDPH Standard Method v1.2 (the old Section 01350) is California's reference emissions method and is widely written into healthcare and state specifications, independent of LEED.\",\n source: SRC.cdph,\n },\n {\n refKind: \"claimFamily\",\n refId: \"has_floorscore_certification\",\n effect: \"strengthens\",\n rationale:\n \"FloorScore tests flooring to the CDPH v1.2 method, so it directly satisfies the emissions evidence both California and LEED are asking for.\",\n caveat:\n \"Confirm the certificate is current and covers the exact product line, not a sibling SKU.\",\n },\n {\n refKind: \"claimFamily\",\n refId: \"has_product_specific_epd\",\n effect: \"strengthens\",\n rationale:\n \"A product-specific EPD contributes to the LEED EPD credit and is the only honest basis for any embodied-carbon comparison on this project.\",\n caveat:\n \"An EPD discloses impacts; it does not mean low. Read the GWP against a baseline before calling it low-carbon.\",\n source: SRC.leedBpdo,\n },\n {\n refKind: \"claimFamily\",\n refId: \"has_health_product_declaration\",\n effect: \"strengthens\",\n rationale:\n \"An HPD or Declare label feeds the LEED Material Ingredients credit and answers the ingredient question an emissions test cannot.\",\n source: SRC.leedBpdo,\n },\n {\n refKind: \"claimFamily\",\n refId: \"claims_low_voc_content\",\n effect: \"insufficient_alone\",\n rationale:\n \"Low VOC *content* is not low VOC *emissions*. LEED and California both score emissions from a chamber test, so a content figure does not satisfy either on its own.\",\n caveat:\n \"Treat a content claim as a prompt to ask for the emissions test, not as the evidence itself.\",\n },\n {\n refKind: \"claimFamily\",\n refId: \"rating_system_leed_contribution_hint\",\n effect: \"insufficient_alone\",\n rationale:\n \"Products contribute to LEED pathways; projects earn credits. A 'contributes to LEED' line on a product page is a hint, never a credit.\",\n },\n ],\n caveats: [\n \"This taxonomy describes what this context requires; it does not decide whether a specific product qualifies.\",\n \"CARB formaldehyde rules bite on composite-wood substrates, not on the resilient wear layer — scope the requirement to the right component.\",\n ],\n sources: [SRC.cdph, SRC.leedLem, SRC.leedBpdo, SRC.chps],\n reviewStatus: \"reviewed\",\n },\n\n // 2. UK/EU · workplace · BREEAM — the \"right evidence, wrong region\" cell.\n // California emissions certs do not transfer; the vocabulary changes to EN\n // methods and responsible-sourcing schemes.\n {\n contextId: \"ctx_resilient_flooring_breeam_office_uk\",\n label: \"Resilient flooring — BREEAM office fit-out, UK\",\n materialCategory: \"resilient_flooring\",\n useContext: \"workplace\",\n region: \"uk\",\n target: { frameworkId: \"breeam\", ruleVersionId: \"breeam-current\" },\n summary:\n \"A BREEAM-assessed office fit-out in the UK. The questions rhyme with LEED, but the valid evidence is European — EN test methods, CE marking, and recognised responsible-sourcing schemes.\",\n teaching:\n \"Move the same flooring from California to a UK BREEAM job and its US emissions certificate stops counting: BREEAM's indoor-air credit wants EN-method evidence. The product did not change — the context that judges it did.\",\n requirements: [\n {\n refKind: \"claimFamily\",\n refId: \"has_cdph_low_emitting_material_test\",\n effect: \"not_applicable\",\n rationale:\n \"CDPH v1.2 is a US method. BREEAM's Hea 02 indoor-air credit recognises European emissions evidence, so a California test does not transfer here.\",\n caveat:\n \"A strong certificate in the wrong region is still the wrong certificate — match the test method to the assessing scheme.\",\n source: SRC.breeamHea02,\n },\n {\n refKind: \"sourceType\",\n refId: \"indoor_air_quality_emissions_certificate\",\n effect: \"strengthens\",\n rationale:\n \"BREEAM Hea 02 rewards low-emitting finishes tested to EN 16516 (or national schemes such as the French A+ label). The emissions question stays; the method changes.\",\n caveat:\n \"Check the test standard named on the certificate is EN 16516 or an accepted national equivalent.\",\n source: SRC.en16516,\n },\n {\n refKind: \"claimFamily\",\n refId: \"has_environmental_product_declaration\",\n effect: \"strengthens\",\n rationale:\n \"BREEAM Mat 01 runs on life-cycle assessment, where an EN 15804 EPD is the recognised input.\",\n source: SRC.breeamMat,\n },\n {\n refKind: \"claimFamily\",\n refId: \"claims_recycled_content\",\n effect: \"strengthens\",\n rationale:\n \"Verified recycled content supports BREEAM's responsible-sourcing and resource-efficiency credits.\",\n caveat:\n \"Ask pre- vs post-consumer and whether the figure covers the whole product or only the backing.\",\n source: SRC.breeamMat,\n },\n {\n refKind: \"sourceType\",\n refId: \"regulatory_compliance_statement\",\n effect: \"regulated\",\n rationale:\n \"Resilient floor coverings sold in the UK/EU carry CE marking to EN 14041, covering reaction-to-fire and formaldehyde release — a baseline that exists regardless of BREEAM.\",\n source: SRC.en14041,\n },\n ],\n caveats: [\n \"BREEAM credits depend on the assessment and its documentation; product evidence contributes but does not award credits.\",\n \"National labelling (e.g. the French A+ scheme) may be mandatory for placing the product on some EU markets.\",\n ],\n sources: [SRC.breeamHea02, SRC.breeamMat, SRC.en16516, SRC.en14041, SRC.frenchVoc],\n reviewStatus: \"reviewed\",\n },\n\n // 3. California · education · NO rating target — the \"no programme, still\n // governed\" cell. Proves the thesis even when nobody is chasing a label.\n {\n contextId: \"ctx_resilient_flooring_none_education_california\",\n label: \"Resilient flooring — California school, no rating target\",\n materialCategory: \"resilient_flooring\",\n useContext: \"education\",\n region: \"california\",\n target: null,\n summary:\n \"A California K–12 school with no green-building certification in play. Even with no programme to chase, state expectations for low-emitting materials still set the bar.\",\n teaching:\n \"There is no such thing as an unrated material. With no LEED or WELL target at all, California's emissions expectations for schools still decide what evidence this flooring needs — the context, not a label, is doing the work.\",\n requirements: [\n {\n refKind: \"claimFamily\",\n refId: \"has_cdph_low_emitting_material_test\",\n effect: \"regulated\",\n rationale:\n \"California school specifications (via CHPS and state guidance) expect classroom finishes to meet the CDPH v1.2 emissions method — with or without a certification target.\",\n source: SRC.chps,\n },\n {\n refKind: \"claimFamily\",\n refId: \"has_floorscore_certification\",\n effect: \"strengthens\",\n rationale:\n \"FloorScore demonstrates the CDPH v1.2 emissions result the school setting is asking for, in a single recognised certificate.\",\n caveat: \"Verify the certificate is current and names this product line.\",\n },\n {\n refKind: \"claimFamily\",\n refId: \"claims_no_added_urea_formaldehyde\",\n effect: \"relevant\",\n rationale:\n \"Formaldehyde is a classroom-air concern, but for resilient flooring it usually applies to any composite-wood underlayment rather than the wear layer itself.\",\n caveat:\n \"Scope the question to the substrate; CARB formaldehyde rules target composite wood, not resilient sheet or tile.\",\n source: SRC.carb,\n },\n {\n refKind: \"claimFamily\",\n refId: \"claims_eco_friendly\",\n effect: \"not_applicable\",\n rationale:\n \"'Eco-friendly' is an unregulated marketing term that answers none of the questions a school-air decision actually turns on.\",\n caveat: \"Translate it into the specific attribute — emissions, content, or disclosure — and ask for that evidence.\",\n },\n {\n refKind: \"claimFamily\",\n refId: \"rating_system_leed_contribution_hint\",\n effect: \"not_applicable\",\n rationale:\n \"With no LEED target on the project, a 'contributes to LEED' claim has nothing to contribute to here.\",\n },\n ],\n caveats: [\n \"No certification target does not mean no requirements — regional expectations still apply.\",\n \"This taxonomy interprets these requirements; it does not certify the project or the product.\",\n ],\n sources: [SRC.cdph, SRC.chps, SRC.carb],\n reviewStatus: \"reviewed\",\n },\n] as const;\n\n// ── Helpers ─────────────────────────────────────────────────────────────────\n\nconst contextsById = new Map(decisionContexts.map((c) => [c.contextId, c]));\n\nexport function getDecisionContext(contextId: string): DecisionContext {\n const context = contextsById.get(contextId);\n if (!context) throw new Error(`Unknown decision context: ${contextId}`);\n return context;\n}\n\n// Plain-language labels for the effect levels, ordered for display.\nexport const contextEffectOrder: readonly ContextEffect[] = [\n \"regulated\",\n \"required\",\n \"strengthens\",\n \"relevant\",\n \"insufficient_alone\",\n \"not_applicable\",\n];\n\nexport const contextEffectLabels: Record<ContextEffect, string> = {\n regulated: \"Required by law here\",\n required: \"Required for the target\",\n strengthens: \"Strengthens the case\",\n relevant: \"Worth holding\",\n insufficient_alone: \"Not enough on its own\",\n not_applicable: \"Doesn't apply here\",\n};\n\nexport const useContextLabels: Record<UseContext, string> = {\n healthcare: \"Healthcare\",\n education: \"Education\",\n workplace: \"Workplace\",\n hospitality: \"Hospitality\",\n residential: \"Residential\",\n laboratory: \"Laboratory\",\n interior_general: \"General interior\",\n};\n\nexport const regionLabels: Record<Region, string> = {\n california: \"California\",\n us_general: \"United States\",\n eu: \"European Union\",\n uk: \"United Kingdom\",\n nordics: \"Nordics\",\n global: \"Global\",\n};\n\n// ── Agentic assessment ──────────────────────────────────────────────────────\n// A bounded, grounded read of a material claim \"in context\". This does NOT\n// verify product truth or decide whether a product qualifies — it matches a\n// project description to a curated context and returns what that context\n// requires, grouped by how each piece of evidence counts.\n\n// Whole-word match so \"carb\" (the CARB agency) doesn't fire on \"carbon\", etc.\nfunction matchesWord(haystack: string, keyword: string): boolean {\n const escaped = keyword.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n return new RegExp(`\\\\b${escaped}\\\\b`).test(haystack);\n}\n\nconst useContextKeywords: Record<UseContext, string[]> = {\n healthcare: [\"healthcare\", \"hospital\", \"clinic\", \"medical\", \"patient\", \"care home\"],\n education: [\"education\", \"school\", \"classroom\", \"university\", \"campus\", \"k-12\", \"k12\"],\n workplace: [\"workplace\", \"office\", \"commercial\", \"corporate\", \"fit-out\", \"fitout\", \"desk\"],\n hospitality: [\"hospitality\", \"hotel\", \"restaurant\", \"leisure\", \"guest\"],\n residential: [\"residential\", \"home\", \"housing\", \"apartment\", \"dwelling\"],\n laboratory: [\"laboratory\", \"lab\", \"cleanroom\", \"research facility\"],\n interior_general: [\"interior\"],\n};\n\nconst regionKeywords: Record<Region, string[]> = {\n california: [\"california\", \"calgreen\", \"cdph\", \"carb\", \"title 24\", \"chps\"],\n us_general: [\"united states\", \"usa\", \"america\"],\n eu: [\"europe\", \"european union\", \"ce marking\", \"reach\"],\n uk: [\"uk\", \"united kingdom\", \"britain\", \"british\", \"breeam\", \"england\"],\n nordics: [\"nordic\", \"scandinavia\", \"sweden\", \"finland\", \"norway\", \"denmark\"],\n global: [\"global\", \"international\", \"worldwide\"],\n};\n\nexport type ContextMatchInput = {\n // A free-text project description, e.g. \"hospital floor in California, LEED\".\n query?: string;\n // Or structured hints, any subset.\n target?: string; // framework id or name fragment\n useContext?: UseContext;\n region?: Region;\n};\n\nexport type ContextMatch = {\n context: DecisionContext;\n confidence: number;\n signals: string[];\n};\n\n// Deterministic match: score each context on target, use, and region signals\n// drawn from structured hints and/or the free-text query.\nexport function matchDecisionContext(\n input: ContextMatchInput,\n): ContextMatch | null {\n const haystack = (input.query ?? \"\").toLowerCase();\n const frameworkAliasIndex = new Map<string, string>(); // frameworkId -> name\n for (const f of frameworks) frameworkAliasIndex.set(f.frameworkId, f.canonicalName);\n\n let best: ContextMatch | null = null;\n\n for (const context of decisionContexts) {\n let score = 0;\n let max = 0;\n const signals: string[] = [];\n\n // Target (weight 3)\n max += 3;\n if (context.target) {\n const fid = context.target.frameworkId;\n const fname = (frameworkAliasIndex.get(fid) ?? fid).toLowerCase();\n const targetHint = (input.target ?? \"\").toLowerCase();\n if (targetHint && (fid.includes(targetHint) || fname.includes(targetHint))) {\n score += 3;\n signals.push(`target: ${frameworkAliasIndex.get(fid) ?? fid}`);\n } else if (haystack && (matchesWord(haystack, fname) || matchesWord(haystack, fid))) {\n score += 3;\n signals.push(`target: ${frameworkAliasIndex.get(fid) ?? fid}`);\n }\n } else if (\n // \"no rating target\" matches an explicit absence cue.\n /no (rating|certification|programme|program|target|leed|breeam)/.test(haystack)\n ) {\n score += 3;\n signals.push(\"target: none\");\n }\n\n // Use context (weight 2)\n max += 2;\n if (input.useContext === context.useContext) {\n score += 2;\n signals.push(`use: ${useContextLabels[context.useContext]}`);\n } else if (useContextKeywords[context.useContext].some((kw) => matchesWord(haystack, kw))) {\n score += 2;\n signals.push(`use: ${useContextLabels[context.useContext]}`);\n }\n\n // Region (weight 2)\n max += 2;\n if (input.region === context.region) {\n score += 2;\n signals.push(`region: ${regionLabels[context.region]}`);\n } else if (regionKeywords[context.region].some((kw) => matchesWord(haystack, kw))) {\n score += 2;\n signals.push(`region: ${regionLabels[context.region]}`);\n }\n\n const confidence = max > 0 ? score / max : 0;\n if (score > 0 && (!best || confidence > best.confidence)) {\n best = { context, confidence: Number(confidence.toFixed(2)), signals };\n }\n }\n\n // Require at least two independent signals (e.g. use + region) before\n // committing to a curated context. A single weak keyword shouldn't shoehorn\n // an off-domain question into a specific flooring project — those fall through\n // to semantic retrieval instead.\n return best && best.signals.length >= 2 ? best : null;\n}\n\nexport const contextAssessmentItemSchema = z.object({\n refKind: contextRefKindSchema,\n refId: z.string().min(1),\n label: z.string().min(1),\n effect: contextEffectSchema,\n rationale: z.string().min(1),\n caveat: z.string().min(1).optional(),\n source: sourceLinkSchema.optional(),\n // True when the caller said they already hold this evidence. This maps stated\n // evidence to requirements; it is NOT a verification that the product passes.\n held: z.boolean(),\n});\n\nexport const contextAssessmentGroupSchema = z.object({\n effect: contextEffectSchema,\n effectLabel: z.string().min(1),\n items: z.array(contextAssessmentItemSchema),\n});\n\nexport const contextAssessmentSchema = z.object({\n kind: z.literal(\"contextAssessment\"),\n contextId: z.string().min(1),\n label: z.string().min(1),\n summary: z.string().min(1),\n teaching: z.string().min(1),\n target: z\n .object({\n frameworkId: z.string().min(1),\n frameworkName: z.string().min(1),\n ruleVersionId: z.string().min(1),\n })\n .nullable(),\n useContext: useContextSchema,\n region: regionSchema,\n materialCategory: z.string().min(1),\n matchConfidence: z.number().min(0).max(1),\n matchSignals: z.array(z.string().min(1)),\n groups: z.array(contextAssessmentGroupSchema),\n // Stated evidence that does not map to any requirement in this context.\n unmappedHeld: z.array(z.string().min(1)),\n caveats: z.array(z.string().min(1)),\n});\n\nexport type ContextAssessment = z.infer<typeof contextAssessmentSchema>;\n\nconst frameworkNameById = new Map(frameworks.map((f) => [f.frameworkId, f.canonicalName]));\n\n// Shape a context into a grouped assessment, marking any stated evidence ids as\n// held. `held` is a set of claimFamily/sourceType ids the caller says they have.\nexport function assessContext(\n match: ContextMatch,\n held: readonly string[] = [],\n): ContextAssessment {\n const { context } = match;\n const heldSet = new Set(held);\n const usedHeld = new Set<string>();\n\n const byEffect = new Map<ContextEffect, DecisionContext[\"requirements\"]>();\n for (const req of context.requirements) {\n const list = byEffect.get(req.effect) ?? [];\n list.push(req);\n byEffect.set(req.effect, list);\n }\n\n const groups = contextEffectOrder\n .map((effect) => {\n const items = (byEffect.get(effect) ?? []).map((req) => {\n const isHeld = heldSet.has(req.refId);\n if (isHeld) usedHeld.add(req.refId);\n return {\n refKind: req.refKind,\n refId: req.refId,\n label:\n req.refKind === \"framework\"\n ? (frameworkNameById.get(req.refId) ?? req.refId)\n : req.refId,\n effect,\n rationale: req.rationale,\n ...(req.caveat ? { caveat: req.caveat } : {}),\n ...(req.source ? { source: req.source } : {}),\n held: isHeld,\n };\n });\n return { effect, effectLabel: contextEffectLabels[effect], items };\n })\n .filter((g) => g.items.length > 0);\n\n return {\n kind: \"contextAssessment\",\n contextId: context.contextId,\n label: context.label,\n summary: context.summary,\n teaching: context.teaching,\n target: context.target\n ? {\n frameworkId: context.target.frameworkId,\n frameworkName: frameworkNameById.get(context.target.frameworkId) ?? context.target.frameworkId,\n ruleVersionId: context.target.ruleVersionId,\n }\n : null,\n useContext: context.useContext,\n region: context.region,\n materialCategory: context.materialCategory,\n matchConfidence: match.confidence,\n matchSignals: match.signals,\n groups,\n unmappedHeld: [...heldSet].filter((id) => !usedHeld.has(id)),\n caveats: context.caveats,\n };\n}\n\n// Integrity: every reference must resolve to a real canon record. Exposed so a\n// test (and seed-graph) can fail loudly rather than ship a dangling pointer.\nexport function validateDecisionContextRefs(): string[] {\n const claimIds = new Set(claimFamilies.map((c) => c.claimFamilyId));\n const sourceIds = new Set(sourceTypes.map((s) => s.sourceTypeId));\n const frameworkIds = new Set(frameworks.map((f) => f.frameworkId));\n const errors: string[] = [];\n\n for (const context of decisionContexts) {\n if (context.target && !frameworkIds.has(context.target.frameworkId)) {\n errors.push(`${context.contextId}: unknown target framework ${context.target.frameworkId}`);\n }\n for (const req of context.requirements) {\n const pool =\n req.refKind === \"claimFamily\"\n ? claimIds\n : req.refKind === \"sourceType\"\n ? sourceIds\n : frameworkIds;\n if (!pool.has(req.refId)) {\n errors.push(`${context.contextId}: unknown ${req.refKind} ${req.refId}`);\n }\n }\n }\n return errors;\n}\n","// Material sustainability records — the schema and governed enrichment for\n// turning a product's free-text sustainability language into the record shape in\n// docs/material-sustainability-record.md.\n//\n// Division of labour:\n// • An LLM does the fuzzy extraction (read messy text → map each claim to ONE\n// id from the constrained vocabulary below → typed value). That call lives in\n// the consuming application and is validated against `materialExtractionSchema`.\n// • This module is the schema authority + deterministic enrichment: given an\n// extracted claim, the canon supplies the evidence requirements, source\n// types, greenwashing risk, the greenwash lens, and the gap. No regex,\n// no guessing — governed truth comes from the canon, not the model.\n\nimport { z } from \"zod\";\nimport { claimFamilies } from \"./canon.ts\";\nimport { getGreenwashLens, type GreenwashLens } from \"./data/greenwash-lens.ts\";\n\nconst claimsById = new Map(claimFamilies.map((c) => [c.claimFamilyId, c]));\nconst claimFamilyIds = claimFamilies.map((c) => c.claimFamilyId) as [string, ...string[]];\n\n// ── The constrained vocabulary handed to the extraction model ────────────────\n// The model MUST map each claim to one of these ids — it cannot invent a claim.\nexport const claimVocabulary = claimFamilies.map((c) => ({\n id: c.claimFamilyId,\n name: c.canonicalName,\n definition: c.definition,\n kind: c.claimKind,\n}));\n\n// The clean typed value used on records (a TS union — not sent to a provider).\nexport type TypedValue =\n | { kind: \"number\"; raw: string; number: number; unit: string }\n | { kind: \"boolean\"; raw: string; bool: boolean }\n | { kind: \"text\"; raw: string };\n\n// ── The strict output schema the extraction LLM must satisfy ─────────────────\n// A FLAT object (all fields required, all primitive) — no unions or nulls, so it\n// survives providers that reject JSON-Schema `oneOf`/`anyOf` (e.g. Anthropic).\n// The model sets the unused fields to defaults (number 0, unit \"\", bool false).\nconst extractedValueSchema = z.object({\n kind: z.enum([\"number\", \"boolean\", \"text\"]),\n raw: z.string(),\n number: z.number(),\n unit: z.string(),\n bool: z.boolean(),\n});\n\nexport const extractedClaimSchema = z.object({\n // Constrained to real canon ids — the model cannot fabricate a claim family.\n claimFamilyId: z.enum(claimFamilyIds),\n // The exact phrase from the source, for provenance and highlighting.\n quote: z.string().min(1),\n value: extractedValueSchema,\n});\nexport type ExtractedClaim = z.infer<typeof extractedClaimSchema>;\n\n// Narrow the flat extracted value to the clean typed union for the record.\nfunction toTypedValue(v: ExtractedClaim[\"value\"]): TypedValue {\n if (v.kind === \"number\") return { kind: \"number\", raw: v.raw, number: v.number, unit: v.unit };\n if (v.kind === \"boolean\") return { kind: \"boolean\", raw: v.raw, bool: v.bool };\n return { kind: \"text\", raw: v.raw };\n}\n\nexport const materialExtractionSchema = z.object({\n productName: z.string(),\n claims: z.array(extractedClaimSchema),\n});\nexport type MaterialExtraction = z.infer<typeof materialExtractionSchema>;\n\n// ── The enriched record (extraction + governed canon truth) ──────────────────\nexport type MaterialClaimRecord = {\n claimFamilyId: string;\n claimName: string;\n claimKind: string;\n matchedText: string;\n value: TypedValue;\n impactAreas: string[];\n sourceTypeIds: string[]; // evidence types that could back this claim\n requiredFields: string[]; // what a trustworthy version needs\n missingFields: string[]; // what isn't evidenced yet — the gap\n greenwashingRisk: \"low\" | \"medium\" | \"high\";\n lens: GreenwashLens | null; // reads-as / proves / watch-for\n reviewStatus: \"draft\"; // parsed records start unreviewed\n};\n\nfunction unique(values: string[]): string[] {\n return [...new Set(values)];\n}\n\n// A required field is satisfied when the typed value supplies it (e.g. a\n// percentage value covers a \"percentage\" field). Simple field-name check — not\n// pattern-scraping of free text.\nfunction satisfiedField(field: string, value: TypedValue): boolean {\n if (value.kind !== \"number\") return false;\n const f = field.toLowerCase();\n if (value.unit === \"%\" && (f.includes(\"percent\") || f.includes(\"percentage\"))) return true;\n if (value.unit.startsWith(\"kg\") && (f.includes(\"gwp\") || f.includes(\"carbon\") || f.includes(\"value\"))) {\n return true;\n }\n return false;\n}\n\n// Enrich one LLM-extracted claim with the canon's governed metadata. Returns\n// null if the id somehow isn't in the canon (schema should prevent this).\nexport function enrichExtractedClaim(claim: ExtractedClaim): MaterialClaimRecord | null {\n const family = claimsById.get(claim.claimFamilyId);\n if (!family) return null;\n\n const value = toTypedValue(claim.value);\n const requiredFields = unique(family.sourceRequirements.flatMap((r) => r.requiredFields));\n return {\n claimFamilyId: claim.claimFamilyId,\n claimName: family.canonicalName,\n claimKind: family.claimKind,\n matchedText: claim.quote,\n value,\n impactAreas: [...family.impactAreas],\n sourceTypeIds: unique(family.sourceRequirements.map((r) => r.sourceTypeId)),\n requiredFields,\n missingFields: requiredFields.filter((f) => !satisfiedField(f, value)),\n greenwashingRisk: family.greenwashingRisk,\n lens: getGreenwashLens(claim.claimFamilyId),\n reviewStatus: \"draft\",\n };\n}\n\n// Enrich a whole extraction, de-duped to one record per claim family.\nexport function enrichExtraction(extraction: MaterialExtraction): MaterialClaimRecord[] {\n const byClaim = new Map<string, MaterialClaimRecord>();\n for (const claim of extraction.claims) {\n if (byClaim.has(claim.claimFamilyId)) continue;\n const record = enrichExtractedClaim(claim);\n if (record) byClaim.set(claim.claimFamilyId, record);\n }\n return [...byClaim.values()];\n}\n"],"mappings":"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","names":["claimFamilies","z","z","z","z"]}