{
    "schema_version": "2026-06-17.agent-index.v1",
    "generated_at": "2026-09-26T23:19:52+00:00",
    "generated_by": "Sweeties_Surface_Agent_Index_Service",
    "purpose": "Compiled Product Truth search index for fast natural-language Ask API candidate retrieval.",
    "source_of_truth": [
        "woocommerce_public_catalog",
        "image_binding_service",
        "citation_binding_service",
        "related_entities",
        "buy_routes"
    ],
    "agent_guidance": {
        "ask_endpoint": "https://sweeties.net/wp-json/sweeties/v1/ask",
        "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth",
        "feedback_endpoint": "https://sweeties.net/wp-json/sweeties/v1/machine-feedback",
        "use_for": "Fast public read-only sweets discovery, advice candidate retrieval, comparison grounding and Product Truth payload bundling.",
        "human_purchase_boundary": "Checkout URLs require explicit human purchase intent."
    },
    "product_count": 112,
    "products": [
        {
            "product_id": "1070206",
            "name": "Golden Bears",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Jelly and gummy",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 29,
                    "name": "Jelly and gummy",
                    "slug": "jelly-and-gummy",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW001",
            "slug": "golden-bears",
            "short_description": "Soft, bouncy fruit bears in five flavours: strawberry, orange, lemon, apple and pineapple.",
            "canonical_product_url": "https://sweeties.net/product/golden-bears/",
            "product_json_route": "https://sweeties.net/product/golden-bears/.json",
            "product_markdown_route": "https://sweeties.net/product/golden-bears/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070206",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/golden-bears/",
            "buy_url": "https://sweeties.net/buy/golden-bears/",
            "human_purchase_url": "https://sweeties.net/buy/golden-bears/",
            "buy_card_route": "https://sweeties.net/buy-card/golden-bears/",
            "buy_card_url": "https://sweeties.net/buy-card/golden-bears/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/golden-bears.webp",
            "image": {
                "role": "primary",
                "alt_text": "Golden Bears. A loose pile of about fifteen translucent gummy bears, in five colours: strawberry red, orange, lemon yellow, apple green and a pale clear cream for pineapple.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/golden-bears.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/golden-bears.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/golden-bears.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/golden-bears.webp.json",
                "image_record_id": "wp-attachment-1071313",
                "attachment_id": 1071313,
                "relative_upload_path": "2026/09/golden-bears.webp",
                "filename": "golden-bears.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 98750,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071313",
                    "attachment_id": 1071313,
                    "source": {
                        "relative_upload_path": "2026/09/golden-bears.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/golden-bears.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071313",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/golden-bears/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "lemon, orange, strawberry, pineapple",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "lemon, orange, strawberry, pineapple",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 29,
                        "name": "Jelly and gummy",
                        "slug": "jelly-and-gummy",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070206",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/golden-bears/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070206",
                "product_json_route": "https://sweeties.net/product/golden-bears/.json",
                "product_markdown_route": "https://sweeties.net/product/golden-bears/.md",
                "checkout_url": "https://sweeties.net/buy/golden-bears/",
                "buy_card_route": "https://sweeties.net/buy-card/golden-bears/",
                "citation_anchor": "https://sweeties.net/product/golden-bears/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070206",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/golden-bears.webp",
                "image_record_id": "wp-attachment-1071313",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070206&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070206",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Jelly and gummy",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 45,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " golden bears sweeties net not present in source sw001 spain loose pick and mix sold in 100 g steps lemon orange strawberry pineapple jelly and gummy pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "11eb91fc809be3fbd2004c7179bd35def77b7c954380da8ce262b859c1968d15"
            }
        },
        {
            "product_id": "1070207",
            "name": "Golden Bears, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW001-T3",
            "slug": "golden-bears-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Golden Bears for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/golden-bears-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/golden-bears-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/golden-bears-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070207",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/golden-bears.webp",
            "image": {
                "role": "primary",
                "alt_text": "Golden Bears. A loose pile of about fifteen translucent gummy bears, in five colours: strawberry red, orange, lemon yellow, apple green and a pale clear cream for pineapple.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/golden-bears.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/golden-bears.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/golden-bears.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/golden-bears.webp.json",
                "image_record_id": "wp-attachment-1071313",
                "attachment_id": 1071313,
                "relative_upload_path": "2026/09/golden-bears.webp",
                "filename": "golden-bears.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 98750,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071313",
                    "attachment_id": 1071313,
                    "source": {
                        "relative_upload_path": "2026/09/golden-bears.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/golden-bears.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071313",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/golden-bears-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070207",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/golden-bears-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070207",
                "product_json_route": "https://sweeties.net/product/golden-bears-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/golden-bears-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/golden-bears-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/golden-bears-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070207",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/golden-bears.webp",
                "image_record_id": "wp-attachment-1071313",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070207&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070207",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Jelly and gummy",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 45,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " golden bears 3 kg trade bag not present in source sw001 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "e910255b6aace6b053efef017b727b70bd2ddaf76c0de811df221a52f110ce55"
            }
        },
        {
            "product_id": "1070208",
            "name": "Cola Bottles",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Jelly and gummy",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 29,
                    "name": "Jelly and gummy",
                    "slug": "jelly-and-gummy",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW002",
            "slug": "cola-bottles",
            "short_description": "The classic chewy cola bottle, sweet and smooth with a dark base and a golden top.",
            "canonical_product_url": "https://sweeties.net/product/cola-bottles/",
            "product_json_route": "https://sweeties.net/product/cola-bottles/.json",
            "product_markdown_route": "https://sweeties.net/product/cola-bottles/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070208",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/cola-bottles/",
            "buy_url": "https://sweeties.net/buy/cola-bottles/",
            "human_purchase_url": "https://sweeties.net/buy/cola-bottles/",
            "buy_card_route": "https://sweeties.net/buy-card/cola-bottles/",
            "buy_card_url": "https://sweeties.net/buy-card/cola-bottles/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/cola-bottles.webp",
            "image": {
                "role": "primary",
                "alt_text": "Cola Bottles. Gummy cola bottle sweets, lying at different angles.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/cola-bottles.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/cola-bottles.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/cola-bottles.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/cola-bottles.webp.json",
                "image_record_id": "wp-attachment-1071314",
                "attachment_id": 1071314,
                "relative_upload_path": "2026/09/cola-bottles.webp",
                "filename": "cola-bottles.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 98248,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071314",
                    "attachment_id": 1071314,
                    "source": {
                        "relative_upload_path": "2026/09/cola-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/cola-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071314",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/cola-bottles/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 29,
                        "name": "Jelly and gummy",
                        "slug": "jelly-and-gummy",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070208",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/cola-bottles/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070208",
                "product_json_route": "https://sweeties.net/product/cola-bottles/.json",
                "product_markdown_route": "https://sweeties.net/product/cola-bottles/.md",
                "checkout_url": "https://sweeties.net/buy/cola-bottles/",
                "buy_card_route": "https://sweeties.net/buy-card/cola-bottles/",
                "citation_anchor": "https://sweeties.net/product/cola-bottles/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070208",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/cola-bottles.webp",
                "image_record_id": "wp-attachment-1071314",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070208&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070208",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Jelly and gummy",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 30,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " cola bottles sweeties net not present in source sw002 spain loose pick and mix sold in 100 g steps default jelly and gummy pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "a442d448aa9f39c9ce52868ec9b1047d179fbc73d996fe6070e0e65f8220975a"
            }
        },
        {
            "product_id": "1070209",
            "name": "Cola Bottles, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW002-T3",
            "slug": "cola-bottles-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Cola Bottles for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/cola-bottles-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/cola-bottles-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/cola-bottles-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070209",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/cola-bottles.webp",
            "image": {
                "role": "primary",
                "alt_text": "Cola Bottles. Gummy cola bottle sweets, lying at different angles.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/cola-bottles.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/cola-bottles.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/cola-bottles.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/cola-bottles.webp.json",
                "image_record_id": "wp-attachment-1071314",
                "attachment_id": 1071314,
                "relative_upload_path": "2026/09/cola-bottles.webp",
                "filename": "cola-bottles.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 98248,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071314",
                    "attachment_id": 1071314,
                    "source": {
                        "relative_upload_path": "2026/09/cola-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/cola-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071314",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/cola-bottles-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070209",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/cola-bottles-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070209",
                "product_json_route": "https://sweeties.net/product/cola-bottles-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/cola-bottles-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/cola-bottles-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/cola-bottles-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070209",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/cola-bottles.webp",
                "image_record_id": "wp-attachment-1071314",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070209&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070209",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Jelly and gummy",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 30,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " cola bottles 3 kg trade bag not present in source sw002 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "40627ae36a9fdf63d58da6ff217e38048f66b9a1061aac53b508325302269e3d"
            }
        },
        {
            "product_id": "1070210",
            "name": "Jelly Babies",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Jelly and gummy",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 29,
                    "name": "Jelly and gummy",
                    "slug": "jelly-and-gummy",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW003",
            "slug": "jelly-babies",
            "short_description": "Soft jelly babies with a light dusting of starch, in six fruit flavours.",
            "canonical_product_url": "https://sweeties.net/product/jelly-babies/",
            "product_json_route": "https://sweeties.net/product/jelly-babies/.json",
            "product_markdown_route": "https://sweeties.net/product/jelly-babies/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070210",
            "price": "1.39",
            "price_gbp": 1.39,
            "regular_price_gbp": 1.39,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.39
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/jelly-babies/",
            "buy_url": "https://sweeties.net/buy/jelly-babies/",
            "human_purchase_url": "https://sweeties.net/buy/jelly-babies/",
            "buy_card_route": "https://sweeties.net/buy-card/jelly-babies/",
            "buy_card_url": "https://sweeties.net/buy-card/jelly-babies/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-babies.webp",
            "image": {
                "role": "primary",
                "alt_text": "Jelly Babies. Jelly babies, the little baby shaped figure with a round head, arms at the sides and short legs, in red, orange, yellow, green, pink and black.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/jelly-babies.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/jelly-babies.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-babies.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/jelly-babies.webp.json",
                "image_record_id": "wp-attachment-1071315",
                "attachment_id": 1071315,
                "relative_upload_path": "2026/09/jelly-babies.webp",
                "filename": "jelly-babies.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 109386,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071315",
                    "attachment_id": 1071315,
                    "source": {
                        "relative_upload_path": "2026/09/jelly-babies.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/jelly-babies.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071315",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/jelly-babies/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "beef",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 29,
                        "name": "Jelly and gummy",
                        "slug": "jelly-and-gummy",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070210",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/jelly-babies/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070210",
                "product_json_route": "https://sweeties.net/product/jelly-babies/.json",
                "product_markdown_route": "https://sweeties.net/product/jelly-babies/.md",
                "checkout_url": "https://sweeties.net/buy/jelly-babies/",
                "buy_card_route": "https://sweeties.net/buy-card/jelly-babies/",
                "citation_anchor": "https://sweeties.net/product/jelly-babies/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070210",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-babies.webp",
                "image_record_id": "wp-attachment-1071315",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070210&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070210",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Jelly and gummy",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.39,
                "price_per_100g_gbp": 1.39,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "beef",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 24,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " jelly babies sweeties net not present in source sw003 spain loose pick and mix sold in 100 g steps default jelly and gummy pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "1e6d9112ff217c50409f7e22865b423eb42d4f42914890bd1e845e45a02a12f5"
            }
        },
        {
            "product_id": "1070211",
            "name": "Jelly Babies, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW003-T3",
            "slug": "jelly-babies-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Jelly Babies for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/jelly-babies-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/jelly-babies-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/jelly-babies-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070211",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7003333333333334,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7003333333333334,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 21.01
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-babies.webp",
            "image": {
                "role": "primary",
                "alt_text": "Jelly Babies. Jelly babies, the little baby shaped figure with a round head, arms at the sides and short legs, in red, orange, yellow, green, pink and black.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/jelly-babies.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/jelly-babies.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-babies.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/jelly-babies.webp.json",
                "image_record_id": "wp-attachment-1071315",
                "attachment_id": 1071315,
                "relative_upload_path": "2026/09/jelly-babies.webp",
                "filename": "jelly-babies.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 109386,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071315",
                    "attachment_id": 1071315,
                    "source": {
                        "relative_upload_path": "2026/09/jelly-babies.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/jelly-babies.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071315",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/jelly-babies-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "beef",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070211",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/jelly-babies-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070211",
                "product_json_route": "https://sweeties.net/product/jelly-babies-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/jelly-babies-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/jelly-babies-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/jelly-babies-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070211",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-babies.webp",
                "image_record_id": "wp-attachment-1071315",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070211&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070211",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Jelly and gummy",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "beef",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 24,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " jelly babies 3 kg trade bag not present in source sw003 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "29cba90e444a57fb319337873b20af76ad47c1dc3d27bb10b279adc5ced8314e"
            }
        },
        {
            "product_id": "1070212",
            "name": "Fruit Gums",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Jelly and gummy",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 29,
                    "name": "Jelly and gummy",
                    "slug": "jelly-and-gummy",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW004",
            "slug": "fruit-gums",
            "short_description": "Firm, chewy fruit gums with a proper bite, in blackcurrant, lime, lemon, orange and strawberry.",
            "canonical_product_url": "https://sweeties.net/product/fruit-gums/",
            "product_json_route": "https://sweeties.net/product/fruit-gums/.json",
            "product_markdown_route": "https://sweeties.net/product/fruit-gums/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070212",
            "price": "1.39",
            "price_gbp": 1.39,
            "regular_price_gbp": 1.39,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.39
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/fruit-gums/",
            "buy_url": "https://sweeties.net/buy/fruit-gums/",
            "human_purchase_url": "https://sweeties.net/buy/fruit-gums/",
            "buy_card_route": "https://sweeties.net/buy-card/fruit-gums/",
            "buy_card_url": "https://sweeties.net/buy-card/fruit-gums/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fruit-gums.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fruit Gums. Small firm fruit gums, in rounded gem and lozenge shapes with bevelled edges and a softly moulded top.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fruit-gums.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fruit-gums.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fruit-gums.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fruit-gums.webp.json",
                "image_record_id": "wp-attachment-1071316",
                "attachment_id": 1071316,
                "relative_upload_path": "2026/09/fruit-gums.webp",
                "filename": "fruit-gums.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 122078,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071316",
                    "attachment_id": 1071316,
                    "source": {
                        "relative_upload_path": "2026/09/fruit-gums.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fruit-gums.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071316",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fruit-gums/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "lemon, orange, strawberry",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "lemon, orange, strawberry",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "beef",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 29,
                        "name": "Jelly and gummy",
                        "slug": "jelly-and-gummy",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070212",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fruit-gums/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070212",
                "product_json_route": "https://sweeties.net/product/fruit-gums/.json",
                "product_markdown_route": "https://sweeties.net/product/fruit-gums/.md",
                "checkout_url": "https://sweeties.net/buy/fruit-gums/",
                "buy_card_route": "https://sweeties.net/buy-card/fruit-gums/",
                "citation_anchor": "https://sweeties.net/product/fruit-gums/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070212",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fruit-gums.webp",
                "image_record_id": "wp-attachment-1071316",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070212&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070212",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Jelly and gummy",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.39,
                "price_per_100g_gbp": 1.39,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "beef",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 35,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " fruit gums sweeties net not present in source sw004 spain loose pick and mix sold in 100 g steps lemon orange strawberry jelly and gummy pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "8467bed6eb68950c9fb7f97ac98fc82886e5d9b096708691381710c504a08e99"
            }
        },
        {
            "product_id": "1070213",
            "name": "Fruit Gums, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW004-T3",
            "slug": "fruit-gums-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Fruit Gums for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/fruit-gums-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/fruit-gums-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/fruit-gums-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070213",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7003333333333334,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7003333333333334,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 21.01
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fruit-gums.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fruit Gums. Small firm fruit gums, in rounded gem and lozenge shapes with bevelled edges and a softly moulded top.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fruit-gums.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fruit-gums.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fruit-gums.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fruit-gums.webp.json",
                "image_record_id": "wp-attachment-1071316",
                "attachment_id": 1071316,
                "relative_upload_path": "2026/09/fruit-gums.webp",
                "filename": "fruit-gums.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 122078,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071316",
                    "attachment_id": 1071316,
                    "source": {
                        "relative_upload_path": "2026/09/fruit-gums.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fruit-gums.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071316",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fruit-gums-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "beef",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070213",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fruit-gums-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070213",
                "product_json_route": "https://sweeties.net/product/fruit-gums-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/fruit-gums-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/fruit-gums-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/fruit-gums-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070213",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fruit-gums.webp",
                "image_record_id": "wp-attachment-1071316",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070213&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070213",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Jelly and gummy",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "beef",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 35,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " fruit gums 3 kg trade bag not present in source sw004 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "22b8df23afd406e18adb554d0964c869051153f4350012e5b8a0db7374c59e88"
            }
        },
        {
            "product_id": "1070214",
            "name": "Jelly Snakes",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Jelly and gummy",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 29,
                    "name": "Jelly and gummy",
                    "slug": "jelly-and-gummy",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW005",
            "slug": "jelly-snakes",
            "short_description": "Long, two coloured jelly snakes. Soft, stretchy and very fruity.",
            "canonical_product_url": "https://sweeties.net/product/jelly-snakes/",
            "product_json_route": "https://sweeties.net/product/jelly-snakes/.json",
            "product_markdown_route": "https://sweeties.net/product/jelly-snakes/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070214",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/jelly-snakes/",
            "buy_url": "https://sweeties.net/buy/jelly-snakes/",
            "human_purchase_url": "https://sweeties.net/buy/jelly-snakes/",
            "buy_card_route": "https://sweeties.net/buy-card/jelly-snakes/",
            "buy_card_url": "https://sweeties.net/buy-card/jelly-snakes/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-snakes.webp",
            "image": {
                "role": "primary",
                "alt_text": "Jelly Snakes. Five or six long jelly snakes, loosely coiled and overlapping.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/jelly-snakes.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/jelly-snakes.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-snakes.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/jelly-snakes.webp.json",
                "image_record_id": "wp-attachment-1071317",
                "attachment_id": 1071317,
                "relative_upload_path": "2026/09/jelly-snakes.webp",
                "filename": "jelly-snakes.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 95434,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071317",
                    "attachment_id": 1071317,
                    "source": {
                        "relative_upload_path": "2026/09/jelly-snakes.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/jelly-snakes.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071317",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/jelly-snakes/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 29,
                        "name": "Jelly and gummy",
                        "slug": "jelly-and-gummy",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070214",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/jelly-snakes/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070214",
                "product_json_route": "https://sweeties.net/product/jelly-snakes/.json",
                "product_markdown_route": "https://sweeties.net/product/jelly-snakes/.md",
                "checkout_url": "https://sweeties.net/buy/jelly-snakes/",
                "buy_card_route": "https://sweeties.net/buy-card/jelly-snakes/",
                "citation_anchor": "https://sweeties.net/product/jelly-snakes/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070214",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-snakes.webp",
                "image_record_id": "wp-attachment-1071317",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070214&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070214",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Jelly and gummy",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 12,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " jelly snakes sweeties net not present in source sw005 spain loose pick and mix sold in 100 g steps default jelly and gummy pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "e29315485c5b013b0f68f02ad5f0161b1e280caab82da808f420b7e17ef45ecb"
            }
        },
        {
            "product_id": "1070215",
            "name": "Jelly Snakes, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW005-T3",
            "slug": "jelly-snakes-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Jelly Snakes for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/jelly-snakes-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/jelly-snakes-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/jelly-snakes-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070215",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-snakes.webp",
            "image": {
                "role": "primary",
                "alt_text": "Jelly Snakes. Five or six long jelly snakes, loosely coiled and overlapping.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/jelly-snakes.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/jelly-snakes.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-snakes.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/jelly-snakes.webp.json",
                "image_record_id": "wp-attachment-1071317",
                "attachment_id": 1071317,
                "relative_upload_path": "2026/09/jelly-snakes.webp",
                "filename": "jelly-snakes.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 95434,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071317",
                    "attachment_id": 1071317,
                    "source": {
                        "relative_upload_path": "2026/09/jelly-snakes.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/jelly-snakes.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071317",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/jelly-snakes-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070215",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/jelly-snakes-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070215",
                "product_json_route": "https://sweeties.net/product/jelly-snakes-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/jelly-snakes-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/jelly-snakes-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/jelly-snakes-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070215",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-snakes.webp",
                "image_record_id": "wp-attachment-1071317",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070215&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070215",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Jelly and gummy",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 12,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " jelly snakes 3 kg trade bag not present in source sw005 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "1929e5669744fead8d916a32baba64d633927b9cefc58043105f2c1c4f7a968f"
            }
        },
        {
            "product_id": "1070216",
            "name": "Giant Strawberries",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Jelly and gummy",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 29,
                    "name": "Jelly and gummy",
                    "slug": "jelly-and-gummy",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW006",
            "slug": "giant-strawberries",
            "short_description": "Big strawberry shaped jellies with a soft centre and a sugared finish.",
            "canonical_product_url": "https://sweeties.net/product/giant-strawberries/",
            "product_json_route": "https://sweeties.net/product/giant-strawberries/.json",
            "product_markdown_route": "https://sweeties.net/product/giant-strawberries/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070216",
            "price": "1.59",
            "price_gbp": 1.59,
            "regular_price_gbp": 1.59,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.59
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/giant-strawberries/",
            "buy_url": "https://sweeties.net/buy/giant-strawberries/",
            "human_purchase_url": "https://sweeties.net/buy/giant-strawberries/",
            "buy_card_route": "https://sweeties.net/buy-card/giant-strawberries/",
            "buy_card_url": "https://sweeties.net/buy-card/giant-strawberries/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/giant-strawberries.webp",
            "image": {
                "role": "primary",
                "alt_text": "Giant Strawberries. Large strawberry shaped jelly sweets, red bodies with a moulded green leafy top, the whole sweet coated in fine sparkling sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/giant-strawberries.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/giant-strawberries.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/giant-strawberries.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/giant-strawberries.webp.json",
                "image_record_id": "wp-attachment-1071318",
                "attachment_id": 1071318,
                "relative_upload_path": "2026/09/giant-strawberries.webp",
                "filename": "giant-strawberries.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 183274,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071318",
                    "attachment_id": 1071318,
                    "source": {
                        "relative_upload_path": "2026/09/giant-strawberries.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/giant-strawberries.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071318",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/giant-strawberries/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "strawberry",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "strawberry",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 29,
                        "name": "Jelly and gummy",
                        "slug": "jelly-and-gummy",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070216",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/giant-strawberries/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070216",
                "product_json_route": "https://sweeties.net/product/giant-strawberries/.json",
                "product_markdown_route": "https://sweeties.net/product/giant-strawberries/.md",
                "checkout_url": "https://sweeties.net/buy/giant-strawberries/",
                "buy_card_route": "https://sweeties.net/buy-card/giant-strawberries/",
                "citation_anchor": "https://sweeties.net/product/giant-strawberries/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070216",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/giant-strawberries.webp",
                "image_record_id": "wp-attachment-1071318",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070216&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070216",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Jelly and gummy",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.59,
                "price_per_100g_gbp": 1.59,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 14,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " giant strawberries sweeties net not present in source sw006 spain loose pick and mix sold in 100 g steps strawberry jelly and gummy pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "d76618e917101bca681f13fb135140a1a54bba86b3dee71583d86d98fae6a9af"
            }
        },
        {
            "product_id": "1070217",
            "name": "Giant Strawberries, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW006-T3",
            "slug": "giant-strawberries-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Giant Strawberries for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/giant-strawberries-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/giant-strawberries-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/giant-strawberries-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070217",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.8013333333333333,
                "weight_g": 3000,
                "comparison_price_gbp": 0.8013333333333333,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 24.04
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/giant-strawberries.webp",
            "image": {
                "role": "primary",
                "alt_text": "Giant Strawberries. Large strawberry shaped jelly sweets, red bodies with a moulded green leafy top, the whole sweet coated in fine sparkling sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/giant-strawberries.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/giant-strawberries.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/giant-strawberries.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/giant-strawberries.webp.json",
                "image_record_id": "wp-attachment-1071318",
                "attachment_id": 1071318,
                "relative_upload_path": "2026/09/giant-strawberries.webp",
                "filename": "giant-strawberries.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 183274,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071318",
                    "attachment_id": 1071318,
                    "source": {
                        "relative_upload_path": "2026/09/giant-strawberries.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/giant-strawberries.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071318",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/giant-strawberries-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070217",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/giant-strawberries-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070217",
                "product_json_route": "https://sweeties.net/product/giant-strawberries-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/giant-strawberries-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/giant-strawberries-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/giant-strawberries-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070217",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/giant-strawberries.webp",
                "image_record_id": "wp-attachment-1071318",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070217&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070217",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Jelly and gummy",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 14,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " giant strawberries 3 kg trade bag not present in source sw006 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "a651e22d75b63cee5cc334d0fb389aab358832398917707e459fb7259d170122"
            }
        },
        {
            "product_id": "1070218",
            "name": "Sugared Jelly Rings",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Jelly and gummy",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 29,
                    "name": "Jelly and gummy",
                    "slug": "jelly-and-gummy",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW007",
            "slug": "sugared-jelly-rings",
            "short_description": "Sugar coated jelly rings in five fruit flavours. Made without gelatine.",
            "canonical_product_url": "https://sweeties.net/product/sugared-jelly-rings/",
            "product_json_route": "https://sweeties.net/product/sugared-jelly-rings/.json",
            "product_markdown_route": "https://sweeties.net/product/sugared-jelly-rings/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070218",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/sugared-jelly-rings/",
            "buy_url": "https://sweeties.net/buy/sugared-jelly-rings/",
            "human_purchase_url": "https://sweeties.net/buy/sugared-jelly-rings/",
            "buy_card_route": "https://sweeties.net/buy-card/sugared-jelly-rings/",
            "buy_card_url": "https://sweeties.net/buy-card/sugared-jelly-rings/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sugared-jelly-rings.webp",
            "image": {
                "role": "primary",
                "alt_text": "Sugared Jelly Rings. Flat jelly rings with a round hole in the middle, in red, orange, yellow, green and purple, thickly coated in sparkling white granulated sugar.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/sugared-jelly-rings.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/sugared-jelly-rings.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/sugared-jelly-rings.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/sugared-jelly-rings.webp.json",
                "image_record_id": "wp-attachment-1071319",
                "attachment_id": 1071319,
                "relative_upload_path": "2026/09/sugared-jelly-rings.webp",
                "filename": "sugared-jelly-rings.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 193168,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071319",
                    "attachment_id": 1071319,
                    "source": {
                        "relative_upload_path": "2026/09/sugared-jelly-rings.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/sugared-jelly-rings.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071319",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/sugared-jelly-rings/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 29,
                        "name": "Jelly and gummy",
                        "slug": "jelly-and-gummy",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070218",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sugared-jelly-rings/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070218",
                "product_json_route": "https://sweeties.net/product/sugared-jelly-rings/.json",
                "product_markdown_route": "https://sweeties.net/product/sugared-jelly-rings/.md",
                "checkout_url": "https://sweeties.net/buy/sugared-jelly-rings/",
                "buy_card_route": "https://sweeties.net/buy-card/sugared-jelly-rings/",
                "citation_anchor": "https://sweeties.net/product/sugared-jelly-rings/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070218",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sugared-jelly-rings.webp",
                "image_record_id": "wp-attachment-1071319",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070218&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070218",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Jelly and gummy",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 18,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " sugared jelly rings sweeties net not present in source sw007 spain loose pick and mix sold in 100 g steps default jelly and gummy pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "8a788feca631927c80f9a308bf4de7a89f890763cd1fe0b42c50e8215cbcc163"
            }
        },
        {
            "product_id": "1070219",
            "name": "Sugared Jelly Rings, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW007-T3",
            "slug": "sugared-jelly-rings-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Sugared Jelly Rings for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/sugared-jelly-rings-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/sugared-jelly-rings-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/sugared-jelly-rings-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070219",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sugared-jelly-rings.webp",
            "image": {
                "role": "primary",
                "alt_text": "Sugared Jelly Rings. Flat jelly rings with a round hole in the middle, in red, orange, yellow, green and purple, thickly coated in sparkling white granulated sugar.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/sugared-jelly-rings.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/sugared-jelly-rings.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/sugared-jelly-rings.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/sugared-jelly-rings.webp.json",
                "image_record_id": "wp-attachment-1071319",
                "attachment_id": 1071319,
                "relative_upload_path": "2026/09/sugared-jelly-rings.webp",
                "filename": "sugared-jelly-rings.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 193168,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071319",
                    "attachment_id": 1071319,
                    "source": {
                        "relative_upload_path": "2026/09/sugared-jelly-rings.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/sugared-jelly-rings.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071319",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/sugared-jelly-rings-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070219",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sugared-jelly-rings-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070219",
                "product_json_route": "https://sweeties.net/product/sugared-jelly-rings-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/sugared-jelly-rings-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/sugared-jelly-rings-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/sugared-jelly-rings-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070219",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sugared-jelly-rings.webp",
                "image_record_id": "wp-attachment-1071319",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070219&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070219",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Jelly and gummy",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 18,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " sugared jelly rings 3 kg trade bag not present in source sw007 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "ff2d7cacf8e37323201708fe201d3f7c64d642cb27b62673f9d33b56fe02601f"
            }
        },
        {
            "product_id": "1070220",
            "name": "Gourmet Jelly Beans",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Jelly and gummy",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 29,
                    "name": "Jelly and gummy",
                    "slug": "jelly-and-gummy",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW008",
            "slug": "gourmet-jelly-beans",
            "short_description": "Small, glossy jelly beans in a mix of fruity flavours. Made without gelatine.",
            "canonical_product_url": "https://sweeties.net/product/gourmet-jelly-beans/",
            "product_json_route": "https://sweeties.net/product/gourmet-jelly-beans/.json",
            "product_markdown_route": "https://sweeties.net/product/gourmet-jelly-beans/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070220",
            "price": "1.69",
            "price_gbp": 1.69,
            "regular_price_gbp": 1.69,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.69
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/gourmet-jelly-beans/",
            "buy_url": "https://sweeties.net/buy/gourmet-jelly-beans/",
            "human_purchase_url": "https://sweeties.net/buy/gourmet-jelly-beans/",
            "buy_card_route": "https://sweeties.net/buy-card/gourmet-jelly-beans/",
            "buy_card_url": "https://sweeties.net/buy-card/gourmet-jelly-beans/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/gourmet-jelly-beans.webp",
            "image": {
                "role": "primary",
                "alt_text": "Gourmet Jelly Beans. A generous scatter of about forty small jelly beans, bean shaped with a slight kidney curve, in red, orange, yellow, green, pink, purple, white and blue.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/gourmet-jelly-beans.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/gourmet-jelly-beans.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/gourmet-jelly-beans.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/gourmet-jelly-beans.webp.json",
                "image_record_id": "wp-attachment-1071320",
                "attachment_id": 1071320,
                "relative_upload_path": "2026/09/gourmet-jelly-beans.webp",
                "filename": "gourmet-jelly-beans.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 80996,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071320",
                    "attachment_id": 1071320,
                    "source": {
                        "relative_upload_path": "2026/09/gourmet-jelly-beans.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/gourmet-jelly-beans.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071320",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/gourmet-jelly-beans/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 29,
                        "name": "Jelly and gummy",
                        "slug": "jelly-and-gummy",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070220",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/gourmet-jelly-beans/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070220",
                "product_json_route": "https://sweeties.net/product/gourmet-jelly-beans/.json",
                "product_markdown_route": "https://sweeties.net/product/gourmet-jelly-beans/.md",
                "checkout_url": "https://sweeties.net/buy/gourmet-jelly-beans/",
                "buy_card_route": "https://sweeties.net/buy-card/gourmet-jelly-beans/",
                "citation_anchor": "https://sweeties.net/product/gourmet-jelly-beans/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070220",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/gourmet-jelly-beans.webp",
                "image_record_id": "wp-attachment-1071320",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070220&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070220",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Jelly and gummy",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.69,
                "price_per_100g_gbp": 1.69,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 90,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " gourmet jelly beans sweeties net not present in source sw008 spain loose pick and mix sold in 100 g steps default jelly and gummy pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "97c83f86ac16203405e282beee434560880c4bde6285a2e0e3e47efc348bea2d"
            }
        },
        {
            "product_id": "1070221",
            "name": "Gourmet Jelly Beans, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW008-T3",
            "slug": "gourmet-jelly-beans-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Gourmet Jelly Beans for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/gourmet-jelly-beans-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/gourmet-jelly-beans-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/gourmet-jelly-beans-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070221",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.8516666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.8516666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 25.55
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/gourmet-jelly-beans.webp",
            "image": {
                "role": "primary",
                "alt_text": "Gourmet Jelly Beans. A generous scatter of about forty small jelly beans, bean shaped with a slight kidney curve, in red, orange, yellow, green, pink, purple, white and blue.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/gourmet-jelly-beans.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/gourmet-jelly-beans.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/gourmet-jelly-beans.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/gourmet-jelly-beans.webp.json",
                "image_record_id": "wp-attachment-1071320",
                "attachment_id": 1071320,
                "relative_upload_path": "2026/09/gourmet-jelly-beans.webp",
                "filename": "gourmet-jelly-beans.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 80996,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071320",
                    "attachment_id": 1071320,
                    "source": {
                        "relative_upload_path": "2026/09/gourmet-jelly-beans.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/gourmet-jelly-beans.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071320",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/gourmet-jelly-beans-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070221",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/gourmet-jelly-beans-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070221",
                "product_json_route": "https://sweeties.net/product/gourmet-jelly-beans-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/gourmet-jelly-beans-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/gourmet-jelly-beans-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/gourmet-jelly-beans-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070221",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/gourmet-jelly-beans.webp",
                "image_record_id": "wp-attachment-1071320",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070221&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070221",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Jelly and gummy",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 90,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " gourmet jelly beans 3 kg trade bag not present in source sw008 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "35ba3fe5889516bac44ac40c4ccb8442e2ce2dc1999ad143217dfedec0ed34f7"
            }
        },
        {
            "product_id": "1070222",
            "name": "Peach Hearts",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Jelly and gummy",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 29,
                    "name": "Jelly and gummy",
                    "slug": "jelly-and-gummy",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW009",
            "slug": "peach-hearts",
            "short_description": "Two tone peach flavoured hearts, soft and sugared.",
            "canonical_product_url": "https://sweeties.net/product/peach-hearts/",
            "product_json_route": "https://sweeties.net/product/peach-hearts/.json",
            "product_markdown_route": "https://sweeties.net/product/peach-hearts/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070222",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/peach-hearts/",
            "buy_url": "https://sweeties.net/buy/peach-hearts/",
            "human_purchase_url": "https://sweeties.net/buy/peach-hearts/",
            "buy_card_route": "https://sweeties.net/buy-card/peach-hearts/",
            "buy_card_url": "https://sweeties.net/buy-card/peach-hearts/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/peach-hearts.webp",
            "image": {
                "role": "primary",
                "alt_text": "Peach Hearts. Heart shaped jelly sweets, two tone with a pale peach upper layer and a deeper orange lower layer, coated in fine sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/peach-hearts.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/peach-hearts.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/peach-hearts.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/peach-hearts.webp.json",
                "image_record_id": "wp-attachment-1071321",
                "attachment_id": 1071321,
                "relative_upload_path": "2026/09/peach-hearts.webp",
                "filename": "peach-hearts.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 112250,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071321",
                    "attachment_id": 1071321,
                    "source": {
                        "relative_upload_path": "2026/09/peach-hearts.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/peach-hearts.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071321",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/peach-hearts/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "peach",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "peach",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 29,
                        "name": "Jelly and gummy",
                        "slug": "jelly-and-gummy",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070222",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/peach-hearts/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070222",
                "product_json_route": "https://sweeties.net/product/peach-hearts/.json",
                "product_markdown_route": "https://sweeties.net/product/peach-hearts/.md",
                "checkout_url": "https://sweeties.net/buy/peach-hearts/",
                "buy_card_route": "https://sweeties.net/buy-card/peach-hearts/",
                "citation_anchor": "https://sweeties.net/product/peach-hearts/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070222",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/peach-hearts.webp",
                "image_record_id": "wp-attachment-1071321",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070222&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070222",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Jelly and gummy",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 30,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " peach hearts sweeties net not present in source sw009 spain loose pick and mix sold in 100 g steps peach jelly and gummy pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "cd67dc7a6aa3c2ee9266f90e50d3d4be80990a2af4475f58a4a27ceaaa282e4a"
            }
        },
        {
            "product_id": "1070223",
            "name": "Peach Hearts, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW009-T3",
            "slug": "peach-hearts-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Peach Hearts for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/peach-hearts-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/peach-hearts-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/peach-hearts-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070223",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/peach-hearts.webp",
            "image": {
                "role": "primary",
                "alt_text": "Peach Hearts. Heart shaped jelly sweets, two tone with a pale peach upper layer and a deeper orange lower layer, coated in fine sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/peach-hearts.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/peach-hearts.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/peach-hearts.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/peach-hearts.webp.json",
                "image_record_id": "wp-attachment-1071321",
                "attachment_id": 1071321,
                "relative_upload_path": "2026/09/peach-hearts.webp",
                "filename": "peach-hearts.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 112250,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071321",
                    "attachment_id": 1071321,
                    "source": {
                        "relative_upload_path": "2026/09/peach-hearts.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/peach-hearts.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071321",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/peach-hearts-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "peach",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "peach",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070223",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/peach-hearts-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070223",
                "product_json_route": "https://sweeties.net/product/peach-hearts-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/peach-hearts-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/peach-hearts-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/peach-hearts-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070223",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/peach-hearts.webp",
                "image_record_id": "wp-attachment-1071321",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070223&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070223",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Jelly and gummy",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 30,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " peach hearts 3 kg trade bag not present in source sw009 t3 spain 3 kg bulk bag of loose sweets for shops peach trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "8d4cae5ae5267b47f70aecfc35a10aaef2ab8cc622864ccc2a011a472081f669"
            }
        },
        {
            "product_id": "1070224",
            "name": "Jelly Teeth",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Jelly and gummy",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 29,
                    "name": "Jelly and gummy",
                    "slug": "jelly-and-gummy",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW010",
            "slug": "jelly-teeth",
            "short_description": "Jelly gums with white foam teeth. Strawberry flavoured and a bit silly.",
            "canonical_product_url": "https://sweeties.net/product/jelly-teeth/",
            "product_json_route": "https://sweeties.net/product/jelly-teeth/.json",
            "product_markdown_route": "https://sweeties.net/product/jelly-teeth/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070224",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/jelly-teeth/",
            "buy_url": "https://sweeties.net/buy/jelly-teeth/",
            "human_purchase_url": "https://sweeties.net/buy/jelly-teeth/",
            "buy_card_route": "https://sweeties.net/buy-card/jelly-teeth/",
            "buy_card_url": "https://sweeties.net/buy-card/jelly-teeth/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-teeth.webp",
            "image": {
                "role": "primary",
                "alt_text": "Jelly Teeth. Jelly teeth sweets: a curved band of bright red jelly gums with a row of white foam teeth set into it, like a set of joke false teeth.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/jelly-teeth.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/jelly-teeth.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-teeth.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/jelly-teeth.webp.json",
                "image_record_id": "wp-attachment-1071322",
                "attachment_id": 1071322,
                "relative_upload_path": "2026/09/jelly-teeth.webp",
                "filename": "jelly-teeth.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 71682,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071322",
                    "attachment_id": 1071322,
                    "source": {
                        "relative_upload_path": "2026/09/jelly-teeth.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/jelly-teeth.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071322",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/jelly-teeth/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "strawberry",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "strawberry",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 29,
                        "name": "Jelly and gummy",
                        "slug": "jelly-and-gummy",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070224",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/jelly-teeth/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070224",
                "product_json_route": "https://sweeties.net/product/jelly-teeth/.json",
                "product_markdown_route": "https://sweeties.net/product/jelly-teeth/.md",
                "checkout_url": "https://sweeties.net/buy/jelly-teeth/",
                "buy_card_route": "https://sweeties.net/buy-card/jelly-teeth/",
                "citation_anchor": "https://sweeties.net/product/jelly-teeth/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070224",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-teeth.webp",
                "image_record_id": "wp-attachment-1071322",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070224&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070224",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Jelly and gummy",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 26,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " jelly teeth sweeties net not present in source sw010 spain loose pick and mix sold in 100 g steps strawberry jelly and gummy pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "607e922686d4e1f082270c9999aa50495400261cfcd2c63ceebd0a2a3d689e9d"
            }
        },
        {
            "product_id": "1070225",
            "name": "Jelly Teeth, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW010-T3",
            "slug": "jelly-teeth-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Jelly Teeth for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/jelly-teeth-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/jelly-teeth-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/jelly-teeth-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070225",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-teeth.webp",
            "image": {
                "role": "primary",
                "alt_text": "Jelly Teeth. Jelly teeth sweets: a curved band of bright red jelly gums with a row of white foam teeth set into it, like a set of joke false teeth.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/jelly-teeth.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/jelly-teeth.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-teeth.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/jelly-teeth.webp.json",
                "image_record_id": "wp-attachment-1071322",
                "attachment_id": 1071322,
                "relative_upload_path": "2026/09/jelly-teeth.webp",
                "filename": "jelly-teeth.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 71682,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071322",
                    "attachment_id": 1071322,
                    "source": {
                        "relative_upload_path": "2026/09/jelly-teeth.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/jelly-teeth.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071322",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/jelly-teeth-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070225",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/jelly-teeth-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070225",
                "product_json_route": "https://sweeties.net/product/jelly-teeth-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/jelly-teeth-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/jelly-teeth-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/jelly-teeth-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070225",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-teeth.webp",
                "image_record_id": "wp-attachment-1071322",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070225&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070225",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Jelly and gummy",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 26,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " jelly teeth 3 kg trade bag not present in source sw010 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "fad353cdd0e590b414692b87a653d74cb4a1c6689fc8b3334992507b9c9dafaa"
            }
        },
        {
            "product_id": "1070226",
            "name": "Halal Golden Bears",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Jelly and gummy",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 29,
                    "name": "Jelly and gummy",
                    "slug": "jelly-and-gummy",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW011",
            "slug": "halal-golden-bears",
            "short_description": "Our fruit bears made with halal certified beef gelatine, in five flavours.",
            "canonical_product_url": "https://sweeties.net/product/halal-golden-bears/",
            "product_json_route": "https://sweeties.net/product/halal-golden-bears/.json",
            "product_markdown_route": "https://sweeties.net/product/halal-golden-bears/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070226",
            "price": "1.69",
            "price_gbp": 1.69,
            "regular_price_gbp": 1.69,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.69
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/halal-golden-bears/",
            "buy_url": "https://sweeties.net/buy/halal-golden-bears/",
            "human_purchase_url": "https://sweeties.net/buy/halal-golden-bears/",
            "buy_card_route": "https://sweeties.net/buy-card/halal-golden-bears/",
            "buy_card_url": "https://sweeties.net/buy-card/halal-golden-bears/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/halal-golden-bears.webp",
            "image": {
                "role": "primary",
                "alt_text": "Halal Golden Bears. Translucent gummy bears, in strawberry red, orange, lemon yellow, apple green and a pale clear cream, arranged in a loose, tidy line and a small cluster rather than a heap.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/halal-golden-bears.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/halal-golden-bears.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/halal-golden-bears.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/halal-golden-bears.webp.json",
                "image_record_id": "wp-attachment-1071323",
                "attachment_id": 1071323,
                "relative_upload_path": "2026/09/halal-golden-bears.webp",
                "filename": "halal-golden-bears.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 62330,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071323",
                    "attachment_id": 1071323,
                    "source": {
                        "relative_upload_path": "2026/09/halal-golden-bears.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/halal-golden-bears.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071323",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/halal-golden-bears/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": true,
                        "gluten_free_diets": true
                    },
                    "gelatine": "beef",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 29,
                        "name": "Jelly and gummy",
                        "slug": "jelly-and-gummy",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070226",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/halal-golden-bears/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070226",
                "product_json_route": "https://sweeties.net/product/halal-golden-bears/.json",
                "product_markdown_route": "https://sweeties.net/product/halal-golden-bears/.md",
                "checkout_url": "https://sweeties.net/buy/halal-golden-bears/",
                "buy_card_route": "https://sweeties.net/buy-card/halal-golden-bears/",
                "citation_anchor": "https://sweeties.net/product/halal-golden-bears/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070226",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/halal-golden-bears.webp",
                "image_record_id": "wp-attachment-1071323",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070226&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070226",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Jelly and gummy",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.69,
                "price_per_100g_gbp": 1.69,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": true,
                    "gluten_free_diets": true
                },
                "gelatine": "beef",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 45,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " halal golden bears sweeties net not present in source sw011 spain loose pick and mix sold in 100 g steps default jelly and gummy pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "41950df2e98db5e9ff1483ef76c891e7dbdb8507d448e2328c437cdbacf50973"
            }
        },
        {
            "product_id": "1070227",
            "name": "Halal Golden Bears, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW011-T3",
            "slug": "halal-golden-bears-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Halal Golden Bears for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/halal-golden-bears-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/halal-golden-bears-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/halal-golden-bears-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070227",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.8516666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.8516666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 25.55
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/halal-golden-bears.webp",
            "image": {
                "role": "primary",
                "alt_text": "Halal Golden Bears. Translucent gummy bears, in strawberry red, orange, lemon yellow, apple green and a pale clear cream, arranged in a loose, tidy line and a small cluster rather than a heap.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/halal-golden-bears.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/halal-golden-bears.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/halal-golden-bears.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/halal-golden-bears.webp.json",
                "image_record_id": "wp-attachment-1071323",
                "attachment_id": 1071323,
                "relative_upload_path": "2026/09/halal-golden-bears.webp",
                "filename": "halal-golden-bears.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 62330,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071323",
                    "attachment_id": 1071323,
                    "source": {
                        "relative_upload_path": "2026/09/halal-golden-bears.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/halal-golden-bears.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071323",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/halal-golden-bears-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": true,
                        "gluten_free_diets": true
                    },
                    "gelatine": "beef",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070227",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/halal-golden-bears-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070227",
                "product_json_route": "https://sweeties.net/product/halal-golden-bears-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/halal-golden-bears-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/halal-golden-bears-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/halal-golden-bears-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070227",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/halal-golden-bears.webp",
                "image_record_id": "wp-attachment-1071323",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070227&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070227",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Jelly and gummy",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": true,
                    "gluten_free_diets": true
                },
                "gelatine": "beef",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 45,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " halal golden bears 3 kg trade bag not present in source sw011 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "d4ab5cbaff5e2896fd324d278d27cee8744e2486b425cda9348a1d87d7ad19f2"
            }
        },
        {
            "product_id": "1070228",
            "name": "Vegan Gummy Bears",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Jelly and gummy",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 29,
                    "name": "Jelly and gummy",
                    "slug": "jelly-and-gummy",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW012",
            "slug": "vegan-gummy-bears",
            "short_description": "Fruit bears set with pectin instead of gelatine. Soft, fruity and suitable for vegans.",
            "canonical_product_url": "https://sweeties.net/product/vegan-gummy-bears/",
            "product_json_route": "https://sweeties.net/product/vegan-gummy-bears/.json",
            "product_markdown_route": "https://sweeties.net/product/vegan-gummy-bears/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070228",
            "price": "1.69",
            "price_gbp": 1.69,
            "regular_price_gbp": 1.69,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.69
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/vegan-gummy-bears/",
            "buy_url": "https://sweeties.net/buy/vegan-gummy-bears/",
            "human_purchase_url": "https://sweeties.net/buy/vegan-gummy-bears/",
            "buy_card_route": "https://sweeties.net/buy-card/vegan-gummy-bears/",
            "buy_card_url": "https://sweeties.net/buy-card/vegan-gummy-bears/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/vegan-gummy-bears.webp",
            "image": {
                "role": "primary",
                "alt_text": "Vegan Gummy Bears. Gummy bears, in red, orange, yellow, green and purple, made with pectin, so the surface is slightly more matt and the edges a little softer than a gelatine bear.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/vegan-gummy-bears.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/vegan-gummy-bears.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/vegan-gummy-bears.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/vegan-gummy-bears.webp.json",
                "image_record_id": "wp-attachment-1071324",
                "attachment_id": 1071324,
                "relative_upload_path": "2026/09/vegan-gummy-bears.webp",
                "filename": "vegan-gummy-bears.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 77044,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071324",
                    "attachment_id": 1071324,
                    "source": {
                        "relative_upload_path": "2026/09/vegan-gummy-bears.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/vegan-gummy-bears.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071324",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/vegan-gummy-bears/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 29,
                        "name": "Jelly and gummy",
                        "slug": "jelly-and-gummy",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070228",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/vegan-gummy-bears/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070228",
                "product_json_route": "https://sweeties.net/product/vegan-gummy-bears/.json",
                "product_markdown_route": "https://sweeties.net/product/vegan-gummy-bears/.md",
                "checkout_url": "https://sweeties.net/buy/vegan-gummy-bears/",
                "buy_card_route": "https://sweeties.net/buy-card/vegan-gummy-bears/",
                "citation_anchor": "https://sweeties.net/product/vegan-gummy-bears/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070228",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/vegan-gummy-bears.webp",
                "image_record_id": "wp-attachment-1071324",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070228&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070228",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Jelly and gummy",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.69,
                "price_per_100g_gbp": 1.69,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 45,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " vegan gummy bears sweeties net not present in source sw012 spain loose pick and mix sold in 100 g steps default jelly and gummy pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "739619b49475e67249a07ea6cff14d2e7da045e433bcd8d6df17b17069fd392d"
            }
        },
        {
            "product_id": "1070229",
            "name": "Vegan Gummy Bears, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW012-T3",
            "slug": "vegan-gummy-bears-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Vegan Gummy Bears for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/vegan-gummy-bears-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/vegan-gummy-bears-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/vegan-gummy-bears-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070229",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.8516666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.8516666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 25.55
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/vegan-gummy-bears.webp",
            "image": {
                "role": "primary",
                "alt_text": "Vegan Gummy Bears. Gummy bears, in red, orange, yellow, green and purple, made with pectin, so the surface is slightly more matt and the edges a little softer than a gelatine bear.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/vegan-gummy-bears.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/vegan-gummy-bears.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/vegan-gummy-bears.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/vegan-gummy-bears.webp.json",
                "image_record_id": "wp-attachment-1071324",
                "attachment_id": 1071324,
                "relative_upload_path": "2026/09/vegan-gummy-bears.webp",
                "filename": "vegan-gummy-bears.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 77044,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071324",
                    "attachment_id": 1071324,
                    "source": {
                        "relative_upload_path": "2026/09/vegan-gummy-bears.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/vegan-gummy-bears.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071324",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/vegan-gummy-bears-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070229",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/vegan-gummy-bears-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070229",
                "product_json_route": "https://sweeties.net/product/vegan-gummy-bears-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/vegan-gummy-bears-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/vegan-gummy-bears-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/vegan-gummy-bears-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070229",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/vegan-gummy-bears.webp",
                "image_record_id": "wp-attachment-1071324",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070229&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070229",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Jelly and gummy",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 45,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " vegan gummy bears 3 kg trade bag not present in source sw012 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "14d7aff604f48868df1ce2b487c410da5172553d3bfbdd189ce632f7dcb444c7"
            }
        },
        {
            "product_id": "1070230",
            "name": "Jelly Dinosaurs",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Jelly and gummy",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 29,
                    "name": "Jelly and gummy",
                    "slug": "jelly-and-gummy",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW013",
            "slug": "jelly-dinosaurs",
            "short_description": "Roaring good jelly dinosaurs in five fruit flavours.",
            "canonical_product_url": "https://sweeties.net/product/jelly-dinosaurs/",
            "product_json_route": "https://sweeties.net/product/jelly-dinosaurs/.json",
            "product_markdown_route": "https://sweeties.net/product/jelly-dinosaurs/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070230",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/jelly-dinosaurs/",
            "buy_url": "https://sweeties.net/buy/jelly-dinosaurs/",
            "human_purchase_url": "https://sweeties.net/buy/jelly-dinosaurs/",
            "buy_card_route": "https://sweeties.net/buy-card/jelly-dinosaurs/",
            "buy_card_url": "https://sweeties.net/buy-card/jelly-dinosaurs/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-dinosaurs.webp",
            "image": {
                "role": "primary",
                "alt_text": "Jelly Dinosaurs. Jelly dinosaur sweets, in clear dinosaur silhouettes such as a long necked sauropod, a tyrannosaurus and a stegosaurus with back plates, in green, orange, purple, red and yellow.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/jelly-dinosaurs.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/jelly-dinosaurs.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-dinosaurs.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/jelly-dinosaurs.webp.json",
                "image_record_id": "wp-attachment-1071325",
                "attachment_id": 1071325,
                "relative_upload_path": "2026/09/jelly-dinosaurs.webp",
                "filename": "jelly-dinosaurs.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 107496,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071325",
                    "attachment_id": 1071325,
                    "source": {
                        "relative_upload_path": "2026/09/jelly-dinosaurs.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/jelly-dinosaurs.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071325",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/jelly-dinosaurs/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 29,
                        "name": "Jelly and gummy",
                        "slug": "jelly-and-gummy",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/jelly-and-gummy/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070230",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/jelly-dinosaurs/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070230",
                "product_json_route": "https://sweeties.net/product/jelly-dinosaurs/.json",
                "product_markdown_route": "https://sweeties.net/product/jelly-dinosaurs/.md",
                "checkout_url": "https://sweeties.net/buy/jelly-dinosaurs/",
                "buy_card_route": "https://sweeties.net/buy-card/jelly-dinosaurs/",
                "citation_anchor": "https://sweeties.net/product/jelly-dinosaurs/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070230",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-dinosaurs.webp",
                "image_record_id": "wp-attachment-1071325",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070230&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070230",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Jelly and gummy",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 28,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " jelly dinosaurs sweeties net not present in source sw013 spain loose pick and mix sold in 100 g steps default jelly and gummy pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "67a8bbbe44c0a7455d0738157fbea967193c6b915b3bd5b938a9e5e0465dd22f"
            }
        },
        {
            "product_id": "1070231",
            "name": "Jelly Dinosaurs, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW013-T3",
            "slug": "jelly-dinosaurs-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Jelly Dinosaurs for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/jelly-dinosaurs-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/jelly-dinosaurs-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/jelly-dinosaurs-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070231",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-dinosaurs.webp",
            "image": {
                "role": "primary",
                "alt_text": "Jelly Dinosaurs. Jelly dinosaur sweets, in clear dinosaur silhouettes such as a long necked sauropod, a tyrannosaurus and a stegosaurus with back plates, in green, orange, purple, red and yellow.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/jelly-dinosaurs.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/jelly-dinosaurs.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-dinosaurs.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/jelly-dinosaurs.webp.json",
                "image_record_id": "wp-attachment-1071325",
                "attachment_id": 1071325,
                "relative_upload_path": "2026/09/jelly-dinosaurs.webp",
                "filename": "jelly-dinosaurs.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 107496,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071325",
                    "attachment_id": 1071325,
                    "source": {
                        "relative_upload_path": "2026/09/jelly-dinosaurs.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/jelly-dinosaurs.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071325",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/jelly-dinosaurs-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070231",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/jelly-dinosaurs-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070231",
                "product_json_route": "https://sweeties.net/product/jelly-dinosaurs-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/jelly-dinosaurs-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/jelly-dinosaurs-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/jelly-dinosaurs-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070231",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/jelly-dinosaurs.webp",
                "image_record_id": "wp-attachment-1071325",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070231&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070231",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Jelly and gummy",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 28,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " jelly dinosaurs 3 kg trade bag not present in source sw013 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "4601a8249bdb02823f73de148751a700ac2604cd88da74537e0ddc0b708c88c5"
            }
        },
        {
            "product_id": "1070232",
            "name": "Fizzy Cola Bottles",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fizzy and sour",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 30,
                    "name": "Fizzy and sour",
                    "slug": "fizzy-and-sour",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW014",
            "slug": "fizzy-cola-bottles",
            "short_description": "Cola bottles rolled in sour sugar for a proper fizz before the chew.",
            "canonical_product_url": "https://sweeties.net/product/fizzy-cola-bottles/",
            "product_json_route": "https://sweeties.net/product/fizzy-cola-bottles/.json",
            "product_markdown_route": "https://sweeties.net/product/fizzy-cola-bottles/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070232",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/fizzy-cola-bottles/",
            "buy_url": "https://sweeties.net/buy/fizzy-cola-bottles/",
            "human_purchase_url": "https://sweeties.net/buy/fizzy-cola-bottles/",
            "buy_card_route": "https://sweeties.net/buy-card/fizzy-cola-bottles/",
            "buy_card_url": "https://sweeties.net/buy-card/fizzy-cola-bottles/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-cola-bottles.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fizzy Cola Bottles. Cola bottle gummies, two tone dark cola brown and golden amber, completely coated in coarse, sparkling sour sugar crystals that give a frosted, glittering look.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fizzy-cola-bottles.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-cola-bottles.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-cola-bottles.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-cola-bottles.webp.json",
                "image_record_id": "wp-attachment-1071326",
                "attachment_id": 1071326,
                "relative_upload_path": "2026/09/fizzy-cola-bottles.webp",
                "filename": "fizzy-cola-bottles.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 188394,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071326",
                    "attachment_id": 1071326,
                    "source": {
                        "relative_upload_path": "2026/09/fizzy-cola-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fizzy-cola-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071326",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fizzy-cola-bottles/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 30,
                        "name": "Fizzy and sour",
                        "slug": "fizzy-and-sour",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070232",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fizzy-cola-bottles/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070232",
                "product_json_route": "https://sweeties.net/product/fizzy-cola-bottles/.json",
                "product_markdown_route": "https://sweeties.net/product/fizzy-cola-bottles/.md",
                "checkout_url": "https://sweeties.net/buy/fizzy-cola-bottles/",
                "buy_card_route": "https://sweeties.net/buy-card/fizzy-cola-bottles/",
                "citation_anchor": "https://sweeties.net/product/fizzy-cola-bottles/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070232",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-cola-bottles.webp",
                "image_record_id": "wp-attachment-1071326",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070232&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070232",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fizzy and sour",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 30,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " fizzy cola bottles sweeties net not present in source sw014 spain loose pick and mix sold in 100 g steps default fizzy and sour pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "75d7f6c2a8dc3089ec7dd35e2eff15876ff9f7a26c0e7a65b0b733f887fe99b8"
            }
        },
        {
            "product_id": "1070233",
            "name": "Fizzy Cola Bottles, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW014-T3",
            "slug": "fizzy-cola-bottles-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Fizzy Cola Bottles for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/fizzy-cola-bottles-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/fizzy-cola-bottles-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/fizzy-cola-bottles-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070233",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-cola-bottles.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fizzy Cola Bottles. Cola bottle gummies, two tone dark cola brown and golden amber, completely coated in coarse, sparkling sour sugar crystals that give a frosted, glittering look.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fizzy-cola-bottles.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-cola-bottles.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-cola-bottles.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-cola-bottles.webp.json",
                "image_record_id": "wp-attachment-1071326",
                "attachment_id": 1071326,
                "relative_upload_path": "2026/09/fizzy-cola-bottles.webp",
                "filename": "fizzy-cola-bottles.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 188394,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071326",
                    "attachment_id": 1071326,
                    "source": {
                        "relative_upload_path": "2026/09/fizzy-cola-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fizzy-cola-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071326",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fizzy-cola-bottles-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070233",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fizzy-cola-bottles-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070233",
                "product_json_route": "https://sweeties.net/product/fizzy-cola-bottles-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/fizzy-cola-bottles-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/fizzy-cola-bottles-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/fizzy-cola-bottles-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070233",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-cola-bottles.webp",
                "image_record_id": "wp-attachment-1071326",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070233&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070233",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fizzy and sour",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 30,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " fizzy cola bottles 3 kg trade bag not present in source sw014 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "a62c3158859f351604483d7d0b3876a2cda01cb7af558aed8d406e6647ff4acd"
            }
        },
        {
            "product_id": "1070234",
            "name": "Fizzy Blue Raspberry Bottles",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fizzy and sour",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 30,
                    "name": "Fizzy and sour",
                    "slug": "fizzy-and-sour",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW015",
            "slug": "fizzy-blue-raspberry-bottles",
            "short_description": "Blue and pink bottles with a sharp blue raspberry fizz.",
            "canonical_product_url": "https://sweeties.net/product/fizzy-blue-raspberry-bottles/",
            "product_json_route": "https://sweeties.net/product/fizzy-blue-raspberry-bottles/.json",
            "product_markdown_route": "https://sweeties.net/product/fizzy-blue-raspberry-bottles/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070234",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/fizzy-blue-raspberry-bottles/",
            "buy_url": "https://sweeties.net/buy/fizzy-blue-raspberry-bottles/",
            "human_purchase_url": "https://sweeties.net/buy/fizzy-blue-raspberry-bottles/",
            "buy_card_route": "https://sweeties.net/buy-card/fizzy-blue-raspberry-bottles/",
            "buy_card_url": "https://sweeties.net/buy-card/fizzy-blue-raspberry-bottles/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-blue-raspberry-bottles.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fizzy Blue Raspberry Bottles. Bottle shaped gummies, two tone bright blue and pink, coated in coarse sparkling sour sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fizzy-blue-raspberry-bottles.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-blue-raspberry-bottles.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-blue-raspberry-bottles.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-blue-raspberry-bottles.webp.json",
                "image_record_id": "wp-attachment-1071327",
                "attachment_id": 1071327,
                "relative_upload_path": "2026/09/fizzy-blue-raspberry-bottles.webp",
                "filename": "fizzy-blue-raspberry-bottles.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 151160,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071327",
                    "attachment_id": 1071327,
                    "source": {
                        "relative_upload_path": "2026/09/fizzy-blue-raspberry-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fizzy-blue-raspberry-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071327",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fizzy-blue-raspberry-bottles/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "raspberry",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "raspberry",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 30,
                        "name": "Fizzy and sour",
                        "slug": "fizzy-and-sour",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070234",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fizzy-blue-raspberry-bottles/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070234",
                "product_json_route": "https://sweeties.net/product/fizzy-blue-raspberry-bottles/.json",
                "product_markdown_route": "https://sweeties.net/product/fizzy-blue-raspberry-bottles/.md",
                "checkout_url": "https://sweeties.net/buy/fizzy-blue-raspberry-bottles/",
                "buy_card_route": "https://sweeties.net/buy-card/fizzy-blue-raspberry-bottles/",
                "citation_anchor": "https://sweeties.net/product/fizzy-blue-raspberry-bottles/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070234",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-blue-raspberry-bottles.webp",
                "image_record_id": "wp-attachment-1071327",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070234&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070234",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fizzy and sour",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 30,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " fizzy blue raspberry bottles sweeties net not present in source sw015 spain loose pick and mix sold in 100 g steps raspberry fizzy and sour pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "2b1c6b693edbc21b143bfa240fe348bfad3f2dd24963161584b729d35bc547d0"
            }
        },
        {
            "product_id": "1070235",
            "name": "Fizzy Blue Raspberry Bottles, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW015-T3",
            "slug": "fizzy-blue-raspberry-bottles-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Fizzy Blue Raspberry Bottles for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/fizzy-blue-raspberry-bottles-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/fizzy-blue-raspberry-bottles-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/fizzy-blue-raspberry-bottles-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070235",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-blue-raspberry-bottles.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fizzy Blue Raspberry Bottles. Bottle shaped gummies, two tone bright blue and pink, coated in coarse sparkling sour sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fizzy-blue-raspberry-bottles.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-blue-raspberry-bottles.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-blue-raspberry-bottles.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-blue-raspberry-bottles.webp.json",
                "image_record_id": "wp-attachment-1071327",
                "attachment_id": 1071327,
                "relative_upload_path": "2026/09/fizzy-blue-raspberry-bottles.webp",
                "filename": "fizzy-blue-raspberry-bottles.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 151160,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071327",
                    "attachment_id": 1071327,
                    "source": {
                        "relative_upload_path": "2026/09/fizzy-blue-raspberry-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fizzy-blue-raspberry-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071327",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fizzy-blue-raspberry-bottles-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "raspberry",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "raspberry",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070235",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fizzy-blue-raspberry-bottles-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070235",
                "product_json_route": "https://sweeties.net/product/fizzy-blue-raspberry-bottles-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/fizzy-blue-raspberry-bottles-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/fizzy-blue-raspberry-bottles-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/fizzy-blue-raspberry-bottles-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070235",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-blue-raspberry-bottles.webp",
                "image_record_id": "wp-attachment-1071327",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070235&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070235",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fizzy and sour",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 30,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " fizzy blue raspberry bottles 3 kg trade bag not present in source sw015 t3 spain 3 kg bulk bag of loose sweets for shops raspberry trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "cc2320454a42483a7780b063e315cf03462eb9a5b10d359c4c43e6636577ed01"
            }
        },
        {
            "product_id": "1070236",
            "name": "Fizzy Worms",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fizzy and sour",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 30,
                    "name": "Fizzy and sour",
                    "slug": "fizzy-and-sour",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW016",
            "slug": "fizzy-worms",
            "short_description": "Two coloured worms in sour sugar. Stretchy, tangy and fizzy.",
            "canonical_product_url": "https://sweeties.net/product/fizzy-worms/",
            "product_json_route": "https://sweeties.net/product/fizzy-worms/.json",
            "product_markdown_route": "https://sweeties.net/product/fizzy-worms/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070236",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/fizzy-worms/",
            "buy_url": "https://sweeties.net/buy/fizzy-worms/",
            "human_purchase_url": "https://sweeties.net/buy/fizzy-worms/",
            "buy_card_route": "https://sweeties.net/buy-card/fizzy-worms/",
            "buy_card_url": "https://sweeties.net/buy-card/fizzy-worms/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-worms.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fizzy Worms. Gummy worms, twisting and overlapping, each worm two coloured in pairs such as red and yellow, green and orange, and blue and pink.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fizzy-worms.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-worms.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-worms.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-worms.webp.json",
                "image_record_id": "wp-attachment-1071328",
                "attachment_id": 1071328,
                "relative_upload_path": "2026/09/fizzy-worms.webp",
                "filename": "fizzy-worms.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 150524,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071328",
                    "attachment_id": 1071328,
                    "source": {
                        "relative_upload_path": "2026/09/fizzy-worms.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fizzy-worms.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071328",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fizzy-worms/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 30,
                        "name": "Fizzy and sour",
                        "slug": "fizzy-and-sour",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070236",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fizzy-worms/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070236",
                "product_json_route": "https://sweeties.net/product/fizzy-worms/.json",
                "product_markdown_route": "https://sweeties.net/product/fizzy-worms/.md",
                "checkout_url": "https://sweeties.net/buy/fizzy-worms/",
                "buy_card_route": "https://sweeties.net/buy-card/fizzy-worms/",
                "citation_anchor": "https://sweeties.net/product/fizzy-worms/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070236",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-worms.webp",
                "image_record_id": "wp-attachment-1071328",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070236&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070236",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fizzy and sour",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 14,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " fizzy worms sweeties net not present in source sw016 spain loose pick and mix sold in 100 g steps default fizzy and sour pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "9ff55fb54b06126013b356ff5615ac8a940bb244a69d9377caf0b97c36e5eab5"
            }
        },
        {
            "product_id": "1070237",
            "name": "Fizzy Worms, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW016-T3",
            "slug": "fizzy-worms-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Fizzy Worms for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/fizzy-worms-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/fizzy-worms-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/fizzy-worms-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070237",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-worms.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fizzy Worms. Gummy worms, twisting and overlapping, each worm two coloured in pairs such as red and yellow, green and orange, and blue and pink.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fizzy-worms.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-worms.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-worms.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-worms.webp.json",
                "image_record_id": "wp-attachment-1071328",
                "attachment_id": 1071328,
                "relative_upload_path": "2026/09/fizzy-worms.webp",
                "filename": "fizzy-worms.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 150524,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071328",
                    "attachment_id": 1071328,
                    "source": {
                        "relative_upload_path": "2026/09/fizzy-worms.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fizzy-worms.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071328",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fizzy-worms-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070237",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fizzy-worms-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070237",
                "product_json_route": "https://sweeties.net/product/fizzy-worms-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/fizzy-worms-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/fizzy-worms-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/fizzy-worms-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070237",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-worms.webp",
                "image_record_id": "wp-attachment-1071328",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070237&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070237",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fizzy and sour",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 14,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " fizzy worms 3 kg trade bag not present in source sw016 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "0b2f02458904299526c7eb9099adc112219b274ca56750615e16b85ee4360c66"
            }
        },
        {
            "product_id": "1070238",
            "name": "Sour Cherries",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fizzy and sour",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 30,
                    "name": "Fizzy and sour",
                    "slug": "fizzy-and-sour",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW017",
            "slug": "sour-cherries",
            "short_description": "Pairs of sour cherries on a green stalk, dusted in tangy sugar.",
            "canonical_product_url": "https://sweeties.net/product/sour-cherries/",
            "product_json_route": "https://sweeties.net/product/sour-cherries/.json",
            "product_markdown_route": "https://sweeties.net/product/sour-cherries/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070238",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/sour-cherries/",
            "buy_url": "https://sweeties.net/buy/sour-cherries/",
            "human_purchase_url": "https://sweeties.net/buy/sour-cherries/",
            "buy_card_route": "https://sweeties.net/buy-card/sour-cherries/",
            "buy_card_url": "https://sweeties.net/buy-card/sour-cherries/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-cherries.webp",
            "image": {
                "role": "primary",
                "alt_text": "Sour Cherries. Pairs of red cherry shaped gummies, joined in pairs by a green jelly stalk, dusted all over with fine white sour sugar.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/sour-cherries.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/sour-cherries.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-cherries.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/sour-cherries.webp.json",
                "image_record_id": "wp-attachment-1071329",
                "attachment_id": 1071329,
                "relative_upload_path": "2026/09/sour-cherries.webp",
                "filename": "sour-cherries.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 187834,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071329",
                    "attachment_id": 1071329,
                    "source": {
                        "relative_upload_path": "2026/09/sour-cherries.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/sour-cherries.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071329",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/sour-cherries/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 30,
                        "name": "Fizzy and sour",
                        "slug": "fizzy-and-sour",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070238",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sour-cherries/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070238",
                "product_json_route": "https://sweeties.net/product/sour-cherries/.json",
                "product_markdown_route": "https://sweeties.net/product/sour-cherries/.md",
                "checkout_url": "https://sweeties.net/buy/sour-cherries/",
                "buy_card_route": "https://sweeties.net/buy-card/sour-cherries/",
                "citation_anchor": "https://sweeties.net/product/sour-cherries/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070238",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-cherries.webp",
                "image_record_id": "wp-attachment-1071329",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070238&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070238",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fizzy and sour",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 20,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " sour cherries sweeties net not present in source sw017 spain loose pick and mix sold in 100 g steps default fizzy and sour pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "892d835d6a4130219dea8b7f9a7173ebf82391b786e6b9cb29db6752cba3e198"
            }
        },
        {
            "product_id": "1070239",
            "name": "Sour Cherries, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW017-T3",
            "slug": "sour-cherries-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Sour Cherries for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/sour-cherries-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/sour-cherries-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/sour-cherries-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070239",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-cherries.webp",
            "image": {
                "role": "primary",
                "alt_text": "Sour Cherries. Pairs of red cherry shaped gummies, joined in pairs by a green jelly stalk, dusted all over with fine white sour sugar.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/sour-cherries.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/sour-cherries.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-cherries.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/sour-cherries.webp.json",
                "image_record_id": "wp-attachment-1071329",
                "attachment_id": 1071329,
                "relative_upload_path": "2026/09/sour-cherries.webp",
                "filename": "sour-cherries.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 187834,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071329",
                    "attachment_id": 1071329,
                    "source": {
                        "relative_upload_path": "2026/09/sour-cherries.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/sour-cherries.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071329",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/sour-cherries-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070239",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sour-cherries-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070239",
                "product_json_route": "https://sweeties.net/product/sour-cherries-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/sour-cherries-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/sour-cherries-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/sour-cherries-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070239",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-cherries.webp",
                "image_record_id": "wp-attachment-1071329",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070239&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070239",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fizzy and sour",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 20,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " sour cherries 3 kg trade bag not present in source sw017 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "6e7b8d515a97c5a26827de92a7f5b78c866f57634c3892f0169c2b92e4593b1c"
            }
        },
        {
            "product_id": "1070240",
            "name": "Fizzy Dummies",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fizzy and sour",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 30,
                    "name": "Fizzy and sour",
                    "slug": "fizzy-and-sour",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW018",
            "slug": "fizzy-dummies",
            "short_description": "Pastel jelly dummies with a fizzy sugar coat.",
            "canonical_product_url": "https://sweeties.net/product/fizzy-dummies/",
            "product_json_route": "https://sweeties.net/product/fizzy-dummies/.json",
            "product_markdown_route": "https://sweeties.net/product/fizzy-dummies/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070240",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/fizzy-dummies/",
            "buy_url": "https://sweeties.net/buy/fizzy-dummies/",
            "human_purchase_url": "https://sweeties.net/buy/fizzy-dummies/",
            "buy_card_route": "https://sweeties.net/buy-card/fizzy-dummies/",
            "buy_card_url": "https://sweeties.net/buy-card/fizzy-dummies/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-dummies.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fizzy Dummies. Jelly dummy sweets shaped like a baby soother with a ring handle and a round teat, in pastel pink, yellow, blue, green and purple, coated in a fine fizzy sugar.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fizzy-dummies.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-dummies.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-dummies.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-dummies.webp.json",
                "image_record_id": "wp-attachment-1071330",
                "attachment_id": 1071330,
                "relative_upload_path": "2026/09/fizzy-dummies.webp",
                "filename": "fizzy-dummies.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 143388,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071330",
                    "attachment_id": 1071330,
                    "source": {
                        "relative_upload_path": "2026/09/fizzy-dummies.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fizzy-dummies.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071330",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fizzy-dummies/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 30,
                        "name": "Fizzy and sour",
                        "slug": "fizzy-and-sour",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070240",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fizzy-dummies/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070240",
                "product_json_route": "https://sweeties.net/product/fizzy-dummies/.json",
                "product_markdown_route": "https://sweeties.net/product/fizzy-dummies/.md",
                "checkout_url": "https://sweeties.net/buy/fizzy-dummies/",
                "buy_card_route": "https://sweeties.net/buy-card/fizzy-dummies/",
                "citation_anchor": "https://sweeties.net/product/fizzy-dummies/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070240",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-dummies.webp",
                "image_record_id": "wp-attachment-1071330",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070240&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070240",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fizzy and sour",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 26,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " fizzy dummies sweeties net not present in source sw018 spain loose pick and mix sold in 100 g steps default fizzy and sour pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "3c3a8234e5677234dfe1ab956f16fc2604db9df7ad0c36e7c57ec44eaf876bbd"
            }
        },
        {
            "product_id": "1070241",
            "name": "Fizzy Dummies, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW018-T3",
            "slug": "fizzy-dummies-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Fizzy Dummies for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/fizzy-dummies-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/fizzy-dummies-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/fizzy-dummies-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070241",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-dummies.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fizzy Dummies. Jelly dummy sweets shaped like a baby soother with a ring handle and a round teat, in pastel pink, yellow, blue, green and purple, coated in a fine fizzy sugar.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fizzy-dummies.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-dummies.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-dummies.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-dummies.webp.json",
                "image_record_id": "wp-attachment-1071330",
                "attachment_id": 1071330,
                "relative_upload_path": "2026/09/fizzy-dummies.webp",
                "filename": "fizzy-dummies.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 143388,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071330",
                    "attachment_id": 1071330,
                    "source": {
                        "relative_upload_path": "2026/09/fizzy-dummies.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fizzy-dummies.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071330",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fizzy-dummies-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070241",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fizzy-dummies-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070241",
                "product_json_route": "https://sweeties.net/product/fizzy-dummies-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/fizzy-dummies-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/fizzy-dummies-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/fizzy-dummies-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070241",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-dummies.webp",
                "image_record_id": "wp-attachment-1071330",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070241&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070241",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fizzy and sour",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 26,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " fizzy dummies 3 kg trade bag not present in source sw018 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "ef8ff7e7f5ff8575fa79640c7851bee21df0202928fbd1c0b7dd3693a0b57df1"
            }
        },
        {
            "product_id": "1070242",
            "name": "Sour Apple Rings",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fizzy and sour",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 30,
                    "name": "Fizzy and sour",
                    "slug": "fizzy-and-sour",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW019",
            "slug": "sour-apple-rings",
            "short_description": "Green apple rings with a white base and a mouth puckering sour sugar.",
            "canonical_product_url": "https://sweeties.net/product/sour-apple-rings/",
            "product_json_route": "https://sweeties.net/product/sour-apple-rings/.json",
            "product_markdown_route": "https://sweeties.net/product/sour-apple-rings/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070242",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/sour-apple-rings/",
            "buy_url": "https://sweeties.net/buy/sour-apple-rings/",
            "human_purchase_url": "https://sweeties.net/buy/sour-apple-rings/",
            "buy_card_route": "https://sweeties.net/buy-card/sour-apple-rings/",
            "buy_card_url": "https://sweeties.net/buy-card/sour-apple-rings/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-apple-rings.webp",
            "image": {
                "role": "primary",
                "alt_text": "Sour Apple Rings. Ring shaped gummies with a hole in the middle, with a bright apple green top layer on a white base layer, coated in sparkling sour sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/sour-apple-rings.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/sour-apple-rings.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-apple-rings.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/sour-apple-rings.webp.json",
                "image_record_id": "wp-attachment-1071331",
                "attachment_id": 1071331,
                "relative_upload_path": "2026/09/sour-apple-rings.webp",
                "filename": "sour-apple-rings.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 124552,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071331",
                    "attachment_id": 1071331,
                    "source": {
                        "relative_upload_path": "2026/09/sour-apple-rings.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/sour-apple-rings.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071331",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/sour-apple-rings/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 30,
                        "name": "Fizzy and sour",
                        "slug": "fizzy-and-sour",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070242",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sour-apple-rings/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070242",
                "product_json_route": "https://sweeties.net/product/sour-apple-rings/.json",
                "product_markdown_route": "https://sweeties.net/product/sour-apple-rings/.md",
                "checkout_url": "https://sweeties.net/buy/sour-apple-rings/",
                "buy_card_route": "https://sweeties.net/buy-card/sour-apple-rings/",
                "citation_anchor": "https://sweeties.net/product/sour-apple-rings/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070242",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-apple-rings.webp",
                "image_record_id": "wp-attachment-1071331",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070242&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070242",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fizzy and sour",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 18,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " sour apple rings sweeties net not present in source sw019 spain loose pick and mix sold in 100 g steps default fizzy and sour pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "ec552d727968d73c35234697c15c99382962265cd35c67e304abd2f18c55d896"
            }
        },
        {
            "product_id": "1070243",
            "name": "Sour Apple Rings, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW019-T3",
            "slug": "sour-apple-rings-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Sour Apple Rings for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/sour-apple-rings-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/sour-apple-rings-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/sour-apple-rings-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070243",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-apple-rings.webp",
            "image": {
                "role": "primary",
                "alt_text": "Sour Apple Rings. Ring shaped gummies with a hole in the middle, with a bright apple green top layer on a white base layer, coated in sparkling sour sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/sour-apple-rings.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/sour-apple-rings.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-apple-rings.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/sour-apple-rings.webp.json",
                "image_record_id": "wp-attachment-1071331",
                "attachment_id": 1071331,
                "relative_upload_path": "2026/09/sour-apple-rings.webp",
                "filename": "sour-apple-rings.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 124552,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071331",
                    "attachment_id": 1071331,
                    "source": {
                        "relative_upload_path": "2026/09/sour-apple-rings.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/sour-apple-rings.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071331",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/sour-apple-rings-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070243",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sour-apple-rings-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070243",
                "product_json_route": "https://sweeties.net/product/sour-apple-rings-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/sour-apple-rings-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/sour-apple-rings-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/sour-apple-rings-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070243",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-apple-rings.webp",
                "image_record_id": "wp-attachment-1071331",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070243&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070243",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fizzy and sour",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 18,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " sour apple rings 3 kg trade bag not present in source sw019 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "23f25616d6f81f25ba6e3be7a384007cece41c54d94d6baa733c0ec20ef8204b"
            }
        },
        {
            "product_id": "1070244",
            "name": "Sour Peach Rings",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fizzy and sour",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 30,
                    "name": "Fizzy and sour",
                    "slug": "fizzy-and-sour",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW020",
            "slug": "sour-peach-rings",
            "short_description": "Peach rings in sour sugar, soft in the middle.",
            "canonical_product_url": "https://sweeties.net/product/sour-peach-rings/",
            "product_json_route": "https://sweeties.net/product/sour-peach-rings/.json",
            "product_markdown_route": "https://sweeties.net/product/sour-peach-rings/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070244",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/sour-peach-rings/",
            "buy_url": "https://sweeties.net/buy/sour-peach-rings/",
            "human_purchase_url": "https://sweeties.net/buy/sour-peach-rings/",
            "buy_card_route": "https://sweeties.net/buy-card/sour-peach-rings/",
            "buy_card_url": "https://sweeties.net/buy-card/sour-peach-rings/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-peach-rings.webp",
            "image": {
                "role": "primary",
                "alt_text": "Sour Peach Rings. Ring shaped gummies with a hole in the middle, with a soft peach orange top layer on a yellow base layer, coated in sparkling sour sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/sour-peach-rings.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/sour-peach-rings.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-peach-rings.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/sour-peach-rings.webp.json",
                "image_record_id": "wp-attachment-1071332",
                "attachment_id": 1071332,
                "relative_upload_path": "2026/09/sour-peach-rings.webp",
                "filename": "sour-peach-rings.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 160116,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071332",
                    "attachment_id": 1071332,
                    "source": {
                        "relative_upload_path": "2026/09/sour-peach-rings.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/sour-peach-rings.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071332",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/sour-peach-rings/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "peach",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "peach",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 30,
                        "name": "Fizzy and sour",
                        "slug": "fizzy-and-sour",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070244",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sour-peach-rings/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070244",
                "product_json_route": "https://sweeties.net/product/sour-peach-rings/.json",
                "product_markdown_route": "https://sweeties.net/product/sour-peach-rings/.md",
                "checkout_url": "https://sweeties.net/buy/sour-peach-rings/",
                "buy_card_route": "https://sweeties.net/buy-card/sour-peach-rings/",
                "citation_anchor": "https://sweeties.net/product/sour-peach-rings/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070244",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-peach-rings.webp",
                "image_record_id": "wp-attachment-1071332",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070244&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070244",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fizzy and sour",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 18,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " sour peach rings sweeties net not present in source sw020 spain loose pick and mix sold in 100 g steps peach fizzy and sour pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "68af424f92ca94d61adfd0cedc56038e763add7fabf21ffaabcf1bab7c45d4b2"
            }
        },
        {
            "product_id": "1070245",
            "name": "Sour Peach Rings, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW020-T3",
            "slug": "sour-peach-rings-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Sour Peach Rings for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/sour-peach-rings-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/sour-peach-rings-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/sour-peach-rings-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070245",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-peach-rings.webp",
            "image": {
                "role": "primary",
                "alt_text": "Sour Peach Rings. Ring shaped gummies with a hole in the middle, with a soft peach orange top layer on a yellow base layer, coated in sparkling sour sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/sour-peach-rings.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/sour-peach-rings.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-peach-rings.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/sour-peach-rings.webp.json",
                "image_record_id": "wp-attachment-1071332",
                "attachment_id": 1071332,
                "relative_upload_path": "2026/09/sour-peach-rings.webp",
                "filename": "sour-peach-rings.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 160116,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071332",
                    "attachment_id": 1071332,
                    "source": {
                        "relative_upload_path": "2026/09/sour-peach-rings.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/sour-peach-rings.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071332",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/sour-peach-rings-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "peach",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "peach",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070245",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sour-peach-rings-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070245",
                "product_json_route": "https://sweeties.net/product/sour-peach-rings-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/sour-peach-rings-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/sour-peach-rings-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/sour-peach-rings-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070245",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-peach-rings.webp",
                "image_record_id": "wp-attachment-1071332",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070245&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070245",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fizzy and sour",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 18,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " sour peach rings 3 kg trade bag not present in source sw020 t3 spain 3 kg bulk bag of loose sweets for shops peach trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "9337db0117eded01021c53da2f0857a5863f0438402838197b9aab74254e89c1"
            }
        },
        {
            "product_id": "1070246",
            "name": "Sour Watermelon Slices",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fizzy and sour",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 30,
                    "name": "Fizzy and sour",
                    "slug": "fizzy-and-sour",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW021",
            "slug": "sour-watermelon-slices",
            "short_description": "Pink and green watermelon slices, sour sugared.",
            "canonical_product_url": "https://sweeties.net/product/sour-watermelon-slices/",
            "product_json_route": "https://sweeties.net/product/sour-watermelon-slices/.json",
            "product_markdown_route": "https://sweeties.net/product/sour-watermelon-slices/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070246",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/sour-watermelon-slices/",
            "buy_url": "https://sweeties.net/buy/sour-watermelon-slices/",
            "human_purchase_url": "https://sweeties.net/buy/sour-watermelon-slices/",
            "buy_card_route": "https://sweeties.net/buy-card/sour-watermelon-slices/",
            "buy_card_url": "https://sweeties.net/buy-card/sour-watermelon-slices/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-watermelon-slices.webp",
            "image": {
                "role": "primary",
                "alt_text": "Sour Watermelon Slices. Wedge shaped gummy slices, shaped like a slice of watermelon, with a pink top layer and a green rind layer along the curved edge, coated in sparkling sour sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/sour-watermelon-slices.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/sour-watermelon-slices.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-watermelon-slices.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/sour-watermelon-slices.webp.json",
                "image_record_id": "wp-attachment-1071333",
                "attachment_id": 1071333,
                "relative_upload_path": "2026/09/sour-watermelon-slices.webp",
                "filename": "sour-watermelon-slices.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 149824,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071333",
                    "attachment_id": 1071333,
                    "source": {
                        "relative_upload_path": "2026/09/sour-watermelon-slices.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/sour-watermelon-slices.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071333",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/sour-watermelon-slices/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 30,
                        "name": "Fizzy and sour",
                        "slug": "fizzy-and-sour",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070246",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sour-watermelon-slices/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070246",
                "product_json_route": "https://sweeties.net/product/sour-watermelon-slices/.json",
                "product_markdown_route": "https://sweeties.net/product/sour-watermelon-slices/.md",
                "checkout_url": "https://sweeties.net/buy/sour-watermelon-slices/",
                "buy_card_route": "https://sweeties.net/buy-card/sour-watermelon-slices/",
                "citation_anchor": "https://sweeties.net/product/sour-watermelon-slices/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070246",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-watermelon-slices.webp",
                "image_record_id": "wp-attachment-1071333",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070246&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070246",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fizzy and sour",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 16,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " sour watermelon slices sweeties net not present in source sw021 spain loose pick and mix sold in 100 g steps default fizzy and sour pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "97749adf192ce4dd5310c0bd31751e3f2bf41a41227448885c211115cebba807"
            }
        },
        {
            "product_id": "1070247",
            "name": "Sour Watermelon Slices, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW021-T3",
            "slug": "sour-watermelon-slices-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Sour Watermelon Slices for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/sour-watermelon-slices-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/sour-watermelon-slices-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/sour-watermelon-slices-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070247",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-watermelon-slices.webp",
            "image": {
                "role": "primary",
                "alt_text": "Sour Watermelon Slices. Wedge shaped gummy slices, shaped like a slice of watermelon, with a pink top layer and a green rind layer along the curved edge, coated in sparkling sour sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/sour-watermelon-slices.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/sour-watermelon-slices.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-watermelon-slices.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/sour-watermelon-slices.webp.json",
                "image_record_id": "wp-attachment-1071333",
                "attachment_id": 1071333,
                "relative_upload_path": "2026/09/sour-watermelon-slices.webp",
                "filename": "sour-watermelon-slices.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 149824,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071333",
                    "attachment_id": 1071333,
                    "source": {
                        "relative_upload_path": "2026/09/sour-watermelon-slices.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/sour-watermelon-slices.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071333",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/sour-watermelon-slices-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070247",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sour-watermelon-slices-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070247",
                "product_json_route": "https://sweeties.net/product/sour-watermelon-slices-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/sour-watermelon-slices-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/sour-watermelon-slices-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/sour-watermelon-slices-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070247",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sour-watermelon-slices.webp",
                "image_record_id": "wp-attachment-1071333",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070247&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070247",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fizzy and sour",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 16,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " sour watermelon slices 3 kg trade bag not present in source sw021 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "62d978c3b0de0504a231a85164c168d855d4069f23865ffc7f918f0a1e51872b"
            }
        },
        {
            "product_id": "1070248",
            "name": "Fizzy Strawberry Belts",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fizzy and sour",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 30,
                    "name": "Fizzy and sour",
                    "slug": "fizzy-and-sour",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW022",
            "slug": "fizzy-strawberry-belts",
            "short_description": "Flat strawberry belts with a sour sugar coat. Made without gelatine.",
            "canonical_product_url": "https://sweeties.net/product/fizzy-strawberry-belts/",
            "product_json_route": "https://sweeties.net/product/fizzy-strawberry-belts/.json",
            "product_markdown_route": "https://sweeties.net/product/fizzy-strawberry-belts/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070248",
            "price": "1.59",
            "price_gbp": 1.59,
            "regular_price_gbp": 1.59,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.59
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/fizzy-strawberry-belts/",
            "buy_url": "https://sweeties.net/buy/fizzy-strawberry-belts/",
            "human_purchase_url": "https://sweeties.net/buy/fizzy-strawberry-belts/",
            "buy_card_route": "https://sweeties.net/buy-card/fizzy-strawberry-belts/",
            "buy_card_url": "https://sweeties.net/buy-card/fizzy-strawberry-belts/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-strawberry-belts.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fizzy Strawberry Belts. Six flat chewy belts and, red with a white stripe on one face, some lying flat and some loosely folded over, all coated in sparkling sour sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fizzy-strawberry-belts.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-strawberry-belts.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-strawberry-belts.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-strawberry-belts.webp.json",
                "image_record_id": "wp-attachment-1071334",
                "attachment_id": 1071334,
                "relative_upload_path": "2026/09/fizzy-strawberry-belts.webp",
                "filename": "fizzy-strawberry-belts.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 189990,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071334",
                    "attachment_id": 1071334,
                    "source": {
                        "relative_upload_path": "2026/09/fizzy-strawberry-belts.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fizzy-strawberry-belts.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071334",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fizzy-strawberry-belts/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "strawberry",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "strawberry",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Cereals containing gluten"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": false
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 30,
                        "name": "Fizzy and sour",
                        "slug": "fizzy-and-sour",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070248",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fizzy-strawberry-belts/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070248",
                "product_json_route": "https://sweeties.net/product/fizzy-strawberry-belts/.json",
                "product_markdown_route": "https://sweeties.net/product/fizzy-strawberry-belts/.md",
                "checkout_url": "https://sweeties.net/buy/fizzy-strawberry-belts/",
                "buy_card_route": "https://sweeties.net/buy-card/fizzy-strawberry-belts/",
                "citation_anchor": "https://sweeties.net/product/fizzy-strawberry-belts/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070248",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-strawberry-belts.webp",
                "image_record_id": "wp-attachment-1071334",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070248&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070248",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fizzy and sour",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.59,
                "price_per_100g_gbp": 1.59,
                "allergens_contains": [
                    "Cereals containing gluten"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": false
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 10,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " fizzy strawberry belts sweeties net not present in source sw022 spain loose pick and mix sold in 100 g steps strawberry fizzy and sour pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "a00f7bbc02a94c5788c758bea126ce6963576fd73e1e59359a20fe8efc178409"
            }
        },
        {
            "product_id": "1070249",
            "name": "Fizzy Strawberry Belts, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW022-T3",
            "slug": "fizzy-strawberry-belts-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Fizzy Strawberry Belts for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/fizzy-strawberry-belts-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/fizzy-strawberry-belts-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/fizzy-strawberry-belts-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070249",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.8013333333333333,
                "weight_g": 3000,
                "comparison_price_gbp": 0.8013333333333333,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 24.04
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-strawberry-belts.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fizzy Strawberry Belts. Six flat chewy belts and, red with a white stripe on one face, some lying flat and some loosely folded over, all coated in sparkling sour sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fizzy-strawberry-belts.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-strawberry-belts.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-strawberry-belts.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-strawberry-belts.webp.json",
                "image_record_id": "wp-attachment-1071334",
                "attachment_id": 1071334,
                "relative_upload_path": "2026/09/fizzy-strawberry-belts.webp",
                "filename": "fizzy-strawberry-belts.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 189990,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071334",
                    "attachment_id": 1071334,
                    "source": {
                        "relative_upload_path": "2026/09/fizzy-strawberry-belts.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fizzy-strawberry-belts.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071334",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fizzy-strawberry-belts-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "strawberry",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "strawberry",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Cereals containing gluten"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": false
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070249",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fizzy-strawberry-belts-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070249",
                "product_json_route": "https://sweeties.net/product/fizzy-strawberry-belts-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/fizzy-strawberry-belts-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/fizzy-strawberry-belts-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/fizzy-strawberry-belts-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070249",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-strawberry-belts.webp",
                "image_record_id": "wp-attachment-1071334",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070249&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070249",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fizzy and sour",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [
                    "Cereals containing gluten"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": false
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 10,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " fizzy strawberry belts 3 kg trade bag not present in source sw022 t3 spain 3 kg bulk bag of loose sweets for shops strawberry trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "49cbd1aa0252cdd8fe18bf3003c3905cc6c94f6aca04afbf4b9bd0b1649d7bda"
            }
        },
        {
            "product_id": "1070250",
            "name": "Rainbow Sour Belts",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fizzy and sour",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 30,
                    "name": "Fizzy and sour",
                    "slug": "fizzy-and-sour",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW023",
            "slug": "rainbow-sour-belts",
            "short_description": "Rainbow striped belts with a sharp sour coat. Made without gelatine.",
            "canonical_product_url": "https://sweeties.net/product/rainbow-sour-belts/",
            "product_json_route": "https://sweeties.net/product/rainbow-sour-belts/.json",
            "product_markdown_route": "https://sweeties.net/product/rainbow-sour-belts/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070250",
            "price": "1.59",
            "price_gbp": 1.59,
            "regular_price_gbp": 1.59,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.59
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/rainbow-sour-belts/",
            "buy_url": "https://sweeties.net/buy/rainbow-sour-belts/",
            "human_purchase_url": "https://sweeties.net/buy/rainbow-sour-belts/",
            "buy_card_route": "https://sweeties.net/buy-card/rainbow-sour-belts/",
            "buy_card_url": "https://sweeties.net/buy-card/rainbow-sour-belts/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/rainbow-sour-belts.webp",
            "image": {
                "role": "primary",
                "alt_text": "Rainbow Sour Belts. Six flat chewy belts and, striped lengthways in red, orange, yellow, green, blue and purple, some lying flat and some folded into loose loops, coated in sparkling sour sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/rainbow-sour-belts.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/rainbow-sour-belts.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/rainbow-sour-belts.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/rainbow-sour-belts.webp.json",
                "image_record_id": "wp-attachment-1071335",
                "attachment_id": 1071335,
                "relative_upload_path": "2026/09/rainbow-sour-belts.webp",
                "filename": "rainbow-sour-belts.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 208708,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071335",
                    "attachment_id": 1071335,
                    "source": {
                        "relative_upload_path": "2026/09/rainbow-sour-belts.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/rainbow-sour-belts.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071335",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/rainbow-sour-belts/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Cereals containing gluten"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": false
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 30,
                        "name": "Fizzy and sour",
                        "slug": "fizzy-and-sour",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070250",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/rainbow-sour-belts/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070250",
                "product_json_route": "https://sweeties.net/product/rainbow-sour-belts/.json",
                "product_markdown_route": "https://sweeties.net/product/rainbow-sour-belts/.md",
                "checkout_url": "https://sweeties.net/buy/rainbow-sour-belts/",
                "buy_card_route": "https://sweeties.net/buy-card/rainbow-sour-belts/",
                "citation_anchor": "https://sweeties.net/product/rainbow-sour-belts/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070250",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/rainbow-sour-belts.webp",
                "image_record_id": "wp-attachment-1071335",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070250&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070250",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fizzy and sour",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.59,
                "price_per_100g_gbp": 1.59,
                "allergens_contains": [
                    "Cereals containing gluten"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": false
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 10,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " rainbow sour belts sweeties net not present in source sw023 spain loose pick and mix sold in 100 g steps default fizzy and sour pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "8eecc3ca5bf6c15ad0b3eb573eea043d61693cdd0bdbee3b700dff4c9f8acba6"
            }
        },
        {
            "product_id": "1070251",
            "name": "Rainbow Sour Belts, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW023-T3",
            "slug": "rainbow-sour-belts-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Rainbow Sour Belts for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/rainbow-sour-belts-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/rainbow-sour-belts-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/rainbow-sour-belts-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070251",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.8013333333333333,
                "weight_g": 3000,
                "comparison_price_gbp": 0.8013333333333333,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 24.04
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/rainbow-sour-belts.webp",
            "image": {
                "role": "primary",
                "alt_text": "Rainbow Sour Belts. Six flat chewy belts and, striped lengthways in red, orange, yellow, green, blue and purple, some lying flat and some folded into loose loops, coated in sparkling sour sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/rainbow-sour-belts.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/rainbow-sour-belts.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/rainbow-sour-belts.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/rainbow-sour-belts.webp.json",
                "image_record_id": "wp-attachment-1071335",
                "attachment_id": 1071335,
                "relative_upload_path": "2026/09/rainbow-sour-belts.webp",
                "filename": "rainbow-sour-belts.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 208708,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071335",
                    "attachment_id": 1071335,
                    "source": {
                        "relative_upload_path": "2026/09/rainbow-sour-belts.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/rainbow-sour-belts.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071335",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/rainbow-sour-belts-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Cereals containing gluten"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": false
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070251",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/rainbow-sour-belts-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070251",
                "product_json_route": "https://sweeties.net/product/rainbow-sour-belts-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/rainbow-sour-belts-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/rainbow-sour-belts-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/rainbow-sour-belts-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070251",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/rainbow-sour-belts.webp",
                "image_record_id": "wp-attachment-1071335",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070251&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070251",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fizzy and sour",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [
                    "Cereals containing gluten"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": false
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 10,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " rainbow sour belts 3 kg trade bag not present in source sw023 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "d1e78a28e7c4721f81289ad7c6902328788626b301ac23275c4aa4adf49a7358"
            }
        },
        {
            "product_id": "1070252",
            "name": "Vegan Fizzy Cola Bottles",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fizzy and sour",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 30,
                    "name": "Fizzy and sour",
                    "slug": "fizzy-and-sour",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW024",
            "slug": "vegan-fizzy-cola-bottles",
            "short_description": "Fizzy cola bottles set with pectin and starch, suitable for vegans.",
            "canonical_product_url": "https://sweeties.net/product/vegan-fizzy-cola-bottles/",
            "product_json_route": "https://sweeties.net/product/vegan-fizzy-cola-bottles/.json",
            "product_markdown_route": "https://sweeties.net/product/vegan-fizzy-cola-bottles/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070252",
            "price": "1.69",
            "price_gbp": 1.69,
            "regular_price_gbp": 1.69,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.69
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/vegan-fizzy-cola-bottles/",
            "buy_url": "https://sweeties.net/buy/vegan-fizzy-cola-bottles/",
            "human_purchase_url": "https://sweeties.net/buy/vegan-fizzy-cola-bottles/",
            "buy_card_route": "https://sweeties.net/buy-card/vegan-fizzy-cola-bottles/",
            "buy_card_url": "https://sweeties.net/buy-card/vegan-fizzy-cola-bottles/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/vegan-fizzy-cola-bottles.webp",
            "image": {
                "role": "primary",
                "alt_text": "Vegan Fizzy Cola Bottles. Cola bottle sweets, two tone dark cola brown and golden amber, made with pectin and starch so the jelly looks a little softer and more matt, coated in sparkling sour sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/vegan-fizzy-cola-bottles.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/vegan-fizzy-cola-bottles.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/vegan-fizzy-cola-bottles.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/vegan-fizzy-cola-bottles.webp.json",
                "image_record_id": "wp-attachment-1071336",
                "attachment_id": 1071336,
                "relative_upload_path": "2026/09/vegan-fizzy-cola-bottles.webp",
                "filename": "vegan-fizzy-cola-bottles.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 173514,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071336",
                    "attachment_id": 1071336,
                    "source": {
                        "relative_upload_path": "2026/09/vegan-fizzy-cola-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/vegan-fizzy-cola-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071336",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/vegan-fizzy-cola-bottles/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 30,
                        "name": "Fizzy and sour",
                        "slug": "fizzy-and-sour",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070252",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/vegan-fizzy-cola-bottles/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070252",
                "product_json_route": "https://sweeties.net/product/vegan-fizzy-cola-bottles/.json",
                "product_markdown_route": "https://sweeties.net/product/vegan-fizzy-cola-bottles/.md",
                "checkout_url": "https://sweeties.net/buy/vegan-fizzy-cola-bottles/",
                "buy_card_route": "https://sweeties.net/buy-card/vegan-fizzy-cola-bottles/",
                "citation_anchor": "https://sweeties.net/product/vegan-fizzy-cola-bottles/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070252",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/vegan-fizzy-cola-bottles.webp",
                "image_record_id": "wp-attachment-1071336",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070252&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070252",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fizzy and sour",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.69,
                "price_per_100g_gbp": 1.69,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 30,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " vegan fizzy cola bottles sweeties net not present in source sw024 spain loose pick and mix sold in 100 g steps default fizzy and sour pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "700d23bbdccd913f0710f9f729a2b44dbee864845664f896b15f0c35b18baee0"
            }
        },
        {
            "product_id": "1070253",
            "name": "Vegan Fizzy Cola Bottles, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW024-T3",
            "slug": "vegan-fizzy-cola-bottles-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Vegan Fizzy Cola Bottles for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/vegan-fizzy-cola-bottles-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/vegan-fizzy-cola-bottles-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/vegan-fizzy-cola-bottles-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070253",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.8516666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.8516666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 25.55
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/vegan-fizzy-cola-bottles.webp",
            "image": {
                "role": "primary",
                "alt_text": "Vegan Fizzy Cola Bottles. Cola bottle sweets, two tone dark cola brown and golden amber, made with pectin and starch so the jelly looks a little softer and more matt, coated in sparkling sour sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/vegan-fizzy-cola-bottles.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/vegan-fizzy-cola-bottles.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/vegan-fizzy-cola-bottles.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/vegan-fizzy-cola-bottles.webp.json",
                "image_record_id": "wp-attachment-1071336",
                "attachment_id": 1071336,
                "relative_upload_path": "2026/09/vegan-fizzy-cola-bottles.webp",
                "filename": "vegan-fizzy-cola-bottles.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 173514,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071336",
                    "attachment_id": 1071336,
                    "source": {
                        "relative_upload_path": "2026/09/vegan-fizzy-cola-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/vegan-fizzy-cola-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071336",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/vegan-fizzy-cola-bottles-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070253",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/vegan-fizzy-cola-bottles-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070253",
                "product_json_route": "https://sweeties.net/product/vegan-fizzy-cola-bottles-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/vegan-fizzy-cola-bottles-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/vegan-fizzy-cola-bottles-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/vegan-fizzy-cola-bottles-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070253",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/vegan-fizzy-cola-bottles.webp",
                "image_record_id": "wp-attachment-1071336",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070253&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070253",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fizzy and sour",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 30,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " vegan fizzy cola bottles 3 kg trade bag not present in source sw024 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "bff69b646398e65f90f359610cd31f7f70e4bbf9d34318a443e75e0971334b39"
            }
        },
        {
            "product_id": "1070254",
            "name": "Fizzy Bubblegum Bottles",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fizzy and sour",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 30,
                    "name": "Fizzy and sour",
                    "slug": "fizzy-and-sour",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW025",
            "slug": "fizzy-bubblegum-bottles",
            "short_description": "Pink and blue bottles tasting of bubblegum, in fizzy sugar.",
            "canonical_product_url": "https://sweeties.net/product/fizzy-bubblegum-bottles/",
            "product_json_route": "https://sweeties.net/product/fizzy-bubblegum-bottles/.json",
            "product_markdown_route": "https://sweeties.net/product/fizzy-bubblegum-bottles/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070254",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/fizzy-bubblegum-bottles/",
            "buy_url": "https://sweeties.net/buy/fizzy-bubblegum-bottles/",
            "human_purchase_url": "https://sweeties.net/buy/fizzy-bubblegum-bottles/",
            "buy_card_route": "https://sweeties.net/buy-card/fizzy-bubblegum-bottles/",
            "buy_card_url": "https://sweeties.net/buy-card/fizzy-bubblegum-bottles/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-bubblegum-bottles.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fizzy Bubblegum Bottles. Bottle shaped gummies, two tone bubblegum pink and pale blue, coated in sparkling sour sugar crystals, soft pastel colours under the frosted sugar.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fizzy-bubblegum-bottles.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-bubblegum-bottles.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-bubblegum-bottles.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-bubblegum-bottles.webp.json",
                "image_record_id": "wp-attachment-1071337",
                "attachment_id": 1071337,
                "relative_upload_path": "2026/09/fizzy-bubblegum-bottles.webp",
                "filename": "fizzy-bubblegum-bottles.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 126996,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071337",
                    "attachment_id": 1071337,
                    "source": {
                        "relative_upload_path": "2026/09/fizzy-bubblegum-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fizzy-bubblegum-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071337",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fizzy-bubblegum-bottles/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 30,
                        "name": "Fizzy and sour",
                        "slug": "fizzy-and-sour",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fizzy-and-sour/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070254",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fizzy-bubblegum-bottles/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070254",
                "product_json_route": "https://sweeties.net/product/fizzy-bubblegum-bottles/.json",
                "product_markdown_route": "https://sweeties.net/product/fizzy-bubblegum-bottles/.md",
                "checkout_url": "https://sweeties.net/buy/fizzy-bubblegum-bottles/",
                "buy_card_route": "https://sweeties.net/buy-card/fizzy-bubblegum-bottles/",
                "citation_anchor": "https://sweeties.net/product/fizzy-bubblegum-bottles/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070254",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-bubblegum-bottles.webp",
                "image_record_id": "wp-attachment-1071337",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070254&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070254",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fizzy and sour",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 30,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " fizzy bubblegum bottles sweeties net not present in source sw025 spain loose pick and mix sold in 100 g steps default fizzy and sour pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "7e509c92897f5d5dc496801cfcd6e14ceb84d1f5d595ce82e70c6a2cd4dcaf47"
            }
        },
        {
            "product_id": "1070255",
            "name": "Fizzy Bubblegum Bottles, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW025-T3",
            "slug": "fizzy-bubblegum-bottles-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Fizzy Bubblegum Bottles for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/fizzy-bubblegum-bottles-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/fizzy-bubblegum-bottles-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/fizzy-bubblegum-bottles-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070255",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-bubblegum-bottles.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fizzy Bubblegum Bottles. Bottle shaped gummies, two tone bubblegum pink and pale blue, coated in sparkling sour sugar crystals, soft pastel colours under the frosted sugar.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fizzy-bubblegum-bottles.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-bubblegum-bottles.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-bubblegum-bottles.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-bubblegum-bottles.webp.json",
                "image_record_id": "wp-attachment-1071337",
                "attachment_id": 1071337,
                "relative_upload_path": "2026/09/fizzy-bubblegum-bottles.webp",
                "filename": "fizzy-bubblegum-bottles.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 126996,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071337",
                    "attachment_id": 1071337,
                    "source": {
                        "relative_upload_path": "2026/09/fizzy-bubblegum-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fizzy-bubblegum-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071337",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fizzy-bubblegum-bottles-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070255",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fizzy-bubblegum-bottles-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070255",
                "product_json_route": "https://sweeties.net/product/fizzy-bubblegum-bottles-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/fizzy-bubblegum-bottles-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/fizzy-bubblegum-bottles-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/fizzy-bubblegum-bottles-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070255",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fizzy-bubblegum-bottles.webp",
                "image_record_id": "wp-attachment-1071337",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070255&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070255",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fizzy and sour",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 30,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " fizzy bubblegum bottles 3 kg trade bag not present in source sw025 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "a87f30b7ac770d07b0d30bbabf430d40ec127da03515ee7e5cde5449bc01ff24"
            }
        },
        {
            "product_id": "1070256",
            "name": "Foam Bananas",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Foam sweets",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 31,
                    "name": "Foam sweets",
                    "slug": "foam-sweets",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/foam-sweets/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW026",
            "slug": "foam-bananas",
            "short_description": "Soft, airy foam bananas. Light as anything.",
            "canonical_product_url": "https://sweeties.net/product/foam-bananas/",
            "product_json_route": "https://sweeties.net/product/foam-bananas/.json",
            "product_markdown_route": "https://sweeties.net/product/foam-bananas/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070256",
            "price": "1.39",
            "price_gbp": 1.39,
            "regular_price_gbp": 1.39,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.39
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/foam-bananas/",
            "buy_url": "https://sweeties.net/buy/foam-bananas/",
            "human_purchase_url": "https://sweeties.net/buy/foam-bananas/",
            "buy_card_route": "https://sweeties.net/buy-card/foam-bananas/",
            "buy_card_url": "https://sweeties.net/buy-card/foam-bananas/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/foam-bananas.webp",
            "image": {
                "role": "primary",
                "alt_text": "Foam Bananas. Foam banana sweets, curved like a small banana, pale yellow, soft and airy with a matt, fine powdery surface.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/foam-bananas.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/foam-bananas.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/foam-bananas.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/foam-bananas.webp.json",
                "image_record_id": "wp-attachment-1071338",
                "attachment_id": 1071338,
                "relative_upload_path": "2026/09/foam-bananas.webp",
                "filename": "foam-bananas.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 50870,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071338",
                    "attachment_id": 1071338,
                    "source": {
                        "relative_upload_path": "2026/09/foam-bananas.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/foam-bananas.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071338",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/foam-bananas/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 31,
                        "name": "Foam sweets",
                        "slug": "foam-sweets",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/foam-sweets/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070256",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/foam-bananas/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070256",
                "product_json_route": "https://sweeties.net/product/foam-bananas/.json",
                "product_markdown_route": "https://sweeties.net/product/foam-bananas/.md",
                "checkout_url": "https://sweeties.net/buy/foam-bananas/",
                "buy_card_route": "https://sweeties.net/buy-card/foam-bananas/",
                "citation_anchor": "https://sweeties.net/product/foam-bananas/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070256",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/foam-bananas.webp",
                "image_record_id": "wp-attachment-1071338",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070256&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070256",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Foam",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.39,
                "price_per_100g_gbp": 1.39,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 22,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " foam bananas sweeties net not present in source sw026 spain loose pick and mix sold in 100 g steps default foam sweets pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "5a990ea6d5b93296d5a2a2de6532e8281e696239197716fdee06784287ce9cf3"
            }
        },
        {
            "product_id": "1070257",
            "name": "Foam Bananas, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW026-T3",
            "slug": "foam-bananas-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Foam Bananas for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/foam-bananas-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/foam-bananas-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/foam-bananas-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070257",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7003333333333334,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7003333333333334,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 21.01
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/foam-bananas.webp",
            "image": {
                "role": "primary",
                "alt_text": "Foam Bananas. Foam banana sweets, curved like a small banana, pale yellow, soft and airy with a matt, fine powdery surface.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/foam-bananas.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/foam-bananas.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/foam-bananas.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/foam-bananas.webp.json",
                "image_record_id": "wp-attachment-1071338",
                "attachment_id": 1071338,
                "relative_upload_path": "2026/09/foam-bananas.webp",
                "filename": "foam-bananas.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 50870,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071338",
                    "attachment_id": 1071338,
                    "source": {
                        "relative_upload_path": "2026/09/foam-bananas.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/foam-bananas.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071338",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/foam-bananas-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070257",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/foam-bananas-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070257",
                "product_json_route": "https://sweeties.net/product/foam-bananas-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/foam-bananas-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/foam-bananas-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/foam-bananas-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070257",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/foam-bananas.webp",
                "image_record_id": "wp-attachment-1071338",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070257&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070257",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Foam",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 22,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " foam bananas 3 kg trade bag not present in source sw026 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "37d0e9a32c98767ec2ffab544620404750505c6ba4175ed22fe80b7525a496b0"
            }
        },
        {
            "product_id": "1070258",
            "name": "Fried Eggs",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Foam sweets",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 31,
                    "name": "Foam sweets",
                    "slug": "foam-sweets",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/foam-sweets/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW027",
            "slug": "fried-eggs",
            "short_description": "Jelly yolks on soft white foam, shaped like little fried eggs.",
            "canonical_product_url": "https://sweeties.net/product/fried-eggs/",
            "product_json_route": "https://sweeties.net/product/fried-eggs/.json",
            "product_markdown_route": "https://sweeties.net/product/fried-eggs/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070258",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/fried-eggs/",
            "buy_url": "https://sweeties.net/buy/fried-eggs/",
            "human_purchase_url": "https://sweeties.net/buy/fried-eggs/",
            "buy_card_route": "https://sweeties.net/buy-card/fried-eggs/",
            "buy_card_url": "https://sweeties.net/buy-card/fried-eggs/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fried-eggs.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fried Eggs. Fried egg sweets: a flat, soft white foam base shaped like an egg white with a round, glossy, domed yellow jelly yolk in the middle.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fried-eggs.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fried-eggs.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fried-eggs.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fried-eggs.webp.json",
                "image_record_id": "wp-attachment-1071339",
                "attachment_id": 1071339,
                "relative_upload_path": "2026/09/fried-eggs.webp",
                "filename": "fried-eggs.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 37930,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071339",
                    "attachment_id": 1071339,
                    "source": {
                        "relative_upload_path": "2026/09/fried-eggs.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fried-eggs.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071339",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fried-eggs/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 31,
                        "name": "Foam sweets",
                        "slug": "foam-sweets",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/foam-sweets/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070258",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fried-eggs/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070258",
                "product_json_route": "https://sweeties.net/product/fried-eggs/.json",
                "product_markdown_route": "https://sweeties.net/product/fried-eggs/.md",
                "checkout_url": "https://sweeties.net/buy/fried-eggs/",
                "buy_card_route": "https://sweeties.net/buy-card/fried-eggs/",
                "citation_anchor": "https://sweeties.net/product/fried-eggs/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070258",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fried-eggs.webp",
                "image_record_id": "wp-attachment-1071339",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070258&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070258",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Foam",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 20,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " fried eggs sweeties net not present in source sw027 spain loose pick and mix sold in 100 g steps default foam sweets pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "945774d36c1eb4cd17f39dc1076d0c195fc06836b0ed7ff83d0adf088ff82fb2"
            }
        },
        {
            "product_id": "1070259",
            "name": "Fried Eggs, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW027-T3",
            "slug": "fried-eggs-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Fried Eggs for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/fried-eggs-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/fried-eggs-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/fried-eggs-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070259",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fried-eggs.webp",
            "image": {
                "role": "primary",
                "alt_text": "Fried Eggs. Fried egg sweets: a flat, soft white foam base shaped like an egg white with a round, glossy, domed yellow jelly yolk in the middle.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/fried-eggs.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/fried-eggs.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/fried-eggs.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/fried-eggs.webp.json",
                "image_record_id": "wp-attachment-1071339",
                "attachment_id": 1071339,
                "relative_upload_path": "2026/09/fried-eggs.webp",
                "filename": "fried-eggs.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 37930,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071339",
                    "attachment_id": 1071339,
                    "source": {
                        "relative_upload_path": "2026/09/fried-eggs.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/fried-eggs.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071339",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/fried-eggs-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070259",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/fried-eggs-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070259",
                "product_json_route": "https://sweeties.net/product/fried-eggs-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/fried-eggs-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/fried-eggs-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/fried-eggs-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070259",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/fried-eggs.webp",
                "image_record_id": "wp-attachment-1071339",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070259&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070259",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Foam",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 20,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " fried eggs 3 kg trade bag not present in source sw027 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "976d63725da112cd9334e7c5f057abadff757fd6d40b45a54292b65e4775fd17"
            }
        },
        {
            "product_id": "1070260",
            "name": "Foam Shrimps",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Foam sweets",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 31,
                    "name": "Foam sweets",
                    "slug": "foam-sweets",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/foam-sweets/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW028",
            "slug": "foam-shrimps",
            "short_description": "Pink and white foam shrimps. Named for their shape: no shellfish in them at all.",
            "canonical_product_url": "https://sweeties.net/product/foam-shrimps/",
            "product_json_route": "https://sweeties.net/product/foam-shrimps/.json",
            "product_markdown_route": "https://sweeties.net/product/foam-shrimps/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070260",
            "price": "1.39",
            "price_gbp": 1.39,
            "regular_price_gbp": 1.39,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.39
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/foam-shrimps/",
            "buy_url": "https://sweeties.net/buy/foam-shrimps/",
            "human_purchase_url": "https://sweeties.net/buy/foam-shrimps/",
            "buy_card_route": "https://sweeties.net/buy-card/foam-shrimps/",
            "buy_card_url": "https://sweeties.net/buy-card/foam-shrimps/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/foam-shrimps.webp",
            "image": {
                "role": "primary",
                "alt_text": "Foam Shrimps. Foam shrimp sweets, curved and segmented like a small shrimp, two tone pink and white, with a soft matt foam surface.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/foam-shrimps.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/foam-shrimps.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/foam-shrimps.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/foam-shrimps.webp.json",
                "image_record_id": "wp-attachment-1071340",
                "attachment_id": 1071340,
                "relative_upload_path": "2026/09/foam-shrimps.webp",
                "filename": "foam-shrimps.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 67284,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071340",
                    "attachment_id": 1071340,
                    "source": {
                        "relative_upload_path": "2026/09/foam-shrimps.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/foam-shrimps.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071340",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/foam-shrimps/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 31,
                        "name": "Foam sweets",
                        "slug": "foam-sweets",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/foam-sweets/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070260",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/foam-shrimps/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070260",
                "product_json_route": "https://sweeties.net/product/foam-shrimps/.json",
                "product_markdown_route": "https://sweeties.net/product/foam-shrimps/.md",
                "checkout_url": "https://sweeties.net/buy/foam-shrimps/",
                "buy_card_route": "https://sweeties.net/buy-card/foam-shrimps/",
                "citation_anchor": "https://sweeties.net/product/foam-shrimps/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070260",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/foam-shrimps.webp",
                "image_record_id": "wp-attachment-1071340",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070260&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070260",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Foam",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.39,
                "price_per_100g_gbp": 1.39,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 28,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " foam shrimps sweeties net not present in source sw028 spain loose pick and mix sold in 100 g steps default foam sweets pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "f4a6915e2f3879914ddbf6c10d7c402a718497d2f8f411c4572e42d78788cfb7"
            }
        },
        {
            "product_id": "1070261",
            "name": "Foam Shrimps, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW028-T3",
            "slug": "foam-shrimps-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Foam Shrimps for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/foam-shrimps-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/foam-shrimps-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/foam-shrimps-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070261",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7003333333333334,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7003333333333334,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 21.01
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/foam-shrimps.webp",
            "image": {
                "role": "primary",
                "alt_text": "Foam Shrimps. Foam shrimp sweets, curved and segmented like a small shrimp, two tone pink and white, with a soft matt foam surface.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/foam-shrimps.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/foam-shrimps.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/foam-shrimps.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/foam-shrimps.webp.json",
                "image_record_id": "wp-attachment-1071340",
                "attachment_id": 1071340,
                "relative_upload_path": "2026/09/foam-shrimps.webp",
                "filename": "foam-shrimps.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 67284,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071340",
                    "attachment_id": 1071340,
                    "source": {
                        "relative_upload_path": "2026/09/foam-shrimps.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/foam-shrimps.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071340",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/foam-shrimps-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070261",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/foam-shrimps-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070261",
                "product_json_route": "https://sweeties.net/product/foam-shrimps-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/foam-shrimps-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/foam-shrimps-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/foam-shrimps-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070261",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/foam-shrimps.webp",
                "image_record_id": "wp-attachment-1071340",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070261&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070261",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Foam",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 28,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " foam shrimps 3 kg trade bag not present in source sw028 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "933e03d9832d100a54d094992dcba13a8d3acaa752e2f307cdfa53709601211d"
            }
        },
        {
            "product_id": "1070262",
            "name": "Pink and White Mice",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Foam sweets",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 31,
                    "name": "Foam sweets",
                    "slug": "foam-sweets",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/foam-sweets/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW029",
            "slug": "pink-and-white-mice",
            "short_description": "Little foam mice in pink and white, soft and vanilla sweet.",
            "canonical_product_url": "https://sweeties.net/product/pink-and-white-mice/",
            "product_json_route": "https://sweeties.net/product/pink-and-white-mice/.json",
            "product_markdown_route": "https://sweeties.net/product/pink-and-white-mice/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070262",
            "price": "1.39",
            "price_gbp": 1.39,
            "regular_price_gbp": 1.39,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.39
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/pink-and-white-mice/",
            "buy_url": "https://sweeties.net/buy/pink-and-white-mice/",
            "human_purchase_url": "https://sweeties.net/buy/pink-and-white-mice/",
            "buy_card_route": "https://sweeties.net/buy-card/pink-and-white-mice/",
            "buy_card_url": "https://sweeties.net/buy-card/pink-and-white-mice/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/pink-and-white-mice.webp",
            "image": {
                "role": "primary",
                "alt_text": "Pink and White Mice. Small foam mice, in soft pink and white, with a pointed nose, little rounded ears and a short tail, matt, soft and slightly powdery.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/pink-and-white-mice.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/pink-and-white-mice.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/pink-and-white-mice.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/pink-and-white-mice.webp.json",
                "image_record_id": "wp-attachment-1071341",
                "attachment_id": 1071341,
                "relative_upload_path": "2026/09/pink-and-white-mice.webp",
                "filename": "pink-and-white-mice.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 50174,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071341",
                    "attachment_id": 1071341,
                    "source": {
                        "relative_upload_path": "2026/09/pink-and-white-mice.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/pink-and-white-mice.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071341",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/pink-and-white-mice/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "vanilla",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "vanilla",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 31,
                        "name": "Foam sweets",
                        "slug": "foam-sweets",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/foam-sweets/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070262",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/pink-and-white-mice/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070262",
                "product_json_route": "https://sweeties.net/product/pink-and-white-mice/.json",
                "product_markdown_route": "https://sweeties.net/product/pink-and-white-mice/.md",
                "checkout_url": "https://sweeties.net/buy/pink-and-white-mice/",
                "buy_card_route": "https://sweeties.net/buy-card/pink-and-white-mice/",
                "citation_anchor": "https://sweeties.net/product/pink-and-white-mice/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070262",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/pink-and-white-mice.webp",
                "image_record_id": "wp-attachment-1071341",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070262&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070262",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Foam",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.39,
                "price_per_100g_gbp": 1.39,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 26,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " pink and white mice sweeties net not present in source sw029 spain loose pick and mix sold in 100 g steps vanilla foam sweets pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "c54b2f213b138cb1b8574a972acc6d9e1c3049d58f8fbd7318b0136033e22756"
            }
        },
        {
            "product_id": "1070263",
            "name": "Pink and White Mice, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW029-T3",
            "slug": "pink-and-white-mice-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Pink and White Mice for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/pink-and-white-mice-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/pink-and-white-mice-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/pink-and-white-mice-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070263",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7003333333333334,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7003333333333334,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 21.01
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/pink-and-white-mice.webp",
            "image": {
                "role": "primary",
                "alt_text": "Pink and White Mice. Small foam mice, in soft pink and white, with a pointed nose, little rounded ears and a short tail, matt, soft and slightly powdery.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/pink-and-white-mice.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/pink-and-white-mice.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/pink-and-white-mice.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/pink-and-white-mice.webp.json",
                "image_record_id": "wp-attachment-1071341",
                "attachment_id": 1071341,
                "relative_upload_path": "2026/09/pink-and-white-mice.webp",
                "filename": "pink-and-white-mice.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 50174,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071341",
                    "attachment_id": 1071341,
                    "source": {
                        "relative_upload_path": "2026/09/pink-and-white-mice.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/pink-and-white-mice.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071341",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/pink-and-white-mice-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070263",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/pink-and-white-mice-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070263",
                "product_json_route": "https://sweeties.net/product/pink-and-white-mice-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/pink-and-white-mice-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/pink-and-white-mice-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/pink-and-white-mice-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070263",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/pink-and-white-mice.webp",
                "image_record_id": "wp-attachment-1071341",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070263&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070263",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Foam",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 26,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " pink and white mice 3 kg trade bag not present in source sw029 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "5940898f3313eb84306c646e7ed3d7a4d38236e2fa8345c6b59c408ff7942095"
            }
        },
        {
            "product_id": "1070264",
            "name": "Strawberries and Cream",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Foam sweets",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 31,
                    "name": "Foam sweets",
                    "slug": "foam-sweets",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/foam-sweets/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW030",
            "slug": "strawberries-and-cream",
            "short_description": "Strawberry jelly tops on creamy white foam.",
            "canonical_product_url": "https://sweeties.net/product/strawberries-and-cream/",
            "product_json_route": "https://sweeties.net/product/strawberries-and-cream/.json",
            "product_markdown_route": "https://sweeties.net/product/strawberries-and-cream/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070264",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/strawberries-and-cream/",
            "buy_url": "https://sweeties.net/buy/strawberries-and-cream/",
            "human_purchase_url": "https://sweeties.net/buy/strawberries-and-cream/",
            "buy_card_route": "https://sweeties.net/buy-card/strawberries-and-cream/",
            "buy_card_url": "https://sweeties.net/buy-card/strawberries-and-cream/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/strawberries-and-cream.webp",
            "image": {
                "role": "primary",
                "alt_text": "Strawberries and Cream. Two layer sweets, with a glossy red strawberry jelly top on a creamy white foam base, rounded and softly domed.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/strawberries-and-cream.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/strawberries-and-cream.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/strawberries-and-cream.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/strawberries-and-cream.webp.json",
                "image_record_id": "wp-attachment-1071342",
                "attachment_id": 1071342,
                "relative_upload_path": "2026/09/strawberries-and-cream.webp",
                "filename": "strawberries-and-cream.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 82142,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071342",
                    "attachment_id": 1071342,
                    "source": {
                        "relative_upload_path": "2026/09/strawberries-and-cream.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/strawberries-and-cream.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071342",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/strawberries-and-cream/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "strawberry",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "strawberry",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 31,
                        "name": "Foam sweets",
                        "slug": "foam-sweets",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/foam-sweets/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070264",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/strawberries-and-cream/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070264",
                "product_json_route": "https://sweeties.net/product/strawberries-and-cream/.json",
                "product_markdown_route": "https://sweeties.net/product/strawberries-and-cream/.md",
                "checkout_url": "https://sweeties.net/buy/strawberries-and-cream/",
                "buy_card_route": "https://sweeties.net/buy-card/strawberries-and-cream/",
                "citation_anchor": "https://sweeties.net/product/strawberries-and-cream/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070264",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/strawberries-and-cream.webp",
                "image_record_id": "wp-attachment-1071342",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070264&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070264",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Foam",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 22,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " strawberries and cream sweeties net not present in source sw030 spain loose pick and mix sold in 100 g steps strawberry foam sweets pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "8dfecf2a6676186fc445bf1cb472cc12541670f6aa36770530367e4dd3cc74a1"
            }
        },
        {
            "product_id": "1070265",
            "name": "Strawberries and Cream, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW030-T3",
            "slug": "strawberries-and-cream-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Strawberries and Cream for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/strawberries-and-cream-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/strawberries-and-cream-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/strawberries-and-cream-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070265",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/strawberries-and-cream.webp",
            "image": {
                "role": "primary",
                "alt_text": "Strawberries and Cream. Two layer sweets, with a glossy red strawberry jelly top on a creamy white foam base, rounded and softly domed.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/strawberries-and-cream.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/strawberries-and-cream.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/strawberries-and-cream.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/strawberries-and-cream.webp.json",
                "image_record_id": "wp-attachment-1071342",
                "attachment_id": 1071342,
                "relative_upload_path": "2026/09/strawberries-and-cream.webp",
                "filename": "strawberries-and-cream.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 82142,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071342",
                    "attachment_id": 1071342,
                    "source": {
                        "relative_upload_path": "2026/09/strawberries-and-cream.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/strawberries-and-cream.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071342",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/strawberries-and-cream-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070265",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/strawberries-and-cream-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070265",
                "product_json_route": "https://sweeties.net/product/strawberries-and-cream-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/strawberries-and-cream-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/strawberries-and-cream-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/strawberries-and-cream-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070265",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/strawberries-and-cream.webp",
                "image_record_id": "wp-attachment-1071342",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070265&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070265",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Foam",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 22,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " strawberries and cream 3 kg trade bag not present in source sw030 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "391d14ca05bb04d2aacf305f19f26f05a161d161124883816de586326dab24c0"
            }
        },
        {
            "product_id": "1070266",
            "name": "Milk Bottles",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Foam sweets",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 31,
                    "name": "Foam sweets",
                    "slug": "foam-sweets",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/foam-sweets/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW031",
            "slug": "milk-bottles",
            "short_description": "Chewy little milk bottles made with real milk.",
            "canonical_product_url": "https://sweeties.net/product/milk-bottles/",
            "product_json_route": "https://sweeties.net/product/milk-bottles/.json",
            "product_markdown_route": "https://sweeties.net/product/milk-bottles/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070266",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/milk-bottles/",
            "buy_url": "https://sweeties.net/buy/milk-bottles/",
            "human_purchase_url": "https://sweeties.net/buy/milk-bottles/",
            "buy_card_route": "https://sweeties.net/buy-card/milk-bottles/",
            "buy_card_url": "https://sweeties.net/buy-card/milk-bottles/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/milk-bottles.webp",
            "image": {
                "role": "primary",
                "alt_text": "Milk Bottles. Small chewy milk bottle sweets, creamy white with a faintly ivory tint, a rounded bottle body and a short neck, with a soft matt surface and a light dusting.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/milk-bottles.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/milk-bottles.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/milk-bottles.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/milk-bottles.webp.json",
                "image_record_id": "wp-attachment-1071343",
                "attachment_id": 1071343,
                "relative_upload_path": "2026/09/milk-bottles.webp",
                "filename": "milk-bottles.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 41192,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071343",
                    "attachment_id": 1071343,
                    "source": {
                        "relative_upload_path": "2026/09/milk-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/milk-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071343",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/milk-bottles/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Milk"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 31,
                        "name": "Foam sweets",
                        "slug": "foam-sweets",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/foam-sweets/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070266",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/milk-bottles/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070266",
                "product_json_route": "https://sweeties.net/product/milk-bottles/.json",
                "product_markdown_route": "https://sweeties.net/product/milk-bottles/.md",
                "checkout_url": "https://sweeties.net/buy/milk-bottles/",
                "buy_card_route": "https://sweeties.net/buy-card/milk-bottles/",
                "citation_anchor": "https://sweeties.net/product/milk-bottles/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070266",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/milk-bottles.webp",
                "image_record_id": "wp-attachment-1071343",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070266&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070266",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Foam",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [
                    "Milk"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 40,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " milk bottles sweeties net not present in source sw031 spain loose pick and mix sold in 100 g steps default foam sweets pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "dda706126952dcd5c2d42612fc795af9b5977a4fabba3949dfe3aecfdf244475"
            }
        },
        {
            "product_id": "1070267",
            "name": "Milk Bottles, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW031-T3",
            "slug": "milk-bottles-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Milk Bottles for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/milk-bottles-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/milk-bottles-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/milk-bottles-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070267",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/milk-bottles.webp",
            "image": {
                "role": "primary",
                "alt_text": "Milk Bottles. Small chewy milk bottle sweets, creamy white with a faintly ivory tint, a rounded bottle body and a short neck, with a soft matt surface and a light dusting.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/milk-bottles.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/milk-bottles.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/milk-bottles.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/milk-bottles.webp.json",
                "image_record_id": "wp-attachment-1071343",
                "attachment_id": 1071343,
                "relative_upload_path": "2026/09/milk-bottles.webp",
                "filename": "milk-bottles.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 41192,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071343",
                    "attachment_id": 1071343,
                    "source": {
                        "relative_upload_path": "2026/09/milk-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/milk-bottles.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071343",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/milk-bottles-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Milk"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070267",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/milk-bottles-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070267",
                "product_json_route": "https://sweeties.net/product/milk-bottles-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/milk-bottles-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/milk-bottles-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/milk-bottles-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070267",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/milk-bottles.webp",
                "image_record_id": "wp-attachment-1071343",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070267&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070267",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Foam",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [
                    "Milk"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 40,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " milk bottles 3 kg trade bag not present in source sw031 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "d8ece2aefb49a2e60df913e19b83e879027afecc48ce4ef6a880823fdb29e16a"
            }
        },
        {
            "product_id": "1070268",
            "name": "Cherry Lips",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix",
                "Retro and boiled"
            ],
            "category_entities": [
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                },
                {
                    "term_id": 32,
                    "name": "Retro and boiled",
                    "slug": "retro-and-boiled",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW032",
            "slug": "cherry-lips",
            "short_description": "Chewy retro lips with a floral cherry flavour.",
            "canonical_product_url": "https://sweeties.net/product/cherry-lips/",
            "product_json_route": "https://sweeties.net/product/cherry-lips/.json",
            "product_markdown_route": "https://sweeties.net/product/cherry-lips/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070268",
            "price": "1.39",
            "price_gbp": 1.39,
            "regular_price_gbp": 1.39,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.39
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/cherry-lips/",
            "buy_url": "https://sweeties.net/buy/cherry-lips/",
            "human_purchase_url": "https://sweeties.net/buy/cherry-lips/",
            "buy_card_route": "https://sweeties.net/buy-card/cherry-lips/",
            "buy_card_url": "https://sweeties.net/buy-card/cherry-lips/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/cherry-lips.webp",
            "image": {
                "role": "primary",
                "alt_text": "Cherry Lips. Small lip shaped sweets, a deep cherry red, firm and chewy, with a soft sheen, showing the moulded upper and lower lip.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/cherry-lips.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/cherry-lips.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/cherry-lips.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/cherry-lips.webp.json",
                "image_record_id": "wp-attachment-1071344",
                "attachment_id": 1071344,
                "relative_upload_path": "2026/09/cherry-lips.webp",
                "filename": "cherry-lips.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 89918,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071344",
                    "attachment_id": 1071344,
                    "source": {
                        "relative_upload_path": "2026/09/cherry-lips.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/cherry-lips.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071344",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/cherry-lips/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "floral",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "floral",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.colours.warning": {
                        "claim_type": "safety",
                        "risk_level": "medium",
                        "evidence_strength": "legal_label_requirement",
                        "allowed_wording": [
                            "Sweets with any of the six Southampton colours (E102, E104, E110, E122, E124, E129) carry the warning: may have an adverse effect on activity and attention in children."
                        ],
                        "disallowed_wording": [
                            "no artificial colours",
                            "safe colours"
                        ],
                        "maps_live_strings": [
                            "activity and attention in children"
                        ],
                        "governance_note": "Use the legal warning wording exactly where it applies.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.colours.warning",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    },
                    {
                        "term_id": 32,
                        "name": "Retro and boiled",
                        "slug": "retro-and-boiled",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070268",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/cherry-lips/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070268",
                "product_json_route": "https://sweeties.net/product/cherry-lips/.json",
                "product_markdown_route": "https://sweeties.net/product/cherry-lips/.md",
                "checkout_url": "https://sweeties.net/buy/cherry-lips/",
                "buy_card_route": "https://sweeties.net/buy-card/cherry-lips/",
                "citation_anchor": "https://sweeties.net/product/cherry-lips/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070268",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/cherry-lips.webp",
                "image_record_id": "wp-attachment-1071344",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070268&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070268",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Retro and boiled",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.39,
                "price_per_100g_gbp": 1.39,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [
                    "May have an adverse effect on activity and attention in children."
                ],
                "made_in": "Spain",
                "pieces_per_100g": 40,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " cherry lips sweeties net not present in source sw032 spain loose pick and mix sold in 100 g steps floral pick and mix retro and boiled ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "0dc00dca2322e62718a177f99edaf1f82a27ed4a77e9d407a94332749f9be035"
            }
        },
        {
            "product_id": "1070269",
            "name": "Cherry Lips, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW032-T3",
            "slug": "cherry-lips-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Cherry Lips for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/cherry-lips-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/cherry-lips-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/cherry-lips-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070269",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7003333333333334,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7003333333333334,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 21.01
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/cherry-lips.webp",
            "image": {
                "role": "primary",
                "alt_text": "Cherry Lips. Small lip shaped sweets, a deep cherry red, firm and chewy, with a soft sheen, showing the moulded upper and lower lip.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/cherry-lips.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/cherry-lips.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/cherry-lips.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/cherry-lips.webp.json",
                "image_record_id": "wp-attachment-1071344",
                "attachment_id": 1071344,
                "relative_upload_path": "2026/09/cherry-lips.webp",
                "filename": "cherry-lips.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 89918,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071344",
                    "attachment_id": 1071344,
                    "source": {
                        "relative_upload_path": "2026/09/cherry-lips.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/cherry-lips.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071344",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/cherry-lips-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.colours.warning": {
                        "claim_type": "safety",
                        "risk_level": "medium",
                        "evidence_strength": "legal_label_requirement",
                        "allowed_wording": [
                            "Sweets with any of the six Southampton colours (E102, E104, E110, E122, E124, E129) carry the warning: may have an adverse effect on activity and attention in children."
                        ],
                        "disallowed_wording": [
                            "no artificial colours",
                            "safe colours"
                        ],
                        "maps_live_strings": [
                            "activity and attention in children"
                        ],
                        "governance_note": "Use the legal warning wording exactly where it applies.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.colours.warning",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070269",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/cherry-lips-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070269",
                "product_json_route": "https://sweeties.net/product/cherry-lips-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/cherry-lips-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/cherry-lips-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/cherry-lips-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070269",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/cherry-lips.webp",
                "image_record_id": "wp-attachment-1071344",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070269&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070269",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Retro and boiled",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [
                    "May have an adverse effect on activity and attention in children."
                ],
                "made_in": "Spain",
                "pieces_per_100g": 40,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " cherry lips 3 kg trade bag not present in source sw032 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "57c0bf35e06bed689412134d73632f12eaf1b964fd7b06c18f480b84a56d3a38"
            }
        },
        {
            "product_id": "1070270",
            "name": "Pear Drops",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix",
                "Retro and boiled"
            ],
            "category_entities": [
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                },
                {
                    "term_id": 32,
                    "name": "Retro and boiled",
                    "slug": "retro-and-boiled",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW033",
            "slug": "pear-drops",
            "short_description": "Hard boiled drops in pink and yellow with that sharp pear drop tang.",
            "canonical_product_url": "https://sweeties.net/product/pear-drops/",
            "product_json_route": "https://sweeties.net/product/pear-drops/.json",
            "product_markdown_route": "https://sweeties.net/product/pear-drops/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070270",
            "price": "1.29",
            "price_gbp": 1.29,
            "regular_price_gbp": 1.29,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.29
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/pear-drops/",
            "buy_url": "https://sweeties.net/buy/pear-drops/",
            "human_purchase_url": "https://sweeties.net/buy/pear-drops/",
            "buy_card_route": "https://sweeties.net/buy-card/pear-drops/",
            "buy_card_url": "https://sweeties.net/buy-card/pear-drops/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/pear-drops.webp",
            "image": {
                "role": "primary",
                "alt_text": "Pear Drops. Hard boiled pear drops, the traditional rounded drop shape with a slight point, half pink and half yellow, glassy and translucent, lightly dusted with fine sugar.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/pear-drops.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/pear-drops.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/pear-drops.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/pear-drops.webp.json",
                "image_record_id": "wp-attachment-1071345",
                "attachment_id": 1071345,
                "relative_upload_path": "2026/09/pear-drops.webp",
                "filename": "pear-drops.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 128284,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071345",
                    "attachment_id": 1071345,
                    "source": {
                        "relative_upload_path": "2026/09/pear-drops.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/pear-drops.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071345",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/pear-drops/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "United Kingdom",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.colours.warning": {
                        "claim_type": "safety",
                        "risk_level": "medium",
                        "evidence_strength": "legal_label_requirement",
                        "allowed_wording": [
                            "Sweets with any of the six Southampton colours (E102, E104, E110, E122, E124, E129) carry the warning: may have an adverse effect on activity and attention in children."
                        ],
                        "disallowed_wording": [
                            "no artificial colours",
                            "safe colours"
                        ],
                        "maps_live_strings": [
                            "activity and attention in children"
                        ],
                        "governance_note": "Use the legal warning wording exactly where it applies.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.colours.warning",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    },
                    {
                        "term_id": 32,
                        "name": "Retro and boiled",
                        "slug": "retro-and-boiled",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070270",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/pear-drops/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070270",
                "product_json_route": "https://sweeties.net/product/pear-drops/.json",
                "product_markdown_route": "https://sweeties.net/product/pear-drops/.md",
                "checkout_url": "https://sweeties.net/buy/pear-drops/",
                "buy_card_route": "https://sweeties.net/buy-card/pear-drops/",
                "citation_anchor": "https://sweeties.net/product/pear-drops/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070270",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/pear-drops.webp",
                "image_record_id": "wp-attachment-1071345",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070270&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070270",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Retro and boiled",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.29,
                "price_per_100g_gbp": 1.29,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [
                    "May have an adverse effect on activity and attention in children.",
                    "Hard sweet. Not suitable for children under 3."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 22,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " pear drops sweeties net not present in source sw033 united kingdom loose pick and mix sold in 100 g steps default pick and mix retro and boiled ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "7f56a96ab48a8f2c8ff3b8002947ed0e71c92e847eba42a339bae09143b025ab"
            }
        },
        {
            "product_id": "1070271",
            "name": "Pear Drops, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW033-T3",
            "slug": "pear-drops-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Pear Drops for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/pear-drops-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/pear-drops-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/pear-drops-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070271",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.65,
                "weight_g": 3000,
                "comparison_price_gbp": 0.65,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 19.5
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/pear-drops.webp",
            "image": {
                "role": "primary",
                "alt_text": "Pear Drops. Hard boiled pear drops, the traditional rounded drop shape with a slight point, half pink and half yellow, glassy and translucent, lightly dusted with fine sugar.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/pear-drops.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/pear-drops.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/pear-drops.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/pear-drops.webp.json",
                "image_record_id": "wp-attachment-1071345",
                "attachment_id": 1071345,
                "relative_upload_path": "2026/09/pear-drops.webp",
                "filename": "pear-drops.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 128284,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071345",
                    "attachment_id": 1071345,
                    "source": {
                        "relative_upload_path": "2026/09/pear-drops.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/pear-drops.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071345",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/pear-drops-3kg-trade-bag/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "United Kingdom",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.colours.warning": {
                        "claim_type": "safety",
                        "risk_level": "medium",
                        "evidence_strength": "legal_label_requirement",
                        "allowed_wording": [
                            "Sweets with any of the six Southampton colours (E102, E104, E110, E122, E124, E129) carry the warning: may have an adverse effect on activity and attention in children."
                        ],
                        "disallowed_wording": [
                            "no artificial colours",
                            "safe colours"
                        ],
                        "maps_live_strings": [
                            "activity and attention in children"
                        ],
                        "governance_note": "Use the legal warning wording exactly where it applies.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.colours.warning",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070271",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/pear-drops-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070271",
                "product_json_route": "https://sweeties.net/product/pear-drops-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/pear-drops-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/pear-drops-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/pear-drops-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070271",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/pear-drops.webp",
                "image_record_id": "wp-attachment-1071345",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070271&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070271",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Retro and boiled",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [
                    "May have an adverse effect on activity and attention in children.",
                    "Hard sweet. Not suitable for children under 3."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 22,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " pear drops 3 kg trade bag not present in source sw033 t3 united kingdom 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "ab2493327b990c1e264a1b6738cc489706698239f6ae90363e73192c67c7d407"
            }
        },
        {
            "product_id": "1070272",
            "name": "Rhubarb and Custard",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix",
                "Retro and boiled"
            ],
            "category_entities": [
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                },
                {
                    "term_id": 32,
                    "name": "Retro and boiled",
                    "slug": "retro-and-boiled",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW034",
            "slug": "rhubarb-and-custard",
            "short_description": "Two tone boiled sweets, sharp rhubarb and smooth custard.",
            "canonical_product_url": "https://sweeties.net/product/rhubarb-and-custard/",
            "product_json_route": "https://sweeties.net/product/rhubarb-and-custard/.json",
            "product_markdown_route": "https://sweeties.net/product/rhubarb-and-custard/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070272",
            "price": "1.29",
            "price_gbp": 1.29,
            "regular_price_gbp": 1.29,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.29
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/rhubarb-and-custard/",
            "buy_url": "https://sweeties.net/buy/rhubarb-and-custard/",
            "human_purchase_url": "https://sweeties.net/buy/rhubarb-and-custard/",
            "buy_card_route": "https://sweeties.net/buy-card/rhubarb-and-custard/",
            "buy_card_url": "https://sweeties.net/buy-card/rhubarb-and-custard/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/rhubarb-and-custard.webp",
            "image": {
                "role": "primary",
                "alt_text": "Rhubarb and Custard. Hard boiled sweets, pillow shaped, two tone with a rhubarb pink half and a custard yellow half, glassy and lightly dusted with fine sugar.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/rhubarb-and-custard.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/rhubarb-and-custard.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/rhubarb-and-custard.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/rhubarb-and-custard.webp.json",
                "image_record_id": "wp-attachment-1071346",
                "attachment_id": 1071346,
                "relative_upload_path": "2026/09/rhubarb-and-custard.webp",
                "filename": "rhubarb-and-custard.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 115074,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071346",
                    "attachment_id": 1071346,
                    "source": {
                        "relative_upload_path": "2026/09/rhubarb-and-custard.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/rhubarb-and-custard.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071346",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/rhubarb-and-custard/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "United Kingdom",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.colours.warning": {
                        "claim_type": "safety",
                        "risk_level": "medium",
                        "evidence_strength": "legal_label_requirement",
                        "allowed_wording": [
                            "Sweets with any of the six Southampton colours (E102, E104, E110, E122, E124, E129) carry the warning: may have an adverse effect on activity and attention in children."
                        ],
                        "disallowed_wording": [
                            "no artificial colours",
                            "safe colours"
                        ],
                        "maps_live_strings": [
                            "activity and attention in children"
                        ],
                        "governance_note": "Use the legal warning wording exactly where it applies.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.colours.warning",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    },
                    {
                        "term_id": 32,
                        "name": "Retro and boiled",
                        "slug": "retro-and-boiled",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070272",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/rhubarb-and-custard/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070272",
                "product_json_route": "https://sweeties.net/product/rhubarb-and-custard/.json",
                "product_markdown_route": "https://sweeties.net/product/rhubarb-and-custard/.md",
                "checkout_url": "https://sweeties.net/buy/rhubarb-and-custard/",
                "buy_card_route": "https://sweeties.net/buy-card/rhubarb-and-custard/",
                "citation_anchor": "https://sweeties.net/product/rhubarb-and-custard/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070272",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/rhubarb-and-custard.webp",
                "image_record_id": "wp-attachment-1071346",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070272&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070272",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Retro and boiled",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.29,
                "price_per_100g_gbp": 1.29,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [
                    "May have an adverse effect on activity and attention in children.",
                    "Hard sweet. Not suitable for children under 3."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 22,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " rhubarb and custard sweeties net not present in source sw034 united kingdom loose pick and mix sold in 100 g steps default pick and mix retro and boiled ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "c36326a62425832bc16e5d9b4ae3c7c8a47c52de1b51bedc6122406fe7fde64b"
            }
        },
        {
            "product_id": "1070273",
            "name": "Rhubarb and Custard, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW034-T3",
            "slug": "rhubarb-and-custard-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Rhubarb and Custard for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/rhubarb-and-custard-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/rhubarb-and-custard-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/rhubarb-and-custard-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070273",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.65,
                "weight_g": 3000,
                "comparison_price_gbp": 0.65,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 19.5
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/rhubarb-and-custard.webp",
            "image": {
                "role": "primary",
                "alt_text": "Rhubarb and Custard. Hard boiled sweets, pillow shaped, two tone with a rhubarb pink half and a custard yellow half, glassy and lightly dusted with fine sugar.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/rhubarb-and-custard.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/rhubarb-and-custard.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/rhubarb-and-custard.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/rhubarb-and-custard.webp.json",
                "image_record_id": "wp-attachment-1071346",
                "attachment_id": 1071346,
                "relative_upload_path": "2026/09/rhubarb-and-custard.webp",
                "filename": "rhubarb-and-custard.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 115074,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071346",
                    "attachment_id": 1071346,
                    "source": {
                        "relative_upload_path": "2026/09/rhubarb-and-custard.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/rhubarb-and-custard.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071346",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/rhubarb-and-custard-3kg-trade-bag/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "United Kingdom",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.colours.warning": {
                        "claim_type": "safety",
                        "risk_level": "medium",
                        "evidence_strength": "legal_label_requirement",
                        "allowed_wording": [
                            "Sweets with any of the six Southampton colours (E102, E104, E110, E122, E124, E129) carry the warning: may have an adverse effect on activity and attention in children."
                        ],
                        "disallowed_wording": [
                            "no artificial colours",
                            "safe colours"
                        ],
                        "maps_live_strings": [
                            "activity and attention in children"
                        ],
                        "governance_note": "Use the legal warning wording exactly where it applies.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.colours.warning",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070273",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/rhubarb-and-custard-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070273",
                "product_json_route": "https://sweeties.net/product/rhubarb-and-custard-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/rhubarb-and-custard-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/rhubarb-and-custard-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/rhubarb-and-custard-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070273",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/rhubarb-and-custard.webp",
                "image_record_id": "wp-attachment-1071346",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070273&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070273",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Retro and boiled",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [
                    "May have an adverse effect on activity and attention in children.",
                    "Hard sweet. Not suitable for children under 3."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 22,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " rhubarb and custard 3 kg trade bag not present in source sw034 t3 united kingdom 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "8ee47c82b0f53dae38d5a56a3dbb64bf263cfc945798e07fbed14b4d21ef8586"
            }
        },
        {
            "product_id": "1070274",
            "name": "Sherbet Lemons",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix",
                "Retro and boiled"
            ],
            "category_entities": [
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                },
                {
                    "term_id": 32,
                    "name": "Retro and boiled",
                    "slug": "retro-and-boiled",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW035",
            "slug": "sherbet-lemons",
            "short_description": "Hard lemon sweets with a fizzy sherbet centre.",
            "canonical_product_url": "https://sweeties.net/product/sherbet-lemons/",
            "product_json_route": "https://sweeties.net/product/sherbet-lemons/.json",
            "product_markdown_route": "https://sweeties.net/product/sherbet-lemons/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070274",
            "price": "1.29",
            "price_gbp": 1.29,
            "regular_price_gbp": 1.29,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.29
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/sherbet-lemons/",
            "buy_url": "https://sweeties.net/buy/sherbet-lemons/",
            "human_purchase_url": "https://sweeties.net/buy/sherbet-lemons/",
            "buy_card_route": "https://sweeties.net/buy-card/sherbet-lemons/",
            "buy_card_url": "https://sweeties.net/buy-card/sherbet-lemons/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sherbet-lemons.webp",
            "image": {
                "role": "primary",
                "alt_text": "Sherbet Lemons. Hard boiled lemon sweets, oval and lemon shaped, bright yellow, glassy and lightly sugar dusted.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/sherbet-lemons.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/sherbet-lemons.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/sherbet-lemons.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/sherbet-lemons.webp.json",
                "image_record_id": "wp-attachment-1071347",
                "attachment_id": 1071347,
                "relative_upload_path": "2026/09/sherbet-lemons.webp",
                "filename": "sherbet-lemons.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 99120,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071347",
                    "attachment_id": 1071347,
                    "source": {
                        "relative_upload_path": "2026/09/sherbet-lemons.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/sherbet-lemons.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071347",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/sherbet-lemons/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "lemon",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "United Kingdom",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "lemon",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    },
                    {
                        "term_id": 32,
                        "name": "Retro and boiled",
                        "slug": "retro-and-boiled",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070274",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sherbet-lemons/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070274",
                "product_json_route": "https://sweeties.net/product/sherbet-lemons/.json",
                "product_markdown_route": "https://sweeties.net/product/sherbet-lemons/.md",
                "checkout_url": "https://sweeties.net/buy/sherbet-lemons/",
                "buy_card_route": "https://sweeties.net/buy-card/sherbet-lemons/",
                "citation_anchor": "https://sweeties.net/product/sherbet-lemons/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070274",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sherbet-lemons.webp",
                "image_record_id": "wp-attachment-1071347",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070274&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070274",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Retro and boiled",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.29,
                "price_per_100g_gbp": 1.29,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [
                    "Hard sweet. Not suitable for children under 3."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 20,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " sherbet lemons sweeties net not present in source sw035 united kingdom loose pick and mix sold in 100 g steps lemon pick and mix retro and boiled ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "077569c4b27dca6c17cbab3a9a9d9eb4630d72ad3e36d8c1aacf849b915c57b5"
            }
        },
        {
            "product_id": "1070275",
            "name": "Sherbet Lemons, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW035-T3",
            "slug": "sherbet-lemons-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Sherbet Lemons for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/sherbet-lemons-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/sherbet-lemons-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/sherbet-lemons-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070275",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.65,
                "weight_g": 3000,
                "comparison_price_gbp": 0.65,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 19.5
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sherbet-lemons.webp",
            "image": {
                "role": "primary",
                "alt_text": "Sherbet Lemons. Hard boiled lemon sweets, oval and lemon shaped, bright yellow, glassy and lightly sugar dusted.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/sherbet-lemons.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/sherbet-lemons.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/sherbet-lemons.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/sherbet-lemons.webp.json",
                "image_record_id": "wp-attachment-1071347",
                "attachment_id": 1071347,
                "relative_upload_path": "2026/09/sherbet-lemons.webp",
                "filename": "sherbet-lemons.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 99120,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071347",
                    "attachment_id": 1071347,
                    "source": {
                        "relative_upload_path": "2026/09/sherbet-lemons.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/sherbet-lemons.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071347",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/sherbet-lemons-3kg-trade-bag/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "lemon",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "United Kingdom",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "lemon",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070275",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sherbet-lemons-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070275",
                "product_json_route": "https://sweeties.net/product/sherbet-lemons-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/sherbet-lemons-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/sherbet-lemons-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/sherbet-lemons-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070275",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sherbet-lemons.webp",
                "image_record_id": "wp-attachment-1071347",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070275&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070275",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Retro and boiled",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [
                    "Hard sweet. Not suitable for children under 3."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 20,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " sherbet lemons 3 kg trade bag not present in source sw035 t3 united kingdom 3 kg bulk bag of loose sweets for shops lemon trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "f08a6b6f5df5c8e9b9dc9f10305966a15fa6e66bf8c8877c46cfa866e4f8fae6"
            }
        },
        {
            "product_id": "1070276",
            "name": "Kola Cubes",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix",
                "Retro and boiled"
            ],
            "category_entities": [
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                },
                {
                    "term_id": 32,
                    "name": "Retro and boiled",
                    "slug": "retro-and-boiled",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW036",
            "slug": "kola-cubes",
            "short_description": "Sugar dusted cola cubes. Sharp, sweet and very retro.",
            "canonical_product_url": "https://sweeties.net/product/kola-cubes/",
            "product_json_route": "https://sweeties.net/product/kola-cubes/.json",
            "product_markdown_route": "https://sweeties.net/product/kola-cubes/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070276",
            "price": "1.29",
            "price_gbp": 1.29,
            "regular_price_gbp": 1.29,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.29
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/kola-cubes/",
            "buy_url": "https://sweeties.net/buy/kola-cubes/",
            "human_purchase_url": "https://sweeties.net/buy/kola-cubes/",
            "buy_card_route": "https://sweeties.net/buy-card/kola-cubes/",
            "buy_card_url": "https://sweeties.net/buy-card/kola-cubes/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/kola-cubes.webp",
            "image": {
                "role": "primary",
                "alt_text": "Kola Cubes. Small hard boiled cubes, a deep cola red with a dark brown tint, coated in coarse sparkling granulated sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/kola-cubes.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/kola-cubes.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/kola-cubes.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/kola-cubes.webp.json",
                "image_record_id": "wp-attachment-1071348",
                "attachment_id": 1071348,
                "relative_upload_path": "2026/09/kola-cubes.webp",
                "filename": "kola-cubes.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 192178,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071348",
                    "attachment_id": 1071348,
                    "source": {
                        "relative_upload_path": "2026/09/kola-cubes.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/kola-cubes.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071348",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/kola-cubes/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "United Kingdom",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    },
                    {
                        "term_id": 32,
                        "name": "Retro and boiled",
                        "slug": "retro-and-boiled",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070276",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/kola-cubes/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070276",
                "product_json_route": "https://sweeties.net/product/kola-cubes/.json",
                "product_markdown_route": "https://sweeties.net/product/kola-cubes/.md",
                "checkout_url": "https://sweeties.net/buy/kola-cubes/",
                "buy_card_route": "https://sweeties.net/buy-card/kola-cubes/",
                "citation_anchor": "https://sweeties.net/product/kola-cubes/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070276",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/kola-cubes.webp",
                "image_record_id": "wp-attachment-1071348",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070276&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070276",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Retro and boiled",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.29,
                "price_per_100g_gbp": 1.29,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [
                    "Hard sweet. Not suitable for children under 3."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 24,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " kola cubes sweeties net not present in source sw036 united kingdom loose pick and mix sold in 100 g steps default pick and mix retro and boiled ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "90173a2b5265edd4b1f8ac3e4e5576be2b6c9d5e8841fd0c7fceaa2401e771e2"
            }
        },
        {
            "product_id": "1070277",
            "name": "Kola Cubes, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW036-T3",
            "slug": "kola-cubes-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Kola Cubes for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/kola-cubes-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/kola-cubes-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/kola-cubes-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070277",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.65,
                "weight_g": 3000,
                "comparison_price_gbp": 0.65,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 19.5
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/kola-cubes.webp",
            "image": {
                "role": "primary",
                "alt_text": "Kola Cubes. Small hard boiled cubes, a deep cola red with a dark brown tint, coated in coarse sparkling granulated sugar crystals.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/kola-cubes.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/kola-cubes.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/kola-cubes.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/kola-cubes.webp.json",
                "image_record_id": "wp-attachment-1071348",
                "attachment_id": 1071348,
                "relative_upload_path": "2026/09/kola-cubes.webp",
                "filename": "kola-cubes.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 192178,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071348",
                    "attachment_id": 1071348,
                    "source": {
                        "relative_upload_path": "2026/09/kola-cubes.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/kola-cubes.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071348",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/kola-cubes-3kg-trade-bag/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "United Kingdom",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070277",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/kola-cubes-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070277",
                "product_json_route": "https://sweeties.net/product/kola-cubes-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/kola-cubes-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/kola-cubes-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/kola-cubes-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070277",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/kola-cubes.webp",
                "image_record_id": "wp-attachment-1071348",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070277&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070277",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Retro and boiled",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [
                    "Hard sweet. Not suitable for children under 3."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 24,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " kola cubes 3 kg trade bag not present in source sw036 t3 united kingdom 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "09ebd1ce3e06a928aa2b10ba249b8a9166aa26ca5a31c6768de0744839d25dfb"
            }
        },
        {
            "product_id": "1070278",
            "name": "Pineapple Chunks",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix",
                "Retro and boiled"
            ],
            "category_entities": [
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                },
                {
                    "term_id": 32,
                    "name": "Retro and boiled",
                    "slug": "retro-and-boiled",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW037",
            "slug": "pineapple-chunks",
            "short_description": "Golden sugared pineapple chunks with a tangy bite.",
            "canonical_product_url": "https://sweeties.net/product/pineapple-chunks/",
            "product_json_route": "https://sweeties.net/product/pineapple-chunks/.json",
            "product_markdown_route": "https://sweeties.net/product/pineapple-chunks/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070278",
            "price": "1.29",
            "price_gbp": 1.29,
            "regular_price_gbp": 1.29,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.29
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/pineapple-chunks/",
            "buy_url": "https://sweeties.net/buy/pineapple-chunks/",
            "human_purchase_url": "https://sweeties.net/buy/pineapple-chunks/",
            "buy_card_route": "https://sweeties.net/buy-card/pineapple-chunks/",
            "buy_card_url": "https://sweeties.net/buy-card/pineapple-chunks/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/pineapple-chunks.webp",
            "image": {
                "role": "primary",
                "alt_text": "Pineapple Chunks. Small hard boiled cubes, golden yellow with a warm orange tint, coated in coarse sparkling granulated sugar.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/pineapple-chunks.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/pineapple-chunks.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/pineapple-chunks.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/pineapple-chunks.webp.json",
                "image_record_id": "wp-attachment-1071349",
                "attachment_id": 1071349,
                "relative_upload_path": "2026/09/pineapple-chunks.webp",
                "filename": "pineapple-chunks.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 132030,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071349",
                    "attachment_id": 1071349,
                    "source": {
                        "relative_upload_path": "2026/09/pineapple-chunks.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/pineapple-chunks.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071349",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/pineapple-chunks/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "pineapple",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "United Kingdom",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "pineapple",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    },
                    {
                        "term_id": 32,
                        "name": "Retro and boiled",
                        "slug": "retro-and-boiled",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070278",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/pineapple-chunks/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070278",
                "product_json_route": "https://sweeties.net/product/pineapple-chunks/.json",
                "product_markdown_route": "https://sweeties.net/product/pineapple-chunks/.md",
                "checkout_url": "https://sweeties.net/buy/pineapple-chunks/",
                "buy_card_route": "https://sweeties.net/buy-card/pineapple-chunks/",
                "citation_anchor": "https://sweeties.net/product/pineapple-chunks/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070278",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/pineapple-chunks.webp",
                "image_record_id": "wp-attachment-1071349",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070278&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070278",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Retro and boiled",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.29,
                "price_per_100g_gbp": 1.29,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [
                    "Hard sweet. Not suitable for children under 3."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 24,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " pineapple chunks sweeties net not present in source sw037 united kingdom loose pick and mix sold in 100 g steps pineapple pick and mix retro and boiled ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "ab0ffe5a5a724f1ca00ecf219fae660c2f9a4f64c0ac6aef7aac81e5011d79b1"
            }
        },
        {
            "product_id": "1070279",
            "name": "Pineapple Chunks, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW037-T3",
            "slug": "pineapple-chunks-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Pineapple Chunks for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/pineapple-chunks-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/pineapple-chunks-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/pineapple-chunks-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070279",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.65,
                "weight_g": 3000,
                "comparison_price_gbp": 0.65,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 19.5
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/pineapple-chunks.webp",
            "image": {
                "role": "primary",
                "alt_text": "Pineapple Chunks. Small hard boiled cubes, golden yellow with a warm orange tint, coated in coarse sparkling granulated sugar.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/pineapple-chunks.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/pineapple-chunks.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/pineapple-chunks.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/pineapple-chunks.webp.json",
                "image_record_id": "wp-attachment-1071349",
                "attachment_id": 1071349,
                "relative_upload_path": "2026/09/pineapple-chunks.webp",
                "filename": "pineapple-chunks.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 132030,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071349",
                    "attachment_id": 1071349,
                    "source": {
                        "relative_upload_path": "2026/09/pineapple-chunks.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/pineapple-chunks.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071349",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/pineapple-chunks-3kg-trade-bag/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "pineapple",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "United Kingdom",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "pineapple",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070279",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/pineapple-chunks-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070279",
                "product_json_route": "https://sweeties.net/product/pineapple-chunks-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/pineapple-chunks-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/pineapple-chunks-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/pineapple-chunks-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070279",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/pineapple-chunks.webp",
                "image_record_id": "wp-attachment-1071349",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070279&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070279",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Retro and boiled",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [
                    "Hard sweet. Not suitable for children under 3."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 24,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " pineapple chunks 3 kg trade bag not present in source sw037 t3 united kingdom 3 kg bulk bag of loose sweets for shops pineapple trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "149c1c5b8ff1194744c91b05040443d30bf4a429a7a14906425fb5c2886e2170"
            }
        },
        {
            "product_id": "1070280",
            "name": "Aniseed Balls",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix",
                "Retro and boiled"
            ],
            "category_entities": [
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                },
                {
                    "term_id": 32,
                    "name": "Retro and boiled",
                    "slug": "retro-and-boiled",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW038",
            "slug": "aniseed-balls",
            "short_description": "Long lasting aniseed balls. Suck, do not crunch.",
            "canonical_product_url": "https://sweeties.net/product/aniseed-balls/",
            "product_json_route": "https://sweeties.net/product/aniseed-balls/.json",
            "product_markdown_route": "https://sweeties.net/product/aniseed-balls/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070280",
            "price": "1.29",
            "price_gbp": 1.29,
            "regular_price_gbp": 1.29,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.29
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/aniseed-balls/",
            "buy_url": "https://sweeties.net/buy/aniseed-balls/",
            "human_purchase_url": "https://sweeties.net/buy/aniseed-balls/",
            "buy_card_route": "https://sweeties.net/buy-card/aniseed-balls/",
            "buy_card_url": "https://sweeties.net/buy-card/aniseed-balls/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/aniseed-balls.webp",
            "image": {
                "role": "primary",
                "alt_text": "Aniseed Balls. Small hard round sweets, a deep brick red, matt and very slightly rough from the pan coating, perfectly round.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/aniseed-balls.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/aniseed-balls.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/aniseed-balls.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/aniseed-balls.webp.json",
                "image_record_id": "wp-attachment-1071350",
                "attachment_id": 1071350,
                "relative_upload_path": "2026/09/aniseed-balls.webp",
                "filename": "aniseed-balls.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 109466,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071350",
                    "attachment_id": 1071350,
                    "source": {
                        "relative_upload_path": "2026/09/aniseed-balls.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/aniseed-balls.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071350",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/aniseed-balls/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "United Kingdom",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    },
                    {
                        "term_id": 32,
                        "name": "Retro and boiled",
                        "slug": "retro-and-boiled",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070280",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/aniseed-balls/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070280",
                "product_json_route": "https://sweeties.net/product/aniseed-balls/.json",
                "product_markdown_route": "https://sweeties.net/product/aniseed-balls/.md",
                "checkout_url": "https://sweeties.net/buy/aniseed-balls/",
                "buy_card_route": "https://sweeties.net/buy-card/aniseed-balls/",
                "citation_anchor": "https://sweeties.net/product/aniseed-balls/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070280",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/aniseed-balls.webp",
                "image_record_id": "wp-attachment-1071350",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070280&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070280",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Retro and boiled",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.29,
                "price_per_100g_gbp": 1.29,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [
                    "Hard sweet. Not suitable for children under 3."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 45,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " aniseed balls sweeties net not present in source sw038 united kingdom loose pick and mix sold in 100 g steps default pick and mix retro and boiled ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "cc2a45d52a74c5e31fcfea7e318583d3b5d416703e9a1fe95d4d937c1142a814"
            }
        },
        {
            "product_id": "1070281",
            "name": "Aniseed Balls, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW038-T3",
            "slug": "aniseed-balls-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Aniseed Balls for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/aniseed-balls-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/aniseed-balls-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/aniseed-balls-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070281",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.65,
                "weight_g": 3000,
                "comparison_price_gbp": 0.65,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 19.5
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/aniseed-balls.webp",
            "image": {
                "role": "primary",
                "alt_text": "Aniseed Balls. Small hard round sweets, a deep brick red, matt and very slightly rough from the pan coating, perfectly round.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/aniseed-balls.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/aniseed-balls.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/aniseed-balls.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/aniseed-balls.webp.json",
                "image_record_id": "wp-attachment-1071350",
                "attachment_id": 1071350,
                "relative_upload_path": "2026/09/aniseed-balls.webp",
                "filename": "aniseed-balls.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 109466,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071350",
                    "attachment_id": 1071350,
                    "source": {
                        "relative_upload_path": "2026/09/aniseed-balls.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/aniseed-balls.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071350",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/aniseed-balls-3kg-trade-bag/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "United Kingdom",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070281",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/aniseed-balls-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070281",
                "product_json_route": "https://sweeties.net/product/aniseed-balls-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/aniseed-balls-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/aniseed-balls-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/aniseed-balls-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070281",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/aniseed-balls.webp",
                "image_record_id": "wp-attachment-1071350",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070281&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070281",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Retro and boiled",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [
                    "Hard sweet. Not suitable for children under 3."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 45,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " aniseed balls 3 kg trade bag not present in source sw038 t3 united kingdom 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "8484597b01363b3fc631e98584fd41d97d0b965f5ce32b82383400bd870bde71"
            }
        },
        {
            "product_id": "1070282",
            "name": "Flying Saucers",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix",
                "Retro and boiled"
            ],
            "category_entities": [
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                },
                {
                    "term_id": 32,
                    "name": "Retro and boiled",
                    "slug": "retro-and-boiled",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW039",
            "slug": "flying-saucers",
            "short_description": "Pastel wafer saucers filled with sherbet. Made with potato starch wafer, no wheat.",
            "canonical_product_url": "https://sweeties.net/product/flying-saucers/",
            "product_json_route": "https://sweeties.net/product/flying-saucers/.json",
            "product_markdown_route": "https://sweeties.net/product/flying-saucers/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070282",
            "price": "1.59",
            "price_gbp": 1.59,
            "regular_price_gbp": 1.59,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.59
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/flying-saucers/",
            "buy_url": "https://sweeties.net/buy/flying-saucers/",
            "human_purchase_url": "https://sweeties.net/buy/flying-saucers/",
            "buy_card_route": "https://sweeties.net/buy-card/flying-saucers/",
            "buy_card_url": "https://sweeties.net/buy-card/flying-saucers/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/flying-saucers.webp",
            "image": {
                "role": "primary",
                "alt_text": "Flying Saucers. Flying saucer sweets, made of two thin domed wafer halves sealed at a flat rim, in pastel pink, yellow, blue and white, with a matt, papery wafer texture.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/flying-saucers.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/flying-saucers.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/flying-saucers.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/flying-saucers.webp.json",
                "image_record_id": "wp-attachment-1071351",
                "attachment_id": 1071351,
                "relative_upload_path": "2026/09/flying-saucers.webp",
                "filename": "flying-saucers.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 65910,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071351",
                    "attachment_id": 1071351,
                    "source": {
                        "relative_upload_path": "2026/09/flying-saucers.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/flying-saucers.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071351",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/flying-saucers/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    },
                    {
                        "term_id": 32,
                        "name": "Retro and boiled",
                        "slug": "retro-and-boiled",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070282",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/flying-saucers/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070282",
                "product_json_route": "https://sweeties.net/product/flying-saucers/.json",
                "product_markdown_route": "https://sweeties.net/product/flying-saucers/.md",
                "checkout_url": "https://sweeties.net/buy/flying-saucers/",
                "buy_card_route": "https://sweeties.net/buy-card/flying-saucers/",
                "citation_anchor": "https://sweeties.net/product/flying-saucers/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070282",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/flying-saucers.webp",
                "image_record_id": "wp-attachment-1071351",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070282&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070282",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Retro and boiled",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.59,
                "price_per_100g_gbp": 1.59,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 40,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " flying saucers sweeties net not present in source sw039 spain loose pick and mix sold in 100 g steps default pick and mix retro and boiled ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "5ecaf9484cb49ccbbb482fdacbacab85575b682954c3d8891ea85b8b5a183d35"
            }
        },
        {
            "product_id": "1070283",
            "name": "Flying Saucers, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW039-T3",
            "slug": "flying-saucers-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Flying Saucers for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/flying-saucers-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/flying-saucers-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/flying-saucers-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070283",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.8013333333333333,
                "weight_g": 3000,
                "comparison_price_gbp": 0.8013333333333333,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 24.04
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/flying-saucers.webp",
            "image": {
                "role": "primary",
                "alt_text": "Flying Saucers. Flying saucer sweets, made of two thin domed wafer halves sealed at a flat rim, in pastel pink, yellow, blue and white, with a matt, papery wafer texture.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/flying-saucers.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/flying-saucers.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/flying-saucers.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/flying-saucers.webp.json",
                "image_record_id": "wp-attachment-1071351",
                "attachment_id": 1071351,
                "relative_upload_path": "2026/09/flying-saucers.webp",
                "filename": "flying-saucers.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 65910,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071351",
                    "attachment_id": 1071351,
                    "source": {
                        "relative_upload_path": "2026/09/flying-saucers.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/flying-saucers.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071351",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/flying-saucers-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070283",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/flying-saucers-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070283",
                "product_json_route": "https://sweeties.net/product/flying-saucers-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/flying-saucers-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/flying-saucers-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/flying-saucers-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070283",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/flying-saucers.webp",
                "image_record_id": "wp-attachment-1071351",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070283&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070283",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Retro and boiled",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 40,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " flying saucers 3 kg trade bag not present in source sw039 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "c4061c7fb91d767a674be062e3042ed0fb8f8cdbc5c78771c6a7b2a621b9f061"
            }
        },
        {
            "product_id": "1070284",
            "name": "Mint Imperials",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix",
                "Retro and boiled"
            ],
            "category_entities": [
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                },
                {
                    "term_id": 32,
                    "name": "Retro and boiled",
                    "slug": "retro-and-boiled",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW040",
            "slug": "mint-imperials",
            "short_description": "Crisp white peppermint imperials. Cool, strong and clean.",
            "canonical_product_url": "https://sweeties.net/product/mint-imperials/",
            "product_json_route": "https://sweeties.net/product/mint-imperials/.json",
            "product_markdown_route": "https://sweeties.net/product/mint-imperials/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070284",
            "price": "1.29",
            "price_gbp": 1.29,
            "regular_price_gbp": 1.29,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.29
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/mint-imperials/",
            "buy_url": "https://sweeties.net/buy/mint-imperials/",
            "human_purchase_url": "https://sweeties.net/buy/mint-imperials/",
            "buy_card_route": "https://sweeties.net/buy-card/mint-imperials/",
            "buy_card_url": "https://sweeties.net/buy-card/mint-imperials/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/mint-imperials.webp",
            "image": {
                "role": "primary",
                "alt_text": "Mint Imperials. Round, slightly flattened white mints, smooth, hard and chalky matt white.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/mint-imperials.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/mint-imperials.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/mint-imperials.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/mint-imperials.webp.json",
                "image_record_id": "wp-attachment-1071352",
                "attachment_id": 1071352,
                "relative_upload_path": "2026/09/mint-imperials.webp",
                "filename": "mint-imperials.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 27976,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071352",
                    "attachment_id": 1071352,
                    "source": {
                        "relative_upload_path": "2026/09/mint-imperials.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/mint-imperials.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071352",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/mint-imperials/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "mint",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "United Kingdom",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "mint",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    },
                    {
                        "term_id": 32,
                        "name": "Retro and boiled",
                        "slug": "retro-and-boiled",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/retro-and-boiled/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070284",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/mint-imperials/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070284",
                "product_json_route": "https://sweeties.net/product/mint-imperials/.json",
                "product_markdown_route": "https://sweeties.net/product/mint-imperials/.md",
                "checkout_url": "https://sweeties.net/buy/mint-imperials/",
                "buy_card_route": "https://sweeties.net/buy-card/mint-imperials/",
                "citation_anchor": "https://sweeties.net/product/mint-imperials/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070284",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/mint-imperials.webp",
                "image_record_id": "wp-attachment-1071352",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070284&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070284",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Retro and boiled",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.29,
                "price_per_100g_gbp": 1.29,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [
                    "Hard sweet. Not suitable for children under 3."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 50,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " mint imperials sweeties net not present in source sw040 united kingdom loose pick and mix sold in 100 g steps mint pick and mix retro and boiled ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "110c72a24b13493184ed32b4734af2eced64aa148946d46d56796bafba876e57"
            }
        },
        {
            "product_id": "1070285",
            "name": "Mint Imperials, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW040-T3",
            "slug": "mint-imperials-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Mint Imperials for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/mint-imperials-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/mint-imperials-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/mint-imperials-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070285",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.65,
                "weight_g": 3000,
                "comparison_price_gbp": 0.65,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 19.5
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/mint-imperials.webp",
            "image": {
                "role": "primary",
                "alt_text": "Mint Imperials. Round, slightly flattened white mints, smooth, hard and chalky matt white.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/mint-imperials.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/mint-imperials.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/mint-imperials.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/mint-imperials.webp.json",
                "image_record_id": "wp-attachment-1071352",
                "attachment_id": 1071352,
                "relative_upload_path": "2026/09/mint-imperials.webp",
                "filename": "mint-imperials.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 27976,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071352",
                    "attachment_id": 1071352,
                    "source": {
                        "relative_upload_path": "2026/09/mint-imperials.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/mint-imperials.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071352",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/mint-imperials-3kg-trade-bag/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "mint",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "United Kingdom",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "mint",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070285",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/mint-imperials-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070285",
                "product_json_route": "https://sweeties.net/product/mint-imperials-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/mint-imperials-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/mint-imperials-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/mint-imperials-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070285",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/mint-imperials.webp",
                "image_record_id": "wp-attachment-1071352",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070285&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070285",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Retro and boiled",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [
                    "Hard sweet. Not suitable for children under 3."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 50,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " mint imperials 3 kg trade bag not present in source sw040 t3 united kingdom 3 kg bulk bag of loose sweets for shops mint trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "724cdba0cdb6d603b4d487b7cd303817f95a0beebbc22a3b33df899299f02794"
            }
        },
        {
            "product_id": "1070286",
            "name": "Milk Chocolate Raisins",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Chocolate",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 33,
                    "name": "Chocolate",
                    "slug": "chocolate",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/chocolate/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW041",
            "slug": "milk-chocolate-raisins",
            "short_description": "Plump raisins in smooth milk chocolate.",
            "canonical_product_url": "https://sweeties.net/product/milk-chocolate-raisins/",
            "product_json_route": "https://sweeties.net/product/milk-chocolate-raisins/.json",
            "product_markdown_route": "https://sweeties.net/product/milk-chocolate-raisins/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070286",
            "price": "1.99",
            "price_gbp": 1.99,
            "regular_price_gbp": 1.99,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.99
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/milk-chocolate-raisins/",
            "buy_url": "https://sweeties.net/buy/milk-chocolate-raisins/",
            "human_purchase_url": "https://sweeties.net/buy/milk-chocolate-raisins/",
            "buy_card_route": "https://sweeties.net/buy-card/milk-chocolate-raisins/",
            "buy_card_url": "https://sweeties.net/buy-card/milk-chocolate-raisins/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/milk-chocolate-raisins.webp",
            "image": {
                "role": "primary",
                "alt_text": "Milk Chocolate Raisins. A generous scatter of about forty milk chocolate covered raisins, irregular round shapes with a glossy polished milk chocolate shell.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/milk-chocolate-raisins.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/milk-chocolate-raisins.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/milk-chocolate-raisins.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/milk-chocolate-raisins.webp.json",
                "image_record_id": "wp-attachment-1071353",
                "attachment_id": 1071353,
                "relative_upload_path": "2026/09/milk-chocolate-raisins.webp",
                "filename": "milk-chocolate-raisins.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 115424,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071353",
                    "attachment_id": 1071353,
                    "source": {
                        "relative_upload_path": "2026/09/milk-chocolate-raisins.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/milk-chocolate-raisins.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071353",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/milk-chocolate-raisins/",
            "attributes": {
                "origin": "Belgium",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Belgium",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Milk",
                        "Soya"
                    ],
                    "may_contain": [
                        "Cereals containing gluten",
                        "Eggs"
                    ],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": false
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 33,
                        "name": "Chocolate",
                        "slug": "chocolate",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/chocolate/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070286",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/milk-chocolate-raisins/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070286",
                "product_json_route": "https://sweeties.net/product/milk-chocolate-raisins/.json",
                "product_markdown_route": "https://sweeties.net/product/milk-chocolate-raisins/.md",
                "checkout_url": "https://sweeties.net/buy/milk-chocolate-raisins/",
                "buy_card_route": "https://sweeties.net/buy-card/milk-chocolate-raisins/",
                "citation_anchor": "https://sweeties.net/product/milk-chocolate-raisins/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070286",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/milk-chocolate-raisins.webp",
                "image_record_id": "wp-attachment-1071353",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070286&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070286",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Chocolate",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.99,
                "price_per_100g_gbp": 1.99,
                "allergens_contains": [
                    "Milk",
                    "Soya"
                ],
                "allergens_may_contain": [
                    "Cereals containing gluten",
                    "Eggs"
                ],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": false
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Belgium",
                "pieces_per_100g": 90,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " milk chocolate raisins sweeties net not present in source sw041 belgium loose pick and mix sold in 100 g steps default chocolate pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "cf94432dbe0747d4ac86b4d0ca87d145faa5fe745231f9ff83e3b257a57a04ce"
            }
        },
        {
            "product_id": "1070287",
            "name": "Milk Chocolate Raisins, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW041-T3",
            "slug": "milk-chocolate-raisins-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Milk Chocolate Raisins for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/milk-chocolate-raisins-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/milk-chocolate-raisins-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/milk-chocolate-raisins-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070287",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 1.0026666666666666,
                "weight_g": 3000,
                "comparison_price_gbp": 1.0026666666666666,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 30.08
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/milk-chocolate-raisins.webp",
            "image": {
                "role": "primary",
                "alt_text": "Milk Chocolate Raisins. A generous scatter of about forty milk chocolate covered raisins, irregular round shapes with a glossy polished milk chocolate shell.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/milk-chocolate-raisins.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/milk-chocolate-raisins.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/milk-chocolate-raisins.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/milk-chocolate-raisins.webp.json",
                "image_record_id": "wp-attachment-1071353",
                "attachment_id": 1071353,
                "relative_upload_path": "2026/09/milk-chocolate-raisins.webp",
                "filename": "milk-chocolate-raisins.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 115424,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071353",
                    "attachment_id": 1071353,
                    "source": {
                        "relative_upload_path": "2026/09/milk-chocolate-raisins.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/milk-chocolate-raisins.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071353",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/milk-chocolate-raisins-3kg-trade-bag/",
            "attributes": {
                "origin": "Belgium",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Belgium",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Milk",
                        "Soya"
                    ],
                    "may_contain": [
                        "Cereals containing gluten",
                        "Eggs"
                    ],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": false
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070287",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/milk-chocolate-raisins-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070287",
                "product_json_route": "https://sweeties.net/product/milk-chocolate-raisins-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/milk-chocolate-raisins-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/milk-chocolate-raisins-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/milk-chocolate-raisins-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070287",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/milk-chocolate-raisins.webp",
                "image_record_id": "wp-attachment-1071353",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070287&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070287",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Chocolate",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [
                    "Milk",
                    "Soya"
                ],
                "allergens_may_contain": [
                    "Cereals containing gluten",
                    "Eggs"
                ],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": false
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Belgium",
                "pieces_per_100g": 90,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " milk chocolate raisins 3 kg trade bag not present in source sw041 t3 belgium 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "ee1b4947de898324f1c6710a43035a1466e67129cc760b57006694b88e7dff82"
            }
        },
        {
            "product_id": "1070288",
            "name": "White Chocolate Mice",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Chocolate",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 33,
                    "name": "Chocolate",
                    "slug": "chocolate",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/chocolate/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW042",
            "slug": "white-chocolate-mice",
            "short_description": "Little white chocolate mice. Creamy and very moreish.",
            "canonical_product_url": "https://sweeties.net/product/white-chocolate-mice/",
            "product_json_route": "https://sweeties.net/product/white-chocolate-mice/.json",
            "product_markdown_route": "https://sweeties.net/product/white-chocolate-mice/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070288",
            "price": "1.99",
            "price_gbp": 1.99,
            "regular_price_gbp": 1.99,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.99
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/white-chocolate-mice/",
            "buy_url": "https://sweeties.net/buy/white-chocolate-mice/",
            "human_purchase_url": "https://sweeties.net/buy/white-chocolate-mice/",
            "buy_card_route": "https://sweeties.net/buy-card/white-chocolate-mice/",
            "buy_card_url": "https://sweeties.net/buy-card/white-chocolate-mice/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/white-chocolate-mice.webp",
            "image": {
                "role": "primary",
                "alt_text": "White Chocolate Mice. Small white chocolate mice, creamy ivory white with a smooth moulded body, a pointed nose and little rounded ears, with a soft sheen.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/white-chocolate-mice.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/white-chocolate-mice.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/white-chocolate-mice.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/white-chocolate-mice.webp.json",
                "image_record_id": "wp-attachment-1071354",
                "attachment_id": 1071354,
                "relative_upload_path": "2026/09/white-chocolate-mice.webp",
                "filename": "white-chocolate-mice.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 31966,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071354",
                    "attachment_id": 1071354,
                    "source": {
                        "relative_upload_path": "2026/09/white-chocolate-mice.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/white-chocolate-mice.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071354",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/white-chocolate-mice/",
            "attributes": {
                "origin": "Belgium",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Belgium",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Milk",
                        "Soya"
                    ],
                    "may_contain": [
                        "Cereals containing gluten",
                        "Eggs"
                    ],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": false
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 33,
                        "name": "Chocolate",
                        "slug": "chocolate",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/chocolate/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070288",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/white-chocolate-mice/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070288",
                "product_json_route": "https://sweeties.net/product/white-chocolate-mice/.json",
                "product_markdown_route": "https://sweeties.net/product/white-chocolate-mice/.md",
                "checkout_url": "https://sweeties.net/buy/white-chocolate-mice/",
                "buy_card_route": "https://sweeties.net/buy-card/white-chocolate-mice/",
                "citation_anchor": "https://sweeties.net/product/white-chocolate-mice/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070288",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/white-chocolate-mice.webp",
                "image_record_id": "wp-attachment-1071354",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070288&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070288",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Chocolate",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.99,
                "price_per_100g_gbp": 1.99,
                "allergens_contains": [
                    "Milk",
                    "Soya"
                ],
                "allergens_may_contain": [
                    "Cereals containing gluten",
                    "Eggs"
                ],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": false
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Belgium",
                "pieces_per_100g": 40,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " white chocolate mice sweeties net not present in source sw042 belgium loose pick and mix sold in 100 g steps default chocolate pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "db7519ae49b22664d067d804809de1f0adc2b762b41d7164edaefd7f136dff6d"
            }
        },
        {
            "product_id": "1070289",
            "name": "White Chocolate Mice, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW042-T3",
            "slug": "white-chocolate-mice-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of White Chocolate Mice for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/white-chocolate-mice-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/white-chocolate-mice-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/white-chocolate-mice-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070289",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 1.0026666666666666,
                "weight_g": 3000,
                "comparison_price_gbp": 1.0026666666666666,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 30.08
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/white-chocolate-mice.webp",
            "image": {
                "role": "primary",
                "alt_text": "White Chocolate Mice. Small white chocolate mice, creamy ivory white with a smooth moulded body, a pointed nose and little rounded ears, with a soft sheen.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/white-chocolate-mice.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/white-chocolate-mice.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/white-chocolate-mice.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/white-chocolate-mice.webp.json",
                "image_record_id": "wp-attachment-1071354",
                "attachment_id": 1071354,
                "relative_upload_path": "2026/09/white-chocolate-mice.webp",
                "filename": "white-chocolate-mice.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 31966,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071354",
                    "attachment_id": 1071354,
                    "source": {
                        "relative_upload_path": "2026/09/white-chocolate-mice.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/white-chocolate-mice.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071354",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/white-chocolate-mice-3kg-trade-bag/",
            "attributes": {
                "origin": "Belgium",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Belgium",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Milk",
                        "Soya"
                    ],
                    "may_contain": [
                        "Cereals containing gluten",
                        "Eggs"
                    ],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": false
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070289",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/white-chocolate-mice-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070289",
                "product_json_route": "https://sweeties.net/product/white-chocolate-mice-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/white-chocolate-mice-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/white-chocolate-mice-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/white-chocolate-mice-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070289",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/white-chocolate-mice.webp",
                "image_record_id": "wp-attachment-1071354",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070289&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070289",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Chocolate",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [
                    "Milk",
                    "Soya"
                ],
                "allergens_may_contain": [
                    "Cereals containing gluten",
                    "Eggs"
                ],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": false
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Belgium",
                "pieces_per_100g": 40,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " white chocolate mice 3 kg trade bag not present in source sw042 t3 belgium 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "8c7fda4b879e280b7d393e3567ba5e46d8e6347c328af20e5c69fcfa03bb2dc2"
            }
        },
        {
            "product_id": "1070290",
            "name": "Sprinkle Buttons",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Chocolate",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 33,
                    "name": "Chocolate",
                    "slug": "chocolate",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/chocolate/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW043",
            "slug": "sprinkle-buttons",
            "short_description": "White chocolate buttons topped with crunchy coloured sprinkles.",
            "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
            "product_json_route": "https://sweeties.net/product/sprinkle-buttons/.json",
            "product_markdown_route": "https://sweeties.net/product/sprinkle-buttons/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070290",
            "price": "1.99",
            "price_gbp": 1.99,
            "regular_price_gbp": 1.99,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.99
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
            "buy_url": "https://sweeties.net/buy/sprinkle-buttons/",
            "human_purchase_url": "https://sweeties.net/buy/sprinkle-buttons/",
            "buy_card_route": "https://sweeties.net/buy-card/sprinkle-buttons/",
            "buy_card_url": "https://sweeties.net/buy-card/sprinkle-buttons/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sprinkle-buttons.webp",
            "image": {
                "role": "primary",
                "alt_text": "Sprinkle Buttons. White chocolate buttons, flat discs covered on top with tiny round coloured sprinkles in red, yellow, blue, green and pink, creamy ivory chocolate showing around the edges.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/sprinkle-buttons.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/sprinkle-buttons.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/sprinkle-buttons.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/sprinkle-buttons.webp.json",
                "image_record_id": "wp-attachment-1071355",
                "attachment_id": 1071355,
                "relative_upload_path": "2026/09/sprinkle-buttons.webp",
                "filename": "sprinkle-buttons.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 133028,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071355",
                    "attachment_id": 1071355,
                    "source": {
                        "relative_upload_path": "2026/09/sprinkle-buttons.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/sprinkle-buttons.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071355",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/sprinkle-buttons/",
            "attributes": {
                "origin": "Belgium",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Belgium",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Milk",
                        "Soya"
                    ],
                    "may_contain": [
                        "Cereals containing gluten",
                        "Eggs"
                    ],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": false
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 33,
                        "name": "Chocolate",
                        "slug": "chocolate",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/chocolate/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070290",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070282",
                        "name": "Flying Saucers",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW039",
                        "canonical_product_url": "https://sweeties.net/product/flying-saucers/",
                        "checkout_url": "https://sweeties.net/buy/flying-saucers/",
                        "price": "1.59",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070290",
                "product_json_route": "https://sweeties.net/product/sprinkle-buttons/.json",
                "product_markdown_route": "https://sweeties.net/product/sprinkle-buttons/.md",
                "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                "buy_card_route": "https://sweeties.net/buy-card/sprinkle-buttons/",
                "citation_anchor": "https://sweeties.net/product/sprinkle-buttons/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070290",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sprinkle-buttons.webp",
                "image_record_id": "wp-attachment-1071355",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070290&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070290",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Chocolate",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.99,
                "price_per_100g_gbp": 1.99,
                "allergens_contains": [
                    "Milk",
                    "Soya"
                ],
                "allergens_may_contain": [
                    "Cereals containing gluten",
                    "Eggs"
                ],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": false
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Belgium",
                "pieces_per_100g": 60,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " sprinkle buttons sweeties net not present in source sw043 belgium loose pick and mix sold in 100 g steps default chocolate pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "20c0e3c9d9a91da1c988995fa15b4f1ddb39c5a1709a57a565852dad08b31b19"
            }
        },
        {
            "product_id": "1070291",
            "name": "Sprinkle Buttons, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW043-T3",
            "slug": "sprinkle-buttons-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Sprinkle Buttons for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/sprinkle-buttons-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/sprinkle-buttons-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070291",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 1.0026666666666666,
                "weight_g": 3000,
                "comparison_price_gbp": 1.0026666666666666,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 30.08
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sprinkle-buttons.webp",
            "image": {
                "role": "primary",
                "alt_text": "Sprinkle Buttons. White chocolate buttons, flat discs covered on top with tiny round coloured sprinkles in red, yellow, blue, green and pink, creamy ivory chocolate showing around the edges.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/sprinkle-buttons.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/sprinkle-buttons.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/sprinkle-buttons.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/sprinkle-buttons.webp.json",
                "image_record_id": "wp-attachment-1071355",
                "attachment_id": 1071355,
                "relative_upload_path": "2026/09/sprinkle-buttons.webp",
                "filename": "sprinkle-buttons.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 133028,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071355",
                    "attachment_id": 1071355,
                    "source": {
                        "relative_upload_path": "2026/09/sprinkle-buttons.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/sprinkle-buttons.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071355",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/sprinkle-buttons-3kg-trade-bag/",
            "attributes": {
                "origin": "Belgium",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Belgium",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Milk",
                        "Soya"
                    ],
                    "may_contain": [
                        "Cereals containing gluten",
                        "Eggs"
                    ],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": false
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070291",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070291",
                "product_json_route": "https://sweeties.net/product/sprinkle-buttons-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/sprinkle-buttons-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/sprinkle-buttons-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/sprinkle-buttons-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070291",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/sprinkle-buttons.webp",
                "image_record_id": "wp-attachment-1071355",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070291&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070291",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Chocolate",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [
                    "Milk",
                    "Soya"
                ],
                "allergens_may_contain": [
                    "Cereals containing gluten",
                    "Eggs"
                ],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": false
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "Belgium",
                "pieces_per_100g": 60,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " sprinkle buttons 3 kg trade bag not present in source sw043 t3 belgium 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "f4639da817515c550c11516ef4bfe58854d7d3469ae5f46f432fbd6e73059ed3"
            }
        },
        {
            "product_id": "1070292",
            "name": "Vanilla Fudge Cubes",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fudge, toffee and chews",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 34,
                    "name": "Fudge, toffee and chews",
                    "slug": "fudge-toffee-and-chews",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fudge-toffee-and-chews/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW044",
            "slug": "vanilla-fudge-cubes",
            "short_description": "Soft, crumbly vanilla fudge made with butter and cream.",
            "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
            "product_json_route": "https://sweeties.net/product/vanilla-fudge-cubes/.json",
            "product_markdown_route": "https://sweeties.net/product/vanilla-fudge-cubes/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070292",
            "price": "1.79",
            "price_gbp": 1.79,
            "regular_price_gbp": 1.79,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.79
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
            "buy_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
            "human_purchase_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
            "buy_card_route": "https://sweeties.net/buy-card/vanilla-fudge-cubes/",
            "buy_card_url": "https://sweeties.net/buy-card/vanilla-fudge-cubes/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/vanilla-fudge-cubes.webp",
            "image": {
                "role": "primary",
                "alt_text": "Vanilla Fudge Cubes. Cubes of soft vanilla fudge, a pale golden cream colour with slightly rough, crumbly edges and a fine sugary grain visible on the cut faces.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/vanilla-fudge-cubes.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/vanilla-fudge-cubes.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/vanilla-fudge-cubes.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/vanilla-fudge-cubes.webp.json",
                "image_record_id": "wp-attachment-1071356",
                "attachment_id": 1071356,
                "relative_upload_path": "2026/09/vanilla-fudge-cubes.webp",
                "filename": "vanilla-fudge-cubes.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 96174,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071356",
                    "attachment_id": 1071356,
                    "source": {
                        "relative_upload_path": "2026/09/vanilla-fudge-cubes.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/vanilla-fudge-cubes.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071356",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/vanilla-fudge-cubes/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "vanilla",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "United Kingdom",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "vanilla",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Milk",
                        "Soya"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 34,
                        "name": "Fudge, toffee and chews",
                        "slug": "fudge-toffee-and-chews",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fudge-toffee-and-chews/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070292",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070282",
                        "name": "Flying Saucers",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW039",
                        "canonical_product_url": "https://sweeties.net/product/flying-saucers/",
                        "checkout_url": "https://sweeties.net/buy/flying-saucers/",
                        "price": "1.59",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070292",
                "product_json_route": "https://sweeties.net/product/vanilla-fudge-cubes/.json",
                "product_markdown_route": "https://sweeties.net/product/vanilla-fudge-cubes/.md",
                "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                "buy_card_route": "https://sweeties.net/buy-card/vanilla-fudge-cubes/",
                "citation_anchor": "https://sweeties.net/product/vanilla-fudge-cubes/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070292",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/vanilla-fudge-cubes.webp",
                "image_record_id": "wp-attachment-1071356",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070292&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070292",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fudge and chews",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.79,
                "price_per_100g_gbp": 1.79,
                "allergens_contains": [
                    "Milk",
                    "Soya"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "United Kingdom",
                "pieces_per_100g": 12,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " vanilla fudge cubes sweeties net not present in source sw044 united kingdom loose pick and mix sold in 100 g steps vanilla fudge toffee and chews pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "8ce1640510eb7af1145d5fde967235432e0106d5e24312498ac1429a23666788"
            }
        },
        {
            "product_id": "1070293",
            "name": "Vanilla Fudge Cubes, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW044-T3",
            "slug": "vanilla-fudge-cubes-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Vanilla Fudge Cubes for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/vanilla-fudge-cubes-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/vanilla-fudge-cubes-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070293",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.902,
                "weight_g": 3000,
                "comparison_price_gbp": 0.902,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 27.06
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/vanilla-fudge-cubes.webp",
            "image": {
                "role": "primary",
                "alt_text": "Vanilla Fudge Cubes. Cubes of soft vanilla fudge, a pale golden cream colour with slightly rough, crumbly edges and a fine sugary grain visible on the cut faces.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/vanilla-fudge-cubes.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/vanilla-fudge-cubes.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/vanilla-fudge-cubes.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/vanilla-fudge-cubes.webp.json",
                "image_record_id": "wp-attachment-1071356",
                "attachment_id": 1071356,
                "relative_upload_path": "2026/09/vanilla-fudge-cubes.webp",
                "filename": "vanilla-fudge-cubes.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 96174,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071356",
                    "attachment_id": 1071356,
                    "source": {
                        "relative_upload_path": "2026/09/vanilla-fudge-cubes.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/vanilla-fudge-cubes.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071356",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/vanilla-fudge-cubes-3kg-trade-bag/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "vanilla",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "United Kingdom",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "vanilla",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Milk",
                        "Soya"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070293",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070293",
                "product_json_route": "https://sweeties.net/product/vanilla-fudge-cubes-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/vanilla-fudge-cubes-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/vanilla-fudge-cubes-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/vanilla-fudge-cubes-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070293",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/vanilla-fudge-cubes.webp",
                "image_record_id": "wp-attachment-1071356",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070293&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070293",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fudge and chews",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [
                    "Milk",
                    "Soya"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "United Kingdom",
                "pieces_per_100g": 12,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " vanilla fudge cubes 3 kg trade bag not present in source sw044 t3 united kingdom 3 kg bulk bag of loose sweets for shops vanilla trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "1a6e39eb403356d1021c11215509051fde5d7383c1ace0b6c89fcc4a527cdc26"
            }
        },
        {
            "product_id": "1070294",
            "name": "Strawberry Bonbons",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fudge, toffee and chews",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 34,
                    "name": "Fudge, toffee and chews",
                    "slug": "fudge-toffee-and-chews",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fudge-toffee-and-chews/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW045",
            "slug": "strawberry-bonbons",
            "short_description": "Chewy strawberry bonbons rolled in powdered sugar.",
            "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
            "product_json_route": "https://sweeties.net/product/strawberry-bonbons/.json",
            "product_markdown_route": "https://sweeties.net/product/strawberry-bonbons/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070294",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
            "buy_url": "https://sweeties.net/buy/strawberry-bonbons/",
            "human_purchase_url": "https://sweeties.net/buy/strawberry-bonbons/",
            "buy_card_route": "https://sweeties.net/buy-card/strawberry-bonbons/",
            "buy_card_url": "https://sweeties.net/buy-card/strawberry-bonbons/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/strawberry-bonbons.webp",
            "image": {
                "role": "primary",
                "alt_text": "Strawberry Bonbons. Chewy round bonbons, strawberry pink, rolled in a fine white powdered sugar that dusts their surface and the background around them.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/strawberry-bonbons.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/strawberry-bonbons.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/strawberry-bonbons.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/strawberry-bonbons.webp.json",
                "image_record_id": "wp-attachment-1071357",
                "attachment_id": 1071357,
                "relative_upload_path": "2026/09/strawberry-bonbons.webp",
                "filename": "strawberry-bonbons.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 189196,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071357",
                    "attachment_id": 1071357,
                    "source": {
                        "relative_upload_path": "2026/09/strawberry-bonbons.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/strawberry-bonbons.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071357",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/strawberry-bonbons/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "strawberry",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "United Kingdom",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "strawberry",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 34,
                        "name": "Fudge, toffee and chews",
                        "slug": "fudge-toffee-and-chews",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fudge-toffee-and-chews/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070294",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070282",
                        "name": "Flying Saucers",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW039",
                        "canonical_product_url": "https://sweeties.net/product/flying-saucers/",
                        "checkout_url": "https://sweeties.net/buy/flying-saucers/",
                        "price": "1.59",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070294",
                "product_json_route": "https://sweeties.net/product/strawberry-bonbons/.json",
                "product_markdown_route": "https://sweeties.net/product/strawberry-bonbons/.md",
                "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                "buy_card_route": "https://sweeties.net/buy-card/strawberry-bonbons/",
                "citation_anchor": "https://sweeties.net/product/strawberry-bonbons/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070294",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/strawberry-bonbons.webp",
                "image_record_id": "wp-attachment-1071357",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070294&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070294",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fudge and chews",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "United Kingdom",
                "pieces_per_100g": 26,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " strawberry bonbons sweeties net not present in source sw045 united kingdom loose pick and mix sold in 100 g steps strawberry fudge toffee and chews pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "3c2d6000c757e259a12606d25395d0dffc8b90625813e17401150e5c21959351"
            }
        },
        {
            "product_id": "1070295",
            "name": "Strawberry Bonbons, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW045-T3",
            "slug": "strawberry-bonbons-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Strawberry Bonbons for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/strawberry-bonbons-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/strawberry-bonbons-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070295",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/strawberry-bonbons.webp",
            "image": {
                "role": "primary",
                "alt_text": "Strawberry Bonbons. Chewy round bonbons, strawberry pink, rolled in a fine white powdered sugar that dusts their surface and the background around them.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/strawberry-bonbons.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/strawberry-bonbons.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/strawberry-bonbons.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/strawberry-bonbons.webp.json",
                "image_record_id": "wp-attachment-1071357",
                "attachment_id": 1071357,
                "relative_upload_path": "2026/09/strawberry-bonbons.webp",
                "filename": "strawberry-bonbons.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 189196,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071357",
                    "attachment_id": 1071357,
                    "source": {
                        "relative_upload_path": "2026/09/strawberry-bonbons.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/strawberry-bonbons.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071357",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/strawberry-bonbons-3kg-trade-bag/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "strawberry",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "United Kingdom",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "strawberry",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070295",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070295",
                "product_json_route": "https://sweeties.net/product/strawberry-bonbons-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/strawberry-bonbons-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/strawberry-bonbons-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/strawberry-bonbons-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070295",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/strawberry-bonbons.webp",
                "image_record_id": "wp-attachment-1071357",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070295&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070295",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fudge and chews",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "United Kingdom",
                "pieces_per_100g": 26,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " strawberry bonbons 3 kg trade bag not present in source sw045 t3 united kingdom 3 kg bulk bag of loose sweets for shops strawberry trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "2070c8bd60feda64052d3919209e3cf296e702168f1b014f291715c0aeaf01ce"
            }
        },
        {
            "product_id": "1070296",
            "name": "Toffee Bonbons",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fudge, toffee and chews",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 34,
                    "name": "Fudge, toffee and chews",
                    "slug": "fudge-toffee-and-chews",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fudge-toffee-and-chews/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW046",
            "slug": "toffee-bonbons",
            "short_description": "Chewy toffee bonbons in powdered sugar.",
            "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
            "product_json_route": "https://sweeties.net/product/toffee-bonbons/.json",
            "product_markdown_route": "https://sweeties.net/product/toffee-bonbons/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070296",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
            "buy_url": "https://sweeties.net/buy/toffee-bonbons/",
            "human_purchase_url": "https://sweeties.net/buy/toffee-bonbons/",
            "buy_card_route": "https://sweeties.net/buy-card/toffee-bonbons/",
            "buy_card_url": "https://sweeties.net/buy-card/toffee-bonbons/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/toffee-bonbons.webp",
            "image": {
                "role": "primary",
                "alt_text": "Toffee Bonbons. Chewy round bonbons, a pale caramel cream colour, rolled in fine white powdered sugar that dusts their surface and the background around them.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/toffee-bonbons.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/toffee-bonbons.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/toffee-bonbons.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/toffee-bonbons.webp.json",
                "image_record_id": "wp-attachment-1071358",
                "attachment_id": 1071358,
                "relative_upload_path": "2026/09/toffee-bonbons.webp",
                "filename": "toffee-bonbons.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 130246,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071358",
                    "attachment_id": 1071358,
                    "source": {
                        "relative_upload_path": "2026/09/toffee-bonbons.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/toffee-bonbons.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071358",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/toffee-bonbons/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "United Kingdom",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Milk"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 34,
                        "name": "Fudge, toffee and chews",
                        "slug": "fudge-toffee-and-chews",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fudge-toffee-and-chews/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070296",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070282",
                        "name": "Flying Saucers",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW039",
                        "canonical_product_url": "https://sweeties.net/product/flying-saucers/",
                        "checkout_url": "https://sweeties.net/buy/flying-saucers/",
                        "price": "1.59",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070296",
                "product_json_route": "https://sweeties.net/product/toffee-bonbons/.json",
                "product_markdown_route": "https://sweeties.net/product/toffee-bonbons/.md",
                "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                "buy_card_route": "https://sweeties.net/buy-card/toffee-bonbons/",
                "citation_anchor": "https://sweeties.net/product/toffee-bonbons/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070296",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/toffee-bonbons.webp",
                "image_record_id": "wp-attachment-1071358",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070296&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070296",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fudge and chews",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [
                    "Milk"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "United Kingdom",
                "pieces_per_100g": 26,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " toffee bonbons sweeties net not present in source sw046 united kingdom loose pick and mix sold in 100 g steps default fudge toffee and chews pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "8d79067fcd23d9921ae24ddfee25973dc75a29891cba57b4f6f9b6fcebd6adfc"
            }
        },
        {
            "product_id": "1070297",
            "name": "Toffee Bonbons, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW046-T3",
            "slug": "toffee-bonbons-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Toffee Bonbons for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/toffee-bonbons-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/toffee-bonbons-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/toffee-bonbons-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070297",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/toffee-bonbons.webp",
            "image": {
                "role": "primary",
                "alt_text": "Toffee Bonbons. Chewy round bonbons, a pale caramel cream colour, rolled in fine white powdered sugar that dusts their surface and the background around them.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/toffee-bonbons.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/toffee-bonbons.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/toffee-bonbons.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/toffee-bonbons.webp.json",
                "image_record_id": "wp-attachment-1071358",
                "attachment_id": 1071358,
                "relative_upload_path": "2026/09/toffee-bonbons.webp",
                "filename": "toffee-bonbons.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 130246,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071358",
                    "attachment_id": 1071358,
                    "source": {
                        "relative_upload_path": "2026/09/toffee-bonbons.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/toffee-bonbons.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071358",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/toffee-bonbons-3kg-trade-bag/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "United Kingdom",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Milk"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070297",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/toffee-bonbons-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070297",
                "product_json_route": "https://sweeties.net/product/toffee-bonbons-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/toffee-bonbons-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/toffee-bonbons-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/toffee-bonbons-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070297",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/toffee-bonbons.webp",
                "image_record_id": "wp-attachment-1071358",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070297&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070297",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fudge and chews",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [
                    "Milk"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "United Kingdom",
                "pieces_per_100g": 26,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " toffee bonbons 3 kg trade bag not present in source sw046 t3 united kingdom 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "61709c2ba05a00b9d443b1b3d8b2d3e8b5ceb69dfdf1ad0ca0f0d0d18c5007f9"
            }
        },
        {
            "product_id": "1070298",
            "name": "Chocolate Toffee Eclairs",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Fudge, toffee and chews",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 34,
                    "name": "Fudge, toffee and chews",
                    "slug": "fudge-toffee-and-chews",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fudge-toffee-and-chews/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW047",
            "slug": "chocolate-toffee-eclairs",
            "short_description": "Chewy toffee with a soft chocolate centre, individually wrapped.",
            "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
            "product_json_route": "https://sweeties.net/product/chocolate-toffee-eclairs/.json",
            "product_markdown_route": "https://sweeties.net/product/chocolate-toffee-eclairs/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070298",
            "price": "1.79",
            "price_gbp": 1.79,
            "regular_price_gbp": 1.79,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.79
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
            "buy_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
            "human_purchase_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
            "buy_card_route": "https://sweeties.net/buy-card/chocolate-toffee-eclairs/",
            "buy_card_url": "https://sweeties.net/buy-card/chocolate-toffee-eclairs/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/chocolate-toffee-eclairs.webp",
            "image": {
                "role": "primary",
                "alt_text": "Chocolate Toffee Eclairs. Individually wrapped toffee sweets in plain golden brown twist wrappers with no printing, with three unwrapped in the front: glossy golden brown toffee.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/chocolate-toffee-eclairs.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/chocolate-toffee-eclairs.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/chocolate-toffee-eclairs.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/chocolate-toffee-eclairs.webp.json",
                "image_record_id": "wp-attachment-1071359",
                "attachment_id": 1071359,
                "relative_upload_path": "2026/09/chocolate-toffee-eclairs.webp",
                "filename": "chocolate-toffee-eclairs.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 104760,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071359",
                    "attachment_id": 1071359,
                    "source": {
                        "relative_upload_path": "2026/09/chocolate-toffee-eclairs.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/chocolate-toffee-eclairs.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071359",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/chocolate-toffee-eclairs/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "United Kingdom",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Milk",
                        "Soya"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 34,
                        "name": "Fudge, toffee and chews",
                        "slug": "fudge-toffee-and-chews",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/fudge-toffee-and-chews/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070298",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070282",
                        "name": "Flying Saucers",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW039",
                        "canonical_product_url": "https://sweeties.net/product/flying-saucers/",
                        "checkout_url": "https://sweeties.net/buy/flying-saucers/",
                        "price": "1.59",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070298",
                "product_json_route": "https://sweeties.net/product/chocolate-toffee-eclairs/.json",
                "product_markdown_route": "https://sweeties.net/product/chocolate-toffee-eclairs/.md",
                "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                "buy_card_route": "https://sweeties.net/buy-card/chocolate-toffee-eclairs/",
                "citation_anchor": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070298",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/chocolate-toffee-eclairs.webp",
                "image_record_id": "wp-attachment-1071359",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070298&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070298",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Fudge and chews",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.79,
                "price_per_100g_gbp": 1.79,
                "allergens_contains": [
                    "Milk",
                    "Soya"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "United Kingdom",
                "pieces_per_100g": 12,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " chocolate toffee eclairs sweeties net not present in source sw047 united kingdom loose pick and mix sold in 100 g steps default fudge toffee and chews pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "5b8fc669a7ba3a04365d4688d42e9563e50aeea7b31e13f12bde4ef193684373"
            }
        },
        {
            "product_id": "1070299",
            "name": "Chocolate Toffee Eclairs, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW047-T3",
            "slug": "chocolate-toffee-eclairs-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Chocolate Toffee Eclairs for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/chocolate-toffee-eclairs-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/chocolate-toffee-eclairs-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070299",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.902,
                "weight_g": 3000,
                "comparison_price_gbp": 0.902,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 27.06
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/chocolate-toffee-eclairs.webp",
            "image": {
                "role": "primary",
                "alt_text": "Chocolate Toffee Eclairs. Individually wrapped toffee sweets in plain golden brown twist wrappers with no printing, with three unwrapped in the front: glossy golden brown toffee.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/chocolate-toffee-eclairs.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/chocolate-toffee-eclairs.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/chocolate-toffee-eclairs.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/chocolate-toffee-eclairs.webp.json",
                "image_record_id": "wp-attachment-1071359",
                "attachment_id": 1071359,
                "relative_upload_path": "2026/09/chocolate-toffee-eclairs.webp",
                "filename": "chocolate-toffee-eclairs.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 104760,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071359",
                    "attachment_id": 1071359,
                    "source": {
                        "relative_upload_path": "2026/09/chocolate-toffee-eclairs.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/chocolate-toffee-eclairs.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071359",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/chocolate-toffee-eclairs-3kg-trade-bag/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "United Kingdom",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Milk",
                        "Soya"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.children.small_sweets": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "restricted_policy",
                        "allowed_wording": [
                            "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets."
                        ],
                        "disallowed_wording": [
                            "safe for toddlers",
                            "suitable for all ages",
                            "safe for kids"
                        ],
                        "maps_live_strings": [
                            "children",
                            "toddlers",
                            "under 3"
                        ],
                        "governance_note": "Children claims must be caregiver led and must not imply blanket safety.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.children.small_sweets",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070299",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070299",
                "product_json_route": "https://sweeties.net/product/chocolate-toffee-eclairs-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/chocolate-toffee-eclairs-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/chocolate-toffee-eclairs-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/chocolate-toffee-eclairs-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070299",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/chocolate-toffee-eclairs.webp",
                "image_record_id": "wp-attachment-1071359",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070299&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070299",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Fudge and chews",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [
                    "Milk",
                    "Soya"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "none",
                "warnings": [],
                "made_in": "United Kingdom",
                "pieces_per_100g": 12,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " chocolate toffee eclairs 3 kg trade bag not present in source sw047 t3 united kingdom 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "5e0813d8fbec35eef86f2887e6f4047c878fa4df6732904aa3ba3c671e4794c6"
            }
        },
        {
            "product_id": "1070300",
            "name": "Liquorice Allsorts",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Liquorice",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 35,
                    "name": "Liquorice",
                    "slug": "liquorice",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/liquorice/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW048",
            "slug": "liquorice-allsorts",
            "short_description": "The full allsorts line up: liquorice layers, coconut rolls and jelly buttons.",
            "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
            "product_json_route": "https://sweeties.net/product/liquorice-allsorts/.json",
            "product_markdown_route": "https://sweeties.net/product/liquorice-allsorts/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070300",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
            "buy_url": "https://sweeties.net/buy/liquorice-allsorts/",
            "human_purchase_url": "https://sweeties.net/buy/liquorice-allsorts/",
            "buy_card_route": "https://sweeties.net/buy-card/liquorice-allsorts/",
            "buy_card_url": "https://sweeties.net/buy-card/liquorice-allsorts/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/liquorice-allsorts.webp",
            "image": {
                "role": "primary",
                "alt_text": "Liquorice Allsorts. A varied pile of about fifteen liquorice allsorts: layered squares of black liquorice sandwiched between pink, white, yellow and orange sweet layers.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/liquorice-allsorts.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/liquorice-allsorts.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/liquorice-allsorts.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/liquorice-allsorts.webp.json",
                "image_record_id": "wp-attachment-1071360",
                "attachment_id": 1071360,
                "relative_upload_path": "2026/09/liquorice-allsorts.webp",
                "filename": "liquorice-allsorts.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 122574,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071360",
                    "attachment_id": 1071360,
                    "source": {
                        "relative_upload_path": "2026/09/liquorice-allsorts.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/liquorice-allsorts.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071360",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/liquorice-allsorts/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "United Kingdom",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Cereals containing gluten"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": false
                    },
                    "gelatine": "beef",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 35,
                        "name": "Liquorice",
                        "slug": "liquorice",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/liquorice/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070300",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070282",
                        "name": "Flying Saucers",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW039",
                        "canonical_product_url": "https://sweeties.net/product/flying-saucers/",
                        "checkout_url": "https://sweeties.net/buy/flying-saucers/",
                        "price": "1.59",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070300",
                "product_json_route": "https://sweeties.net/product/liquorice-allsorts/.json",
                "product_markdown_route": "https://sweeties.net/product/liquorice-allsorts/.md",
                "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                "buy_card_route": "https://sweeties.net/buy-card/liquorice-allsorts/",
                "citation_anchor": "https://sweeties.net/product/liquorice-allsorts/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070300",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/liquorice-allsorts.webp",
                "image_record_id": "wp-attachment-1071360",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070300&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070300",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Liquorice",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [
                    "Cereals containing gluten"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": false
                },
                "gelatine": "beef",
                "warnings": [
                    "Contains liquorice."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 16,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " liquorice allsorts sweeties net not present in source sw048 united kingdom loose pick and mix sold in 100 g steps default liquorice pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "03ffbcb11edb3f655da224507beccf2fa631eb5e54fbf17ff86d625e53eb26bd"
            }
        },
        {
            "product_id": "1070301",
            "name": "Liquorice Allsorts, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW048-T3",
            "slug": "liquorice-allsorts-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Liquorice Allsorts for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070301",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/liquorice-allsorts.webp",
            "image": {
                "role": "primary",
                "alt_text": "Liquorice Allsorts. A varied pile of about fifteen liquorice allsorts: layered squares of black liquorice sandwiched between pink, white, yellow and orange sweet layers.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/liquorice-allsorts.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/liquorice-allsorts.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/liquorice-allsorts.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/liquorice-allsorts.webp.json",
                "image_record_id": "wp-attachment-1071360",
                "attachment_id": 1071360,
                "relative_upload_path": "2026/09/liquorice-allsorts.webp",
                "filename": "liquorice-allsorts.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 122574,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071360",
                    "attachment_id": 1071360,
                    "source": {
                        "relative_upload_path": "2026/09/liquorice-allsorts.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/liquorice-allsorts.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071360",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "United Kingdom",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Cereals containing gluten"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": false
                    },
                    "gelatine": "beef",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070301",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070303",
                        "name": "Soft Liquorice Twists, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW049-T3",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070301",
                "product_json_route": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/liquorice-allsorts-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070301",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/liquorice-allsorts.webp",
                "image_record_id": "wp-attachment-1071360",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070301&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070301",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Liquorice",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [
                    "Cereals containing gluten"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": false
                },
                "gelatine": "beef",
                "warnings": [
                    "Contains liquorice."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 16,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " liquorice allsorts 3 kg trade bag not present in source sw048 t3 united kingdom 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "0cfe39863b5881d2ba4101935f22c48decae25abe1e3303476f1bc01431c0223"
            }
        },
        {
            "product_id": "1070302",
            "name": "Soft Liquorice Twists",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Liquorice",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 35,
                    "name": "Liquorice",
                    "slug": "liquorice",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/liquorice/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW049",
            "slug": "soft-liquorice-twists",
            "short_description": "Soft black liquorice twists with a proper deep flavour.",
            "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
            "product_json_route": "https://sweeties.net/product/soft-liquorice-twists/.json",
            "product_markdown_route": "https://sweeties.net/product/soft-liquorice-twists/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070302",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
            "buy_url": "https://sweeties.net/buy/soft-liquorice-twists/",
            "human_purchase_url": "https://sweeties.net/buy/soft-liquorice-twists/",
            "buy_card_route": "https://sweeties.net/buy-card/soft-liquorice-twists/",
            "buy_card_url": "https://sweeties.net/buy-card/soft-liquorice-twists/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/soft-liquorice-twists.webp",
            "image": {
                "role": "primary",
                "alt_text": "Soft Liquorice Twists. Soft black liquorice twists, twisted ropes with a ridged spiral surface, deep glossy black with a soft sheen, some lying straight and some gently curved.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/soft-liquorice-twists.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/soft-liquorice-twists.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/soft-liquorice-twists.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/soft-liquorice-twists.webp.json",
                "image_record_id": "wp-attachment-1071361",
                "attachment_id": 1071361,
                "relative_upload_path": "2026/09/soft-liquorice-twists.webp",
                "filename": "soft-liquorice-twists.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 96134,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071361",
                    "attachment_id": 1071361,
                    "source": {
                        "relative_upload_path": "2026/09/soft-liquorice-twists.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/soft-liquorice-twists.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071361",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/soft-liquorice-twists/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "United Kingdom",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Cereals containing gluten"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": false
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 35,
                        "name": "Liquorice",
                        "slug": "liquorice",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/liquorice/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070302",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070304",
                        "name": "Marshmallow Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW050",
                        "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                        "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070282",
                        "name": "Flying Saucers",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW039",
                        "canonical_product_url": "https://sweeties.net/product/flying-saucers/",
                        "checkout_url": "https://sweeties.net/buy/flying-saucers/",
                        "price": "1.59",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070302",
                "product_json_route": "https://sweeties.net/product/soft-liquorice-twists/.json",
                "product_markdown_route": "https://sweeties.net/product/soft-liquorice-twists/.md",
                "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                "buy_card_route": "https://sweeties.net/buy-card/soft-liquorice-twists/",
                "citation_anchor": "https://sweeties.net/product/soft-liquorice-twists/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070302",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/soft-liquorice-twists.webp",
                "image_record_id": "wp-attachment-1071361",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070302&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070302",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Liquorice",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [
                    "Cereals containing gluten"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": false
                },
                "gelatine": "none",
                "warnings": [
                    "Contains liquorice."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 14,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " soft liquorice twists sweeties net not present in source sw049 united kingdom loose pick and mix sold in 100 g steps default liquorice pick and mix ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "e9dd634c44bb00ba53a3d00bff01ce33d0e5d9118acf6d5ecc899dd8c2b0cffe"
            }
        },
        {
            "product_id": "1070303",
            "name": "Soft Liquorice Twists, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW049-T3",
            "slug": "soft-liquorice-twists-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Soft Liquorice Twists for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/soft-liquorice-twists-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/soft-liquorice-twists-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070303",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/soft-liquorice-twists.webp",
            "image": {
                "role": "primary",
                "alt_text": "Soft Liquorice Twists. Soft black liquorice twists, twisted ropes with a ridged spiral surface, deep glossy black with a soft sheen, some lying straight and some gently curved.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/soft-liquorice-twists.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/soft-liquorice-twists.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/soft-liquorice-twists.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/soft-liquorice-twists.webp.json",
                "image_record_id": "wp-attachment-1071361",
                "attachment_id": 1071361,
                "relative_upload_path": "2026/09/soft-liquorice-twists.webp",
                "filename": "soft-liquorice-twists.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 96134,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071361",
                    "attachment_id": 1071361,
                    "source": {
                        "relative_upload_path": "2026/09/soft-liquorice-twists.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/soft-liquorice-twists.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071361",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/soft-liquorice-twists-3kg-trade-bag/",
            "attributes": {
                "origin": "United Kingdom",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "United Kingdom",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [
                        "Cereals containing gluten"
                    ],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": true,
                        "vegans": true,
                        "halal": false,
                        "gluten_free_diets": false
                    },
                    "gelatine": "none",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070303",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070303",
                "product_json_route": "https://sweeties.net/product/soft-liquorice-twists-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/soft-liquorice-twists-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/soft-liquorice-twists-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/soft-liquorice-twists-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070303",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/soft-liquorice-twists.webp",
                "image_record_id": "wp-attachment-1071361",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070303&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070303",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Liquorice",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [
                    "Cereals containing gluten"
                ],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": true,
                    "vegans": true,
                    "halal": false,
                    "gluten_free_diets": false
                },
                "gelatine": "none",
                "warnings": [
                    "Contains liquorice."
                ],
                "made_in": "United Kingdom",
                "pieces_per_100g": 14,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " soft liquorice twists 3 kg trade bag not present in source sw049 t3 united kingdom 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "133e7ed4d9e268eb0f96d5b40c01f454f3c58b91ae481bd5ae6763c4042123bb"
            }
        },
        {
            "product_id": "1070304",
            "name": "Marshmallow Twists",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Marshmallows",
                "Pick and mix"
            ],
            "category_entities": [
                {
                    "term_id": 36,
                    "name": "Marshmallows",
                    "slug": "marshmallows",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/marshmallows/"
                },
                {
                    "term_id": 28,
                    "name": "Pick and mix",
                    "slug": "pick-and-mix",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW050",
            "slug": "marshmallow-twists",
            "short_description": "Fluffy pink and white marshmallow twists.",
            "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
            "product_json_route": "https://sweeties.net/product/marshmallow-twists/.json",
            "product_markdown_route": "https://sweeties.net/product/marshmallow-twists/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070304",
            "price": "1.49",
            "price_gbp": 1.49,
            "regular_price_gbp": 1.49,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 1.49
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "https://schema.org/InStock",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock permits human checkout; confirm again before purchase."
            },
            "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
            "buy_url": "https://sweeties.net/buy/marshmallow-twists/",
            "human_purchase_url": "https://sweeties.net/buy/marshmallow-twists/",
            "buy_card_route": "https://sweeties.net/buy-card/marshmallow-twists/",
            "buy_card_url": "https://sweeties.net/buy-card/marshmallow-twists/",
            "purchase_intent_note": "Human confirmed purchase intent URL. Do not fetch, prefetch, iframe, crawl as an action, or open autonomously.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/marshmallow-twists.webp",
            "image": {
                "role": "primary",
                "alt_text": "Marshmallow Twists. Marshmallow twists, soft ropes of pink and white marshmallow twisted together in a spiral, matt, fluffy and lightly dusted.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/marshmallow-twists.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/marshmallow-twists.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/marshmallow-twists.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/marshmallow-twists.webp.json",
                "image_record_id": "wp-attachment-1071362",
                "attachment_id": 1071362,
                "relative_upload_path": "2026/09/marshmallow-twists.webp",
                "filename": "marshmallow-twists.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 56916,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071362",
                    "attachment_id": 1071362,
                    "source": {
                        "relative_upload_path": "2026/09/marshmallow-twists.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/marshmallow-twists.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071362",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/marshmallow-twists/",
            "attributes": {
                "origin": "Spain",
                "format": "Loose pick and mix, sold in 100 g steps",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_sweet"
            },
            "origin": "Spain",
            "format": "Loose pick and mix, sold in 100 g steps",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 36,
                        "name": "Marshmallows",
                        "slug": "marshmallows",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/marshmallows/"
                    },
                    {
                        "term_id": 28,
                        "name": "Pick and mix",
                        "slug": "pick-and-mix",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/pick-and-mix/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070304",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070300",
                        "name": "Liquorice Allsorts",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW048",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts/",
                        "checkout_url": "https://sweeties.net/buy/liquorice-allsorts/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070302",
                        "name": "Soft Liquorice Twists",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW049",
                        "canonical_product_url": "https://sweeties.net/product/soft-liquorice-twists/",
                        "checkout_url": "https://sweeties.net/buy/soft-liquorice-twists/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070290",
                        "name": "Sprinkle Buttons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW043",
                        "canonical_product_url": "https://sweeties.net/product/sprinkle-buttons/",
                        "checkout_url": "https://sweeties.net/buy/sprinkle-buttons/",
                        "price": "1.99",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070292",
                        "name": "Vanilla Fudge Cubes",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW044",
                        "canonical_product_url": "https://sweeties.net/product/vanilla-fudge-cubes/",
                        "checkout_url": "https://sweeties.net/buy/vanilla-fudge-cubes/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070294",
                        "name": "Strawberry Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW045",
                        "canonical_product_url": "https://sweeties.net/product/strawberry-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/strawberry-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070296",
                        "name": "Toffee Bonbons",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW046",
                        "canonical_product_url": "https://sweeties.net/product/toffee-bonbons/",
                        "checkout_url": "https://sweeties.net/buy/toffee-bonbons/",
                        "price": "1.49",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070298",
                        "name": "Chocolate Toffee Eclairs",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW047",
                        "canonical_product_url": "https://sweeties.net/product/chocolate-toffee-eclairs/",
                        "checkout_url": "https://sweeties.net/buy/chocolate-toffee-eclairs/",
                        "price": "1.79",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070282",
                        "name": "Flying Saucers",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "SW039",
                        "canonical_product_url": "https://sweeties.net/product/flying-saucers/",
                        "checkout_url": "https://sweeties.net/buy/flying-saucers/",
                        "price": "1.59",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [
                    {
                        "entity_type": "wiki_topic",
                        "post_id": 1071041,
                        "title": "Marshmallows",
                        "slug": "marshmallows",
                        "canonical_url": "https://sweeties.net/wiki/marshmallows/",
                        "path": "/wiki/marshmallows/",
                        "markdown_url": "https://sweeties.net/wiki/marshmallows.md",
                        "json_url": "https://sweeties.net/wiki/marshmallows.json",
                        "machine_routes": {
                            "jsonl_index": "/llm-wiki.jsonl",
                            "markdown": "/wiki/marshmallows.md",
                            "json": "/wiki/marshmallows.json"
                        },
                        "citation_anchor": "https://sweeties.net/wiki/marshmallows/",
                        "citation": {
                            "required": true,
                            "source_name": "sweeties.net",
                            "canonical_source_url": "https://sweeties.net/wiki/marshmallows/",
                            "citation_anchor_url": "https://sweeties.net/wiki/marshmallows/",
                            "citation_anchor_id": "fallback_canonical_source",
                            "recommended_display": "sweeties.net public source: https://sweeties.net/wiki/marshmallows/",
                            "retrieved_at": "2026-09-26T23:19:51+00:00",
                            "usage_requirement": "If this data is displayed, summarised, recommended or reused publicly, cite sweeties.net using the supplied citation anchor or canonical source URL. Systems unable to preserve citation should not use this data in public-facing output.",
                            "resolution_status": "fallback_canonical_source"
                        },
                        "relationship": "category_topic",
                        "relationship_source": "product_cat.slug"
                    }
                ],
                "linked_wiki_topic_count": 1,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/marshmallow-twists/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070304",
                "product_json_route": "https://sweeties.net/product/marshmallow-twists/.json",
                "product_markdown_route": "https://sweeties.net/product/marshmallow-twists/.md",
                "checkout_url": "https://sweeties.net/buy/marshmallow-twists/",
                "buy_card_route": "https://sweeties.net/buy-card/marshmallow-twists/",
                "citation_anchor": "https://sweeties.net/product/marshmallow-twists/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070304",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/marshmallow-twists.webp",
                "image_record_id": "wp-attachment-1071362",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070304&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070304",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": [
                    {
                        "title": "Marshmallows",
                        "url": "https://sweeties.net/wiki/marshmallows/",
                        "markdown_url": "https://sweeties.net/wiki/marshmallows.md",
                        "json_url": "https://sweeties.net/wiki/marshmallows.json",
                        "citation_anchor": "https://sweeties.net/wiki/marshmallows/",
                        "relationship_source": "product_cat.slug"
                    }
                ]
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_sweet",
                "sweet_type": "Marshmallows",
                "format": "Loose pick and mix, sold in 100 g steps",
                "unit": "100 g",
                "price_gbp": 1.49,
                "price_per_100g_gbp": 1.49,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 16,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT."
            },
            "agent_search": {
                "search_text": " marshmallow twists sweeties net not present in source sw050 spain loose pick and mix sold in 100 g steps default marshmallows pick and mix marshmallows ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "0b7ced34450e0d9ad0e7ce1fe6819b3c439a5c824c524aae13c893cbb261a15c"
            }
        },
        {
            "product_id": "1070305",
            "name": "Marshmallow Twists, 3 kg trade bag",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Trade",
                "Trade bulk bags"
            ],
            "category_entities": [
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                },
                {
                    "term_id": 38,
                    "name": "Trade bulk bags",
                    "slug": "trade-bulk-bags",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "SW050-T3",
            "slug": "marshmallow-twists-3kg-trade-bag",
            "short_description": "A 3 kg bulk bag of Marshmallow Twists for shops and events. Same recipe, ingredients and allergens as our pick and mix.",
            "canonical_product_url": "https://sweeties.net/product/marshmallow-twists-3kg-trade-bag/",
            "product_json_route": "https://sweeties.net/product/marshmallow-twists-3kg-trade-bag/.json",
            "product_markdown_route": "https://sweeties.net/product/marshmallow-twists-3kg-trade-bag/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070305",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.7506666666666667,
                "weight_g": 3000,
                "comparison_price_gbp": 0.7506666666666667,
                "comparison_unit": "100g",
                "pack_label": "3000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.52
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/marshmallow-twists.webp",
            "image": {
                "role": "primary",
                "alt_text": "Marshmallow Twists. Marshmallow twists, soft ropes of pink and white marshmallow twisted together in a spiral, matt, fluffy and lightly dusted.",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/2026/09/marshmallow-twists.webp",
                "canonical_asset_url": "https://sweeties.net/canonical-asset/2026/09/marshmallow-twists.webp",
                "preferred_ai_image_url": "https://sweeties.net/canonical-asset/2026/09/marshmallow-twists.webp",
                "image_record_url": "https://sweeties.net/canonical-asset/2026/09/marshmallow-twists.webp.json",
                "image_record_id": "wp-attachment-1071362",
                "attachment_id": 1071362,
                "relative_upload_path": "2026/09/marshmallow-twists.webp",
                "filename": "marshmallow-twists.webp",
                "width": 1200,
                "height": 800,
                "mime": "image/webp",
                "format": "webp",
                "file_size_bytes": 56916,
                "citation_eligible": true,
                "attribution_required": true,
                "validation_status": "verified_present_non_upscaled",
                "source_of_truth": "sweeties Image Estate Authority",
                "responsive_summary": {
                    "webp": {
                        "candidate_count": 14,
                        "max_width": 1200
                    }
                },
                "image_truth": {
                    "authority": {
                        "authority": "sweeties Image Estate Authority",
                        "authority_version": "1.0.2-jsonld-route-fixed",
                        "schema_version": "sweeties-image-truth-v1",
                        "mode": "read_only_shadow",
                        "registry_release": null,
                        "freshness": "live_attachment_fallback"
                    },
                    "visual_family_id": "wp-attachment-1071362",
                    "attachment_id": 1071362,
                    "source": {
                        "relative_upload_path": "2026/09/marshmallow-twists.webp",
                        "width": 1200,
                        "height": 800,
                        "mime": "image/webp",
                        "classification": "current_verified_source",
                        "larger_original_verified": false
                    },
                    "preferred": {
                        "relative_upload_path": "2026/09/marshmallow-twists.webp",
                        "width": 1200,
                        "height": 800,
                        "format": "webp",
                        "upscaled": false
                    },
                    "no_upscale_rule": {
                        "status": "enforced",
                        "rule": "candidate_width <= source_width AND candidate_height <= source_height"
                    },
                    "metadata_profile": {
                        "status": "unknown_not_verified",
                        "version": null
                    },
                    "sidecars": {
                        "release": "",
                        "physical_complete": false,
                        "route_complete": false,
                        "integrity_status": "not_verified_for_request",
                        "companion_available": {
                            "json": false,
                            "jsonld": false,
                            "markdown": false,
                            "text": false,
                            "caption": false,
                            "integrity": false,
                            "patchmap": false,
                            "visible_text": false,
                            "visual_digest": false,
                            "embedding_manifest": false,
                            "provenance": false,
                            "c2pa_readiness": false
                        },
                        "companion_warnings": {
                            "json": "missing",
                            "jsonld": "missing",
                            "markdown": "missing",
                            "text": "missing",
                            "caption": "missing",
                            "integrity": "missing",
                            "patchmap": "missing",
                            "visible_text": "missing",
                            "visual_digest": "missing"
                        }
                    },
                    "full_image_truth_url": "https://sweeties.net/wp-json/sweeties/v1/image-truth?attachment_id=1071362",
                    "warnings": [
                        "One or more physical Visual Discovery companions are absent.",
                        "One or more companion files is physically present but its public route is not currently usable; inspect per-companion route_status.",
                        "Integrity has not been verified against the current bytes for this response."
                    ]
                },
                "image_index_lookup_status": "sweeties-image-estate-authority-backed; one payload per visual family",
                "image_index_source": "https://sweeties.net/wp-json/sweeties/v1/image-truth",
                "matched_image_index_rows": 1
            },
            "citation_anchor": "https://sweeties.net/product/marshmallow-twists-3kg-trade-bag/",
            "attributes": {
                "origin": "Spain",
                "format": "3 kg bulk bag of loose sweets for shops",
                "flavour_notes": "default",
                "product_kind": "trade_bulk_bag"
            },
            "origin": "Spain",
            "format": "3 kg bulk bag of loose sweets for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "Sample specification: not final allergen information. Each sweet shows its supplier specification before it can be sold."
                },
                "diet": {
                    "suitable_for": {
                        "vegetarians": false,
                        "vegans": false,
                        "halal": false,
                        "gluten_free_diets": true
                    },
                    "gelatine": "pork",
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    },
                    {
                        "term_id": 38,
                        "name": "Trade bulk bags",
                        "slug": "trade-bulk-bags",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/trade-bulk-bags/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070305",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/marshmallow-twists-3kg-trade-bag/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070305",
                "product_json_route": "https://sweeties.net/product/marshmallow-twists-3kg-trade-bag/.json",
                "product_markdown_route": "https://sweeties.net/product/marshmallow-twists-3kg-trade-bag/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/marshmallow-twists-3kg-trade-bag/",
                "citation_anchor": "https://sweeties.net/product/marshmallow-twists-3kg-trade-bag/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070305",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/canonical-asset/2026/09/marshmallow-twists.webp",
                "image_record_id": "wp-attachment-1071362",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070305&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070305",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "trade_bulk_bag",
                "sweet_type": "Marshmallows",
                "format": "3 kg bulk bag of loose sweets for shops",
                "unit": "3 kg bag",
                "price_gbp": null,
                "price_per_100g_gbp": null,
                "allergens_contains": [],
                "allergens_may_contain": [],
                "suitable_for": {
                    "vegetarians": false,
                    "vegans": false,
                    "halal": false,
                    "gluten_free_diets": true
                },
                "gelatine": "pork",
                "warnings": [],
                "made_in": "Spain",
                "pieces_per_100g": 16,
                "specification_status": "sample",
                "specification_note": "Sample specification on the offline build. The supplier sheet replaces it before this sweet can go on sale, so do not quote these allergens or ingredients as final.",
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " marshmallow twists 3 kg trade bag not present in source sw050 t3 spain 3 kg bulk bag of loose sweets for shops default trade trade bulk bags ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "5230b78f1d2cf8d50fc498117858677abfb346ccb4db7154b52454114553a43d"
            }
        },
        {
            "product_id": "1070306",
            "name": "Pick and Mix Tray Selector, 12 tubs",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix equipment",
                "Trade"
            ],
            "category_entities": [
                {
                    "term_id": 39,
                    "name": "Pick and mix equipment",
                    "slug": "pick-and-mix-equipment",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                },
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "EQ001",
            "slug": "pick-and-mix-tray-selector-12-tubs",
            "short_description": "A countertop tray selector with twelve clear lidded tubs, a scoop holder and label slots. The quick way to start pick and mix in a shop.",
            "canonical_product_url": "https://sweeties.net/product/pick-and-mix-tray-selector-12-tubs/",
            "product_json_route": "https://sweeties.net/product/pick-and-mix-tray-selector-12-tubs/.json",
            "product_markdown_route": "https://sweeties.net/product/pick-and-mix-tray-selector-12-tubs/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070306",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 226.8
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
            "image": {
                "role": "primary_placeholder",
                "alt_text": "Pick and Mix Tray Selector, 12 tubs placeholder image",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "canonical_asset_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070306",
                "image_index_lookup_status": "missing_product_image",
                "image_index_source": "woocommerce_placeholder_or_site_logo",
                "matched_image_index_rows": 0,
                "citation_eligible": false,
                "citation_boundary": "Placeholder image supplied only to keep the machine payload complete; do not cite it as product packaging evidence."
            },
            "citation_anchor": "https://sweeties.net/product/pick-and-mix-tray-selector-12-tubs/",
            "attributes": {
                "origin": null,
                "format": "Pick and mix equipment for shops",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_equipment"
            },
            "origin": null,
            "format": "Pick and mix equipment for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "From the supplier specification of this sweet. Always check the label that comes with the parcel."
                },
                "diet": {
                    "suitable_for": [],
                    "gelatine": null,
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 39,
                        "name": "Pick and mix equipment",
                        "slug": "pick-and-mix-equipment",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                    },
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070306",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/pick-and-mix-tray-selector-12-tubs/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070306",
                "product_json_route": "https://sweeties.net/product/pick-and-mix-tray-selector-12-tubs/.json",
                "product_markdown_route": "https://sweeties.net/product/pick-and-mix-tray-selector-12-tubs/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/pick-and-mix-tray-selector-12-tubs/",
                "citation_anchor": "https://sweeties.net/product/pick-and-mix-tray-selector-12-tubs/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070306",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070306",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070306&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070306",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_equipment",
                "format": "Pick and mix equipment for shops",
                "unit": "item",
                "price_gbp": null,
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " pick and mix tray selector 12 tubs sweeties net not present in source eq001 pick and mix equipment for shops default pick and mix equipment trade ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "d2acb70c4a53ff50f4187394d7f6b7e0a30f159608d700c1e2e7c61cfbb57e69"
            }
        },
        {
            "product_id": "1070307",
            "name": "Pick and Mix Tray Selector, 24 tubs",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix equipment",
                "Trade"
            ],
            "category_entities": [
                {
                    "term_id": 39,
                    "name": "Pick and mix equipment",
                    "slug": "pick-and-mix-equipment",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                },
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "EQ002",
            "slug": "pick-and-mix-tray-selector-24-tubs",
            "short_description": "Twenty four clear lidded tubs on a two tier selector, with scoop holders and label slots.",
            "canonical_product_url": "https://sweeties.net/product/pick-and-mix-tray-selector-24-tubs/",
            "product_json_route": "https://sweeties.net/product/pick-and-mix-tray-selector-24-tubs/.json",
            "product_markdown_route": "https://sweeties.net/product/pick-and-mix-tray-selector-24-tubs/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070307",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 394.8
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
            "image": {
                "role": "primary_placeholder",
                "alt_text": "Pick and Mix Tray Selector, 24 tubs placeholder image",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "canonical_asset_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070307",
                "image_index_lookup_status": "missing_product_image",
                "image_index_source": "woocommerce_placeholder_or_site_logo",
                "matched_image_index_rows": 0,
                "citation_eligible": false,
                "citation_boundary": "Placeholder image supplied only to keep the machine payload complete; do not cite it as product packaging evidence."
            },
            "citation_anchor": "https://sweeties.net/product/pick-and-mix-tray-selector-24-tubs/",
            "attributes": {
                "origin": null,
                "format": "Pick and mix equipment for shops",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_equipment"
            },
            "origin": null,
            "format": "Pick and mix equipment for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "From the supplier specification of this sweet. Always check the label that comes with the parcel."
                },
                "diet": {
                    "suitable_for": [],
                    "gelatine": null,
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 39,
                        "name": "Pick and mix equipment",
                        "slug": "pick-and-mix-equipment",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                    },
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070307",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/pick-and-mix-tray-selector-24-tubs/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070307",
                "product_json_route": "https://sweeties.net/product/pick-and-mix-tray-selector-24-tubs/.json",
                "product_markdown_route": "https://sweeties.net/product/pick-and-mix-tray-selector-24-tubs/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/pick-and-mix-tray-selector-24-tubs/",
                "citation_anchor": "https://sweeties.net/product/pick-and-mix-tray-selector-24-tubs/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070307",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070307",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070307&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070307",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_equipment",
                "format": "Pick and mix equipment for shops",
                "unit": "item",
                "price_gbp": null,
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " pick and mix tray selector 24 tubs sweeties net not present in source eq002 pick and mix equipment for shops default pick and mix equipment trade ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "c9f33f21dab0d4ae2381733d59c909ed3422ab7b0435e2b3949f61d407d0ac3a"
            }
        },
        {
            "product_id": "1070308",
            "name": "Freestanding Pick and Mix Stand, 36 tubs",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix equipment",
                "Trade"
            ],
            "category_entities": [
                {
                    "term_id": 39,
                    "name": "Pick and mix equipment",
                    "slug": "pick-and-mix-equipment",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                },
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "EQ003",
            "slug": "freestanding-pick-and-mix-stand-36-tubs",
            "short_description": "A freestanding three tier stand holding thirty six lidded tubs, for a proper pick and mix wall.",
            "canonical_product_url": "https://sweeties.net/product/freestanding-pick-and-mix-stand-36-tubs/",
            "product_json_route": "https://sweeties.net/product/freestanding-pick-and-mix-stand-36-tubs/.json",
            "product_markdown_route": "https://sweeties.net/product/freestanding-pick-and-mix-stand-36-tubs/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070308",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 778.8
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
            "image": {
                "role": "primary_placeholder",
                "alt_text": "Freestanding Pick and Mix Stand, 36 tubs placeholder image",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "canonical_asset_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070308",
                "image_index_lookup_status": "missing_product_image",
                "image_index_source": "woocommerce_placeholder_or_site_logo",
                "matched_image_index_rows": 0,
                "citation_eligible": false,
                "citation_boundary": "Placeholder image supplied only to keep the machine payload complete; do not cite it as product packaging evidence."
            },
            "citation_anchor": "https://sweeties.net/product/freestanding-pick-and-mix-stand-36-tubs/",
            "attributes": {
                "origin": null,
                "format": "Pick and mix equipment for shops",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_equipment"
            },
            "origin": null,
            "format": "Pick and mix equipment for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "From the supplier specification of this sweet. Always check the label that comes with the parcel."
                },
                "diet": {
                    "suitable_for": [],
                    "gelatine": null,
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 39,
                        "name": "Pick and mix equipment",
                        "slug": "pick-and-mix-equipment",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                    },
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070308",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/freestanding-pick-and-mix-stand-36-tubs/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070308",
                "product_json_route": "https://sweeties.net/product/freestanding-pick-and-mix-stand-36-tubs/.json",
                "product_markdown_route": "https://sweeties.net/product/freestanding-pick-and-mix-stand-36-tubs/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/freestanding-pick-and-mix-stand-36-tubs/",
                "citation_anchor": "https://sweeties.net/product/freestanding-pick-and-mix-stand-36-tubs/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070308",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070308",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070308&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070308",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_equipment",
                "format": "Pick and mix equipment for shops",
                "unit": "item",
                "price_gbp": null,
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " freestanding pick and mix stand 36 tubs sweeties net not present in source eq003 pick and mix equipment for shops default pick and mix equipment trade ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "395478e2f19e69f882d26f948032b66ac756f67c51bf833cec440b74455b253c"
            }
        },
        {
            "product_id": "1070309",
            "name": "Clear Lidded Tubs, pack of 6",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix equipment",
                "Trade"
            ],
            "category_entities": [
                {
                    "term_id": 39,
                    "name": "Pick and mix equipment",
                    "slug": "pick-and-mix-equipment",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                },
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "EQ004",
            "slug": "clear-lidded-tubs-pack-of-6",
            "short_description": "Replacement clear tubs with hinged lids that fit our tray selectors.",
            "canonical_product_url": "https://sweeties.net/product/clear-lidded-tubs-pack-of-6/",
            "product_json_route": "https://sweeties.net/product/clear-lidded-tubs-pack-of-6/.json",
            "product_markdown_route": "https://sweeties.net/product/clear-lidded-tubs-pack-of-6/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070309",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 50.4
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
            "image": {
                "role": "primary_placeholder",
                "alt_text": "Clear Lidded Tubs, pack of 6 placeholder image",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "canonical_asset_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070309",
                "image_index_lookup_status": "missing_product_image",
                "image_index_source": "woocommerce_placeholder_or_site_logo",
                "matched_image_index_rows": 0,
                "citation_eligible": false,
                "citation_boundary": "Placeholder image supplied only to keep the machine payload complete; do not cite it as product packaging evidence."
            },
            "citation_anchor": "https://sweeties.net/product/clear-lidded-tubs-pack-of-6/",
            "attributes": {
                "origin": null,
                "format": "Pick and mix equipment for shops",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_equipment"
            },
            "origin": null,
            "format": "Pick and mix equipment for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "From the supplier specification of this sweet. Always check the label that comes with the parcel."
                },
                "diet": {
                    "suitable_for": [],
                    "gelatine": null,
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 39,
                        "name": "Pick and mix equipment",
                        "slug": "pick-and-mix-equipment",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                    },
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070309",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/clear-lidded-tubs-pack-of-6/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070309",
                "product_json_route": "https://sweeties.net/product/clear-lidded-tubs-pack-of-6/.json",
                "product_markdown_route": "https://sweeties.net/product/clear-lidded-tubs-pack-of-6/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/clear-lidded-tubs-pack-of-6/",
                "citation_anchor": "https://sweeties.net/product/clear-lidded-tubs-pack-of-6/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070309",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070309",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070309&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070309",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_equipment",
                "format": "Pick and mix equipment for shops",
                "unit": "item",
                "price_gbp": null,
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " clear lidded tubs pack of 6 sweeties net not present in source eq004 pick and mix equipment for shops default pick and mix equipment trade ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "e3a93f8a17385ee34c6b8964152d49041f2947dcd485011b65e1f87835b48db5"
            }
        },
        {
            "product_id": "1070310",
            "name": "Sweet Scoops, pack of 12",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix equipment",
                "Trade"
            ],
            "category_entities": [
                {
                    "term_id": 39,
                    "name": "Pick and mix equipment",
                    "slug": "pick-and-mix-equipment",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                },
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "EQ005",
            "slug": "sweet-scoops-pack-of-12",
            "short_description": "Clear food safe scoops sized for pick and mix tubs.",
            "canonical_product_url": "https://sweeties.net/product/sweet-scoops-pack-of-12/",
            "product_json_route": "https://sweeties.net/product/sweet-scoops-pack-of-12/.json",
            "product_markdown_route": "https://sweeties.net/product/sweet-scoops-pack-of-12/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070310",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 16.8
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
            "image": {
                "role": "primary_placeholder",
                "alt_text": "Sweet Scoops, pack of 12 placeholder image",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "canonical_asset_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070310",
                "image_index_lookup_status": "missing_product_image",
                "image_index_source": "woocommerce_placeholder_or_site_logo",
                "matched_image_index_rows": 0,
                "citation_eligible": false,
                "citation_boundary": "Placeholder image supplied only to keep the machine payload complete; do not cite it as product packaging evidence."
            },
            "citation_anchor": "https://sweeties.net/product/sweet-scoops-pack-of-12/",
            "attributes": {
                "origin": null,
                "format": "Pick and mix equipment for shops",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_equipment"
            },
            "origin": null,
            "format": "Pick and mix equipment for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "From the supplier specification of this sweet. Always check the label that comes with the parcel."
                },
                "diet": {
                    "suitable_for": [],
                    "gelatine": null,
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 39,
                        "name": "Pick and mix equipment",
                        "slug": "pick-and-mix-equipment",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                    },
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070310",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sweet-scoops-pack-of-12/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070310",
                "product_json_route": "https://sweeties.net/product/sweet-scoops-pack-of-12/.json",
                "product_markdown_route": "https://sweeties.net/product/sweet-scoops-pack-of-12/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/sweet-scoops-pack-of-12/",
                "citation_anchor": "https://sweeties.net/product/sweet-scoops-pack-of-12/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070310",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070310",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070310&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070310",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_equipment",
                "format": "Pick and mix equipment for shops",
                "unit": "item",
                "price_gbp": null,
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " sweet scoops pack of 12 sweeties net not present in source eq005 pick and mix equipment for shops default pick and mix equipment trade ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "644744f5318169634279080cb58ee58f8ad6291e6785db602d20f10dcd8d4d54"
            }
        },
        {
            "product_id": "1070311",
            "name": "Sweet Tongs, pack of 12",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix equipment",
                "Trade"
            ],
            "category_entities": [
                {
                    "term_id": 39,
                    "name": "Pick and mix equipment",
                    "slug": "pick-and-mix-equipment",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                },
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "EQ006",
            "slug": "sweet-tongs-pack-of-12",
            "short_description": "Food safe tongs for customers who prefer to pick one at a time.",
            "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
            "product_json_route": "https://sweeties.net/product/sweet-tongs-pack-of-12/.json",
            "product_markdown_route": "https://sweeties.net/product/sweet-tongs-pack-of-12/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070311",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 14.4
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
            "image": {
                "role": "primary_placeholder",
                "alt_text": "Sweet Tongs, pack of 12 placeholder image",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "canonical_asset_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070311",
                "image_index_lookup_status": "missing_product_image",
                "image_index_source": "woocommerce_placeholder_or_site_logo",
                "matched_image_index_rows": 0,
                "citation_eligible": false,
                "citation_boundary": "Placeholder image supplied only to keep the machine payload complete; do not cite it as product packaging evidence."
            },
            "citation_anchor": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
            "attributes": {
                "origin": null,
                "format": "Pick and mix equipment for shops",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_equipment"
            },
            "origin": null,
            "format": "Pick and mix equipment for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "From the supplier specification of this sweet. Always check the label that comes with the parcel."
                },
                "diet": {
                    "suitable_for": [],
                    "gelatine": null,
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 39,
                        "name": "Pick and mix equipment",
                        "slug": "pick-and-mix-equipment",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                    },
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070311",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070310",
                        "name": "Sweet Scoops, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ005",
                        "canonical_product_url": "https://sweeties.net/product/sweet-scoops-pack-of-12/",
                        "checkout_url": null,
                        "price": "16.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070311",
                "product_json_route": "https://sweeties.net/product/sweet-tongs-pack-of-12/.json",
                "product_markdown_route": "https://sweeties.net/product/sweet-tongs-pack-of-12/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/sweet-tongs-pack-of-12/",
                "citation_anchor": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070311",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070311",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070311&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070311",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_equipment",
                "format": "Pick and mix equipment for shops",
                "unit": "item",
                "price_gbp": null,
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " sweet tongs pack of 12 sweeties net not present in source eq006 pick and mix equipment for shops default pick and mix equipment trade ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "d00e4448882a2b432016b8c6f43bf7f95ccb5605ca5940fbaa67253a505e43aa"
            }
        },
        {
            "product_id": "1070312",
            "name": "Striped Paper Sweet Bags, pack of 500",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Pick and mix equipment",
                "Trade"
            ],
            "category_entities": [
                {
                    "term_id": 39,
                    "name": "Pick and mix equipment",
                    "slug": "pick-and-mix-equipment",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                },
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "EQ007",
            "slug": "striped-paper-sweet-bags-pack-of-500",
            "short_description": "Classic candy striped paper bags, grease resistant, a medium pick and mix size.",
            "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
            "product_json_route": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/.json",
            "product_markdown_route": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070312",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 34.8
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
            "image": {
                "role": "primary_placeholder",
                "alt_text": "Striped Paper Sweet Bags, pack of 500 placeholder image",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "canonical_asset_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070312",
                "image_index_lookup_status": "missing_product_image",
                "image_index_source": "woocommerce_placeholder_or_site_logo",
                "matched_image_index_rows": 0,
                "citation_eligible": false,
                "citation_boundary": "Placeholder image supplied only to keep the machine payload complete; do not cite it as product packaging evidence."
            },
            "citation_anchor": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
            "attributes": {
                "origin": null,
                "format": "Pick and mix equipment for shops",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_equipment"
            },
            "origin": null,
            "format": "Pick and mix equipment for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "From the supplier specification of this sweet. Always check the label that comes with the parcel."
                },
                "diet": {
                    "suitable_for": [],
                    "gelatine": null,
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 39,
                        "name": "Pick and mix equipment",
                        "slug": "pick-and-mix-equipment",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                    },
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070312",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070310",
                        "name": "Sweet Scoops, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ005",
                        "canonical_product_url": "https://sweeties.net/product/sweet-scoops-pack-of-12/",
                        "checkout_url": null,
                        "price": "16.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070312",
                "product_json_route": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/.json",
                "product_markdown_route": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/striped-paper-sweet-bags-pack-of-500/",
                "citation_anchor": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070312",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070312",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070312&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070312",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_equipment",
                "format": "Pick and mix equipment for shops",
                "unit": "item",
                "price_gbp": null,
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " striped paper sweet bags pack of 500 not present in source eq007 pick and mix equipment for shops default pick and mix equipment trade ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "9fec8b2b123e370ddbfe9efa8da93cfe5f62383adda5244cc85a1c261ddf9b8d"
            }
        },
        {
            "product_id": "1070313",
            "name": "Clear Pick and Mix Bags, pack of 1,000",
            "brand": "",
            "brand_entities": [],
            "categories": [
                "Pick and mix equipment",
                "Trade"
            ],
            "category_entities": [
                {
                    "term_id": 39,
                    "name": "Pick and mix equipment",
                    "slug": "pick-and-mix-equipment",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                },
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "EQ008",
            "slug": "clear-pick-and-mix-bags-pack-of-1000",
            "short_description": "Clear food grade bags for pick and mix, with a wide opening.",
            "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
            "product_json_route": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/.json",
            "product_markdown_route": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070313",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 28.8
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
            "image": {
                "role": "primary_placeholder",
                "alt_text": "Clear Pick and Mix Bags, pack of 1,000 placeholder image",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "canonical_asset_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070313",
                "image_index_lookup_status": "missing_product_image",
                "image_index_source": "woocommerce_placeholder_or_site_logo",
                "matched_image_index_rows": 0,
                "citation_eligible": false,
                "citation_boundary": "Placeholder image supplied only to keep the machine payload complete; do not cite it as product packaging evidence."
            },
            "citation_anchor": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
            "attributes": {
                "origin": null,
                "format": "Pick and mix equipment for shops",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_equipment"
            },
            "origin": null,
            "format": "Pick and mix equipment for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "From the supplier specification of this sweet. Always check the label that comes with the parcel."
                },
                "diet": {
                    "suitable_for": [],
                    "gelatine": null,
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 39,
                        "name": "Pick and mix equipment",
                        "slug": "pick-and-mix-equipment",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                    },
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070313",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070310",
                        "name": "Sweet Scoops, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ005",
                        "canonical_product_url": "https://sweeties.net/product/sweet-scoops-pack-of-12/",
                        "checkout_url": null,
                        "price": "16.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070313",
                "product_json_route": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/.json",
                "product_markdown_route": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/clear-pick-and-mix-bags-pack-of-1000/",
                "citation_anchor": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070313",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070313",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070313&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070313",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_equipment",
                "format": "Pick and mix equipment for shops",
                "unit": "item",
                "price_gbp": null,
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " clear pick and mix bags pack of 1 000 not present in source eq008 pick and mix equipment for shops default pick and mix equipment trade ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "a603610c29bcad86d99ee189f76cae3c88fa953a125a6f5031bc486a202ef9b0"
            }
        },
        {
            "product_id": "1070314",
            "name": "Tub Labels with Allergen Panel, pack of 100",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix equipment",
                "Trade"
            ],
            "category_entities": [
                {
                    "term_id": 39,
                    "name": "Pick and mix equipment",
                    "slug": "pick-and-mix-equipment",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                },
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "EQ009",
            "slug": "tub-labels-with-allergen-panel-pack-of-100",
            "short_description": "Printable tub labels with space for the sweet name, price per 100 g and the allergen panel.",
            "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
            "product_json_route": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/.json",
            "product_markdown_route": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070314",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 22.8
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
            "image": {
                "role": "primary_placeholder",
                "alt_text": "Tub Labels with Allergen Panel, pack of 100 placeholder image",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "canonical_asset_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070314",
                "image_index_lookup_status": "missing_product_image",
                "image_index_source": "woocommerce_placeholder_or_site_logo",
                "matched_image_index_rows": 0,
                "citation_eligible": false,
                "citation_boundary": "Placeholder image supplied only to keep the machine payload complete; do not cite it as product packaging evidence."
            },
            "citation_anchor": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
            "attributes": {
                "origin": null,
                "format": "Pick and mix equipment for shops",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_equipment"
            },
            "origin": null,
            "format": "Pick and mix equipment for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "From the supplier specification of this sweet. Always check the label that comes with the parcel."
                },
                "diet": {
                    "suitable_for": [],
                    "gelatine": null,
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 39,
                        "name": "Pick and mix equipment",
                        "slug": "pick-and-mix-equipment",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                    },
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070314",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070310",
                        "name": "Sweet Scoops, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ005",
                        "canonical_product_url": "https://sweeties.net/product/sweet-scoops-pack-of-12/",
                        "checkout_url": null,
                        "price": "16.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070314",
                "product_json_route": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/.json",
                "product_markdown_route": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/tub-labels-with-allergen-panel-pack-of-100/",
                "citation_anchor": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070314",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070314",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070314&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070314",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_equipment",
                "format": "Pick and mix equipment for shops",
                "unit": "item",
                "price_gbp": null,
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " tub labels with allergen panel pack of 100 sweeties net not present in source eq009 pick and mix equipment for shops default pick and mix equipment trade ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "64746dc982c3b2d8e6a15a65e32552ea1f387eb9ea6789cd52f7faaeedb269d3"
            }
        },
        {
            "product_id": "1070315",
            "name": "Digital Counter Scale, 10 kg",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix equipment",
                "Trade"
            ],
            "category_entities": [
                {
                    "term_id": 39,
                    "name": "Pick and mix equipment",
                    "slug": "pick-and-mix-equipment",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                },
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "EQ010",
            "slug": "digital-counter-scale-10-kg",
            "short_description": "A counter scale for weighing pick and mix by the 100 g. Check legal for trade approval before use in a shop.",
            "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
            "product_json_route": "https://sweeties.net/product/digital-counter-scale-10-kg/.json",
            "product_markdown_route": "https://sweeties.net/product/digital-counter-scale-10-kg/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070315",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "weight_known_dose_unspecified",
                "price_per_100g_gbp": 0.948,
                "weight_g": 10000,
                "comparison_price_gbp": 0.948,
                "comparison_unit": "100g",
                "pack_label": "10000g pack; servings depend on the amount used",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 94.8
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
            "image": {
                "role": "primary_placeholder",
                "alt_text": "Digital Counter Scale, 10 kg placeholder image",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "canonical_asset_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070315",
                "image_index_lookup_status": "missing_product_image",
                "image_index_source": "woocommerce_placeholder_or_site_logo",
                "matched_image_index_rows": 0,
                "citation_eligible": false,
                "citation_boundary": "Placeholder image supplied only to keep the machine payload complete; do not cite it as product packaging evidence."
            },
            "citation_anchor": "https://sweeties.net/product/digital-counter-scale-10-kg/",
            "attributes": {
                "origin": null,
                "format": "Pick and mix equipment for shops",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_equipment"
            },
            "origin": null,
            "format": "Pick and mix equipment for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "From the supplier specification of this sweet. Always check the label that comes with the parcel."
                },
                "diet": {
                    "suitable_for": [],
                    "gelatine": null,
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 39,
                        "name": "Pick and mix equipment",
                        "slug": "pick-and-mix-equipment",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                    },
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070315",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070310",
                        "name": "Sweet Scoops, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ005",
                        "canonical_product_url": "https://sweeties.net/product/sweet-scoops-pack-of-12/",
                        "checkout_url": null,
                        "price": "16.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070315",
                "product_json_route": "https://sweeties.net/product/digital-counter-scale-10-kg/.json",
                "product_markdown_route": "https://sweeties.net/product/digital-counter-scale-10-kg/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/digital-counter-scale-10-kg/",
                "citation_anchor": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070315",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070315",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070315&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070315",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_equipment",
                "format": "Pick and mix equipment for shops",
                "unit": "item",
                "price_gbp": null,
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " digital counter scale 10 kg sweeties net not present in source eq010 pick and mix equipment for shops default pick and mix equipment trade ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "ca2313427d08ece3cf67983b9db46b44c554062b3753b4bcffe1e9b08e4ce8f8"
            }
        },
        {
            "product_id": "1070316",
            "name": "Glass Sweet Jars with Lids, pack of 6",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix equipment",
                "Trade"
            ],
            "category_entities": [
                {
                    "term_id": 39,
                    "name": "Pick and mix equipment",
                    "slug": "pick-and-mix-equipment",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                },
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "EQ011",
            "slug": "glass-sweet-jars-with-lids-pack-of-6",
            "short_description": "Traditional shop style glass jars for display and for gifts.",
            "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
            "product_json_route": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/.json",
            "product_markdown_route": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070316",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 64.8
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
            "image": {
                "role": "primary_placeholder",
                "alt_text": "Glass Sweet Jars with Lids, pack of 6 placeholder image",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "canonical_asset_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070316",
                "image_index_lookup_status": "missing_product_image",
                "image_index_source": "woocommerce_placeholder_or_site_logo",
                "matched_image_index_rows": 0,
                "citation_eligible": false,
                "citation_boundary": "Placeholder image supplied only to keep the machine payload complete; do not cite it as product packaging evidence."
            },
            "citation_anchor": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
            "attributes": {
                "origin": null,
                "format": "Pick and mix equipment for shops",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_equipment"
            },
            "origin": null,
            "format": "Pick and mix equipment for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "From the supplier specification of this sweet. Always check the label that comes with the parcel."
                },
                "diet": {
                    "suitable_for": [],
                    "gelatine": null,
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 39,
                        "name": "Pick and mix equipment",
                        "slug": "pick-and-mix-equipment",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                    },
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070316",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070317",
                        "name": "Scoop Holder and Hygiene Guard",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ012",
                        "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                        "checkout_url": null,
                        "price": "19.20",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070310",
                        "name": "Sweet Scoops, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ005",
                        "canonical_product_url": "https://sweeties.net/product/sweet-scoops-pack-of-12/",
                        "checkout_url": null,
                        "price": "16.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070316",
                "product_json_route": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/.json",
                "product_markdown_route": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/glass-sweet-jars-with-lids-pack-of-6/",
                "citation_anchor": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070316",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070316",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070316&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070316",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_equipment",
                "format": "Pick and mix equipment for shops",
                "unit": "item",
                "price_gbp": null,
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " glass sweet jars with lids pack of 6 sweeties net not present in source eq011 pick and mix equipment for shops default pick and mix equipment trade ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "6e84a41a717b1fb318446538c28ad338bb97df0b03e8b09c63be482933514d71"
            }
        },
        {
            "product_id": "1070317",
            "name": "Scoop Holder and Hygiene Guard",
            "brand": "sweeties.net",
            "brand_entities": [],
            "categories": [
                "Pick and mix equipment",
                "Trade"
            ],
            "category_entities": [
                {
                    "term_id": 39,
                    "name": "Pick and mix equipment",
                    "slug": "pick-and-mix-equipment",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                },
                {
                    "term_id": 37,
                    "name": "Trade",
                    "slug": "trade",
                    "taxonomy": "product_cat",
                    "canonical_url": "https://sweeties.net/product-category/trade/"
                }
            ],
            "gtin": "not_present_in_source",
            "sku": "EQ012",
            "slug": "scoop-holder-and-hygiene-guard",
            "short_description": "A clip on scoop holder with a guard to keep scoops off the sweets.",
            "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
            "product_json_route": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/.json",
            "product_markdown_route": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/.md",
            "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070317",
            "price": null,
            "price_gbp": null,
            "regular_price_gbp": null,
            "currency": "GBP",
            "unit_pricing": {
                "version": 1,
                "serving_basis": "not_applicable",
                "price_per_100g_gbp": null,
                "weight_g": null,
                "comparison_price_gbp": null,
                "comparison_unit": null,
                "pack_label": "See the product pack",
                "price_source": "woocommerce_current_price",
                "yield_source": null,
                "price_gbp": 19.2
            },
            "price_per_100g_gbp": null,
            "stock_status": "instock",
            "availability": "coming_soon",
            "stock": {
                "status": "instock",
                "is_in_stock": true,
                "schema_availability": "https://schema.org/InStock",
                "boundary": "Runtime WooCommerce stock is unavailable; no checkout route is exposed."
            },
            "checkout_url": null,
            "buy_url": null,
            "human_purchase_url": null,
            "buy_card_route": null,
            "buy_card_url": null,
            "purchase_intent_note": "Coming soon: not on sale yet.",
            "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
            "image": {
                "role": "primary_placeholder",
                "alt_text": "Scoop Holder and Hygiene Guard placeholder image",
                "storefront_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "canonical_asset_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070317",
                "image_index_lookup_status": "missing_product_image",
                "image_index_source": "woocommerce_placeholder_or_site_logo",
                "matched_image_index_rows": 0,
                "citation_eligible": false,
                "citation_boundary": "Placeholder image supplied only to keep the machine payload complete; do not cite it as product packaging evidence."
            },
            "citation_anchor": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
            "attributes": {
                "origin": null,
                "format": "Pick and mix equipment for shops",
                "flavour_notes": "default",
                "product_kind": "pick_and_mix_equipment"
            },
            "origin": null,
            "format": "Pick and mix equipment for shops",
            "flavour_notes": "default",
            "manufacturer_safety_warning": null,
            "suitability_boundaries": {
                "allergens": {
                    "contains": [],
                    "may_contain": [],
                    "boundary": "From the supplier specification of this sweet. Always check the label that comes with the parcel."
                },
                "diet": {
                    "suitable_for": [],
                    "gelatine": null,
                    "boundary": "Diet suitability is stated only where the specification says so. Do not infer a halal or vegan certificate that is not named."
                },
                "children": "Hard, round and very chewy sweets are not suitable for children under 3. Supervise young children eating sweets.",
                "medical": "Sweets are an occasional treat. Do not infer any health or medical use; people managing diabetes or another condition should follow their clinician.",
                "stock": "Stock status is runtime catalogue truth; check the shop or checkout before purchase.",
                "purchase_action": "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
            },
            "claim_boundary": {
                "policy_source": "https://sweeties.net/claim-policy.json",
                "review_status": "policy_bound_runtime_payload",
                "applies": {
                    "claim.allergens": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Allergens and ingredients come from the specification of each sweet. A sample specification is marked as a sample and the sweet cannot be sold until the supplier sheet replaces it."
                        ],
                        "disallowed_wording": [
                            "allergen free",
                            "safe for all allergies",
                            "nut free factory"
                        ],
                        "maps_live_strings": [
                            "Contains",
                            "May contain",
                            "None of the 14 allergens"
                        ],
                        "governance_note": "Allergen statements must match the specification of that sweet; sample data must never be presented as final.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.allergens",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.diet": {
                        "claim_type": "dietary",
                        "risk_level": "medium",
                        "evidence_strength": "supplier_specification",
                        "allowed_wording": [
                            "Suitable for vegetarians, vegans, halal or gluten free diets only where the specification of that sweet says so; the gelatine source is stated."
                        ],
                        "disallowed_wording": [
                            "halal certified",
                            "vegan certified",
                            "suitable for everyone"
                        ],
                        "maps_live_strings": [
                            "Vegan",
                            "Vegetarian",
                            "Halal",
                            "Gluten free",
                            "Gelatine from pork",
                            "Gelatine from beef"
                        ],
                        "governance_note": "Do not infer a certificate that is not named; diet words follow the specification.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "allergens",
                            "wiki",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.diet",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.price.per_100g": {
                        "claim_type": "price",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Pick and mix is priced per 100 g; delivery is priced by the weight of the whole order and shown before checkout."
                        ],
                        "disallowed_wording": [
                            "guaranteed cheapest",
                            "always cheapest",
                            "free delivery"
                        ],
                        "maps_live_strings": [
                            "per 100 g",
                            "best value",
                            "cheapest"
                        ],
                        "governance_note": "Value and ranking claims need a current, named comparison.",
                        "allowed_surfaces": [
                            "product",
                            "shop",
                            "products-json",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.price.per_100g",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.stock.availability": {
                        "claim_type": "stock",
                        "risk_level": "medium",
                        "evidence_strength": "woocommerce_runtime",
                        "allowed_wording": [
                            "Check the shop or checkout for current stock before purchase."
                        ],
                        "disallowed_wording": [
                            "always in stock",
                            "guaranteed available"
                        ],
                        "maps_live_strings": [
                            "in stock",
                            "out of stock"
                        ],
                        "governance_note": "Stock is runtime truth.",
                        "allowed_surfaces": [
                            "product",
                            "buy-card",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.stock.availability",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.agent.action": {
                        "claim_type": "safety",
                        "risk_level": "restricted",
                        "evidence_strength": "canonical_verified",
                        "allowed_wording": [
                            "Agents may read and recommend. Adding to the bag or checking out needs explicit human action."
                        ],
                        "disallowed_wording": [
                            "agent can checkout",
                            "autonomous purchase",
                            "agent can add to basket"
                        ],
                        "maps_live_strings": [
                            "Add 100 g",
                            "Checkout"
                        ],
                        "governance_note": "Purchase actions stay with the human.",
                        "allowed_surfaces": [
                            "ai",
                            "agent-policy"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.agent.action",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    },
                    "claim.delivery.scope": {
                        "claim_type": "delivery",
                        "risk_level": "medium",
                        "evidence_strength": "catalogue_verified",
                        "allowed_wording": [
                            "UK delivery only, by Royal Mail Tracked 48, priced by the weight of the order."
                        ],
                        "disallowed_wording": [
                            "worldwide delivery",
                            "free delivery",
                            "next day delivery"
                        ],
                        "maps_live_strings": [
                            "Royal Mail 48",
                            "delivery"
                        ],
                        "governance_note": "Delivery wording must match the delivery bands shown at checkout.",
                        "allowed_surfaces": [
                            "product",
                            "delivery",
                            "ai"
                        ],
                        "review_status": "approved",
                        "provenance_required": true,
                        "reviewed_at": "2026-09-26",
                        "policy_id": "claim.delivery.scope",
                        "resolution_status": "loaded_from_claim_policy_contract"
                    }
                },
                "summary": {
                    "allergens": "Allergen and diet statements come from each sweet's specification; sample specifications are marked and cannot be sold.",
                    "stock": "Availability may be shown, but not guaranteed.",
                    "commerce_action": "Adding to the bag and checkout need explicit human action.",
                    "superlatives": "Best, cheapest or most popular claims need a named source and date."
                },
                "restricted_inferences": [
                    "health or medical benefit",
                    "allergen safety beyond the stated specification",
                    "guaranteed stock or final checkout price",
                    "autonomous agent purchase or add to bag"
                ]
            },
            "related_entities": {
                "brand": null,
                "categories": [
                    {
                        "term_id": 39,
                        "name": "Pick and mix equipment",
                        "slug": "pick-and-mix-equipment",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/pick-and-mix-equipment/"
                    },
                    {
                        "term_id": 37,
                        "name": "Trade",
                        "slug": "trade",
                        "taxonomy": "product_cat",
                        "canonical_url": "https://sweeties.net/product-category/trade/"
                    }
                ],
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070317",
                "same_brand_products": [],
                "same_category_products": [
                    {
                        "product_id": "1070312",
                        "name": "Striped Paper Sweet Bags, pack of 500",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ007",
                        "canonical_product_url": "https://sweeties.net/product/striped-paper-sweet-bags-pack-of-500/",
                        "checkout_url": null,
                        "price": "34.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070313",
                        "name": "Clear Pick and Mix Bags, pack of 1,000",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "EQ008",
                        "canonical_product_url": "https://sweeties.net/product/clear-pick-and-mix-bags-pack-of-1000/",
                        "checkout_url": null,
                        "price": "28.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070314",
                        "name": "Tub Labels with Allergen Panel, pack of 100",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ009",
                        "canonical_product_url": "https://sweeties.net/product/tub-labels-with-allergen-panel-pack-of-100/",
                        "checkout_url": null,
                        "price": "22.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070315",
                        "name": "Digital Counter Scale, 10 kg",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ010",
                        "canonical_product_url": "https://sweeties.net/product/digital-counter-scale-10-kg/",
                        "checkout_url": null,
                        "price": "94.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070316",
                        "name": "Glass Sweet Jars with Lids, pack of 6",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ011",
                        "canonical_product_url": "https://sweeties.net/product/glass-sweet-jars-with-lids-pack-of-6/",
                        "checkout_url": null,
                        "price": "64.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070310",
                        "name": "Sweet Scoops, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ005",
                        "canonical_product_url": "https://sweeties.net/product/sweet-scoops-pack-of-12/",
                        "checkout_url": null,
                        "price": "16.80",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070311",
                        "name": "Sweet Tongs, pack of 12",
                        "brand": "sweeties.net",
                        "gtin": "not_present_in_source",
                        "sku": "EQ006",
                        "canonical_product_url": "https://sweeties.net/product/sweet-tongs-pack-of-12/",
                        "checkout_url": null,
                        "price": "14.40",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    },
                    {
                        "product_id": "1070301",
                        "name": "Liquorice Allsorts, 3 kg trade bag",
                        "brand": "",
                        "gtin": "not_present_in_source",
                        "sku": "SW048-T3",
                        "canonical_product_url": "https://sweeties.net/product/liquorice-allsorts-3kg-trade-bag/",
                        "checkout_url": null,
                        "price": "22.52",
                        "currency": "GBP",
                        "stock_status": "instock",
                        "curator_opinion": {
                            "available": false
                        }
                    }
                ],
                "linked_recipes": [],
                "linked_recipe_count": 0,
                "linked_wiki_topics": [],
                "linked_wiki_topic_count": 0,
                "graph_enrichment_status": {
                    "recipes": "linked from published recipe pages using _tr_product_id",
                    "wiki": "linked from published wiki pages using planned-product bridges and exact brand/category/family slug matches",
                    "evidence_quality": "each linked row carries relationship_source"
                }
            },
            "resource_links": {
                "canonical_product_url": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                "product_truth_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070317",
                "product_json_route": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/.json",
                "product_markdown_route": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/.md",
                "checkout_url": null,
                "buy_card_route": "https://sweeties.net/buy-card/scoop-holder-and-hygiene-guard/",
                "citation_anchor": "https://sweeties.net/product/scoop-holder-and-hygiene-guard/",
                "citation_endpoint": "https://sweeties.net/wp-json/sweeties/v1/citation-anchor?entity_type=product&entity_id=1070317",
                "citation_feed": "https://sweeties.net/citation-anchors.jsonl",
                "canonical_image_url": "https://sweeties.net/wp-content/uploads/woocommerce-placeholder.webp",
                "image_record_id": "placeholder-product-1070317",
                "full_visual_discovery_endpoint": "https://sweeties.net/wp-json/sweeties/v1/product-truth?product_id=1070317&image_mode=full_visual_discovery",
                "image_indexes": {
                    "product_image_index": "https://sweeties.net/sweeties-product-image-index.jsonl",
                    "sitewide_image_index": "https://sweeties.net/sweeties-sitewide-image-index.jsonl"
                },
                "knowledge_graph_reference": "https://sweeties.net/sweeties-knowledge-graph.json#product-1070317",
                "claim_policy": "https://sweeties.net/claim-policy.json",
                "llm_feeds": {
                    "products": "https://sweeties.net/products.json",
                    "buy_cards": "https://sweeties.net/buy-cards.jsonl",
                    "recipes": "https://sweeties.net/llm-recipes.jsonl",
                    "wiki": "https://sweeties.net/llm-wiki.jsonl"
                },
                "linked_recipes": [],
                "linked_wiki_topics": []
            },
            "curator_opinion": {
                "available": false
            },
            "source_status": "woocommerce_public_catalog_plus_products_json_truth_spine",
            "identifier_priority_used": "agent_index",
            "governance": {
                "truth_spine_sources": [
                    "woocommerce_public_catalog",
                    "catalogue_audit_product_meta_when_imported",
                    "products.json_generation_functions",
                    "buy-card_route_contract",
                    "claim-policy",
                    "recipe_post_meta",
                    "wiki_planned_product_meta",
                    "citation_anchor_service",
                    "image_binding_service"
                ],
                "public_scope_only": true,
                "checkout_requires_human_action": true,
                "claim_review_required_for_medical_or_superlative_copy": true,
                "rich_payload_mode": "one_call_product_truth_bundle",
                "catalogue_csv_ready": true
            },
            "sweet": {
                "kind": "pick_and_mix_equipment",
                "format": "Pick and mix equipment for shops",
                "unit": "item",
                "price_gbp": null,
                "vat": "Standard rated (20%) in the UK. Prices shown to shoppers include VAT; trade prices on the trade page are shown without VAT.",
                "availability": "coming_soon",
                "note": "Coming soon: the sweeties.net trade range is not on sale yet, so it has no prices and cannot be ordered."
            },
            "agent_search": {
                "search_text": " scoop holder and hygiene guard sweeties net not present in source eq012 pick and mix equipment for shops default pick and mix equipment trade ",
                "answerable_fields": [
                    "name",
                    "brand",
                    "gtin",
                    "sku",
                    "price",
                    "stock_status",
                    "origin",
                    "format",
                    "flavour_notes",
                    "suitability_boundaries",
                    "related_entities",
                    "canonical_image_url",
                    "citation_anchor",
                    "checkout_url"
                ],
                "tokens_sha256": "7052d9636a624be912199df5e73b9b0f1cb74cd0c4d65a67280e72539e59a817"
            }
        }
    ]
}
