{
    "collection_id": 8,
    "revision_id": 12,
    "revision_no": 2,
    "status": "fail",
    "score": 20,
    "summary": {
        "pass": 30,
        "warning": 0,
        "fail": 8
    },
    "checks": [
        {
            "code": "collection_exists",
            "level": "pass",
            "message": "Collection exists",
            "path": "",
            "details": {
                "collection_id": 8
            }
        },
        {
            "code": "collection_has_title",
            "level": "pass",
            "message": "Collection title exists",
            "path": "",
            "details": []
        },
        {
            "code": "master_artwork_path_exists",
            "level": "pass",
            "message": "Master artwork exists",
            "path": "/assets/pod/collections/8/revisions/v2/master/master_artwork.png",
            "details": {
                "public_path": "/assets/pod/collections/8/revisions/v2/master/master_artwork.png",
                "local_path": "/var/www/html/assets/pod/collections/8/revisions/v2/master/master_artwork.png",
                "exists": true,
                "size_bytes": 42395,
                "width": 1400,
                "height": 1400,
                "mime": "image/png"
            }
        },
        {
            "code": "master_print_path_exists",
            "level": "pass",
            "message": "Master print exists",
            "path": "/assets/pod/collections/8/revisions/v2/master/master_print.png",
            "details": {
                "public_path": "/assets/pod/collections/8/revisions/v2/master/master_print.png",
                "local_path": "/var/www/html/assets/pod/collections/8/revisions/v2/master/master_print.png",
                "exists": true,
                "size_bytes": 244774,
                "width": 3000,
                "height": 3000,
                "mime": "image/png"
            }
        },
        {
            "code": "collection_has_items",
            "level": "pass",
            "message": "Collection has items",
            "path": "",
            "details": {
                "item_count": 2
            }
        },
        {
            "code": "item_has_template_id",
            "level": "pass",
            "message": "Item 20 template_id check",
            "path": "",
            "details": {
                "item_id": 20,
                "template_id": 28
            }
        },
        {
            "code": "item_has_apply_mode",
            "level": "pass",
            "message": "Item 20 apply_mode check",
            "path": "",
            "details": {
                "item_id": 20,
                "apply_mode": "tile-cover"
            }
        },
        {
            "code": "item_mockup_exists",
            "level": "pass",
            "message": "Item mockup exists",
            "path": "/assets/pod/collections/8/revisions/v2/mockups/item_20_mockup.png",
            "details": {
                "item_id": 20,
                "public_path": "/assets/pod/collections/8/revisions/v2/mockups/item_20_mockup.png",
                "local_path": "/var/www/html/assets/pod/collections/8/revisions/v2/mockups/item_20_mockup.png",
                "exists": true,
                "size_bytes": 69989,
                "width": 1000,
                "height": 472,
                "mime": "image/png"
            }
        },
        {
            "code": "item_print_exists",
            "level": "pass",
            "message": "Item print exists",
            "path": "/assets/pod/collections/8/revisions/v2/prints/item_20_print.png",
            "details": {
                "item_id": 20,
                "public_path": "/assets/pod/collections/8/revisions/v2/prints/item_20_print.png",
                "local_path": "/var/www/html/assets/pod/collections/8/revisions/v2/prints/item_20_print.png",
                "exists": true,
                "size_bytes": 244774,
                "width": 3000,
                "height": 3000,
                "mime": "image/png"
            }
        },
        {
            "code": "mockup_and_print_are_not_same_role",
            "level": "pass",
            "message": "Mockup and print paths are distinct",
            "path": "",
            "details": {
                "item_id": 20
            }
        },
        {
            "code": "print_file_is_png_or_supported",
            "level": "pass",
            "message": "Print file extension is supported",
            "path": "/assets/pod/collections/8/revisions/v2/prints/item_20_print.png",
            "details": {
                "item_id": 20,
                "mime": "image/png"
            }
        },
        {
            "code": "image_dimensions_readable",
            "level": "pass",
            "message": "Image dimensions readable",
            "path": "/assets/pod/collections/8/revisions/v2/prints/item_20_print.png",
            "details": {
                "item_id": 20,
                "width": 3000,
                "height": 3000
            }
        },
        {
            "code": "image_min_size",
            "level": "pass",
            "message": "Print image size is acceptable",
            "path": "/assets/pod/collections/8/revisions/v2/prints/item_20_print.png",
            "details": {
                "item_id": 20,
                "width": 3000,
                "height": 3000
            }
        },
        {
            "code": "public_url_resolvable",
            "level": "pass",
            "message": "Public path resolves to local file",
            "path": "/assets/pod/collections/8/revisions/v2/prints/item_20_print.png",
            "details": {
                "item_id": 20
            }
        },
        {
            "code": "item_has_template_id",
            "level": "pass",
            "message": "Item 21 template_id check",
            "path": "",
            "details": {
                "item_id": 21,
                "template_id": 27
            }
        },
        {
            "code": "item_has_apply_mode",
            "level": "pass",
            "message": "Item 21 apply_mode check",
            "path": "",
            "details": {
                "item_id": 21,
                "apply_mode": "tile-cover"
            }
        },
        {
            "code": "item_mockup_exists",
            "level": "pass",
            "message": "Item mockup exists",
            "path": "/assets/pod/collections/8/revisions/v2/mockups/item_21_mockup.png",
            "details": {
                "item_id": 21,
                "public_path": "/assets/pod/collections/8/revisions/v2/mockups/item_21_mockup.png",
                "local_path": "/var/www/html/assets/pod/collections/8/revisions/v2/mockups/item_21_mockup.png",
                "exists": true,
                "size_bytes": 82260,
                "width": 371,
                "height": 369,
                "mime": "image/png"
            }
        },
        {
            "code": "item_print_exists",
            "level": "pass",
            "message": "Item print exists",
            "path": "/assets/pod/collections/8/revisions/v2/prints/item_21_print.png",
            "details": {
                "item_id": 21,
                "public_path": "/assets/pod/collections/8/revisions/v2/prints/item_21_print.png",
                "local_path": "/var/www/html/assets/pod/collections/8/revisions/v2/prints/item_21_print.png",
                "exists": true,
                "size_bytes": 244774,
                "width": 3000,
                "height": 3000,
                "mime": "image/png"
            }
        },
        {
            "code": "mockup_and_print_are_not_same_role",
            "level": "pass",
            "message": "Mockup and print paths are distinct",
            "path": "",
            "details": {
                "item_id": 21
            }
        },
        {
            "code": "print_file_is_png_or_supported",
            "level": "pass",
            "message": "Print file extension is supported",
            "path": "/assets/pod/collections/8/revisions/v2/prints/item_21_print.png",
            "details": {
                "item_id": 21,
                "mime": "image/png"
            }
        },
        {
            "code": "image_dimensions_readable",
            "level": "pass",
            "message": "Image dimensions readable",
            "path": "/assets/pod/collections/8/revisions/v2/prints/item_21_print.png",
            "details": {
                "item_id": 21,
                "width": 3000,
                "height": 3000
            }
        },
        {
            "code": "image_min_size",
            "level": "pass",
            "message": "Print image size is acceptable",
            "path": "/assets/pod/collections/8/revisions/v2/prints/item_21_print.png",
            "details": {
                "item_id": 21,
                "width": 3000,
                "height": 3000
            }
        },
        {
            "code": "public_url_resolvable",
            "level": "pass",
            "message": "Public path resolves to local file",
            "path": "/assets/pod/collections/8/revisions/v2/prints/item_21_print.png",
            "details": {
                "item_id": 21
            }
        },
        {
            "code": "collection_items_completed",
            "level": "pass",
            "message": "All collection items completed",
            "path": "",
            "details": []
        },
        {
            "code": "latest_zip_exists",
            "level": "fail",
            "message": "Latest ZIP missing",
            "path": "",
            "details": []
        },
        {
            "code": "zip_size_gt_zero",
            "level": "fail",
            "message": "ZIP size is zero or unavailable",
            "path": "",
            "details": {
                "size_bytes": 0
            }
        },
        {
            "code": "manifest_exists",
            "level": "fail",
            "message": "Export manifest missing",
            "path": "",
            "details": {
                "public_path": "",
                "local_path": "",
                "exists": false,
                "size_bytes": 0,
                "width": null,
                "height": null,
                "mime": ""
            }
        },
        {
            "code": "zip_contains_manifest_json",
            "level": "fail",
            "message": "ZIP missing manifest.json",
            "path": "",
            "details": {
                "entry": "manifest.json"
            }
        },
        {
            "code": "zip_contains_readme",
            "level": "fail",
            "message": "ZIP missing README.txt",
            "path": "",
            "details": {
                "entry": "README.txt"
            }
        },
        {
            "code": "zip_contains_production_spec_html",
            "level": "fail",
            "message": "ZIP missing production_spec.html",
            "path": "",
            "details": {
                "entry": "production_spec.html"
            }
        },
        {
            "code": "zip_contains_production_spec_csv",
            "level": "fail",
            "message": "ZIP missing production_spec.csv",
            "path": "",
            "details": {
                "entry": "production_spec.csv"
            }
        },
        {
            "code": "zip_contains_production_manifest_json",
            "level": "fail",
            "message": "ZIP missing production_manifest.json",
            "path": "",
            "details": {
                "entry": "production_manifest.json"
            }
        },
        {
            "code": "zip_contains_panel_prints_if_multi_panel",
            "level": "pass",
            "message": "No multi-panel item requires panel ZIP entries",
            "path": "",
            "details": []
        },
        {
            "code": "production_spec_html_exists",
            "level": "pass",
            "message": "Production spec HTML exists",
            "path": "/assets/pod/collections/8/revisions/v2/specs/production_spec.html",
            "details": {
                "public_path": "/assets/pod/collections/8/revisions/v2/specs/production_spec.html",
                "local_path": "/var/www/html/assets/pod/collections/8/revisions/v2/specs/production_spec.html",
                "exists": true,
                "size_bytes": 2935,
                "width": null,
                "height": null,
                "mime": "text/html"
            }
        },
        {
            "code": "production_spec_csv_exists",
            "level": "pass",
            "message": "Production spec CSV exists",
            "path": "/assets/pod/collections/8/revisions/v2/specs/production_spec.csv",
            "details": {
                "public_path": "/assets/pod/collections/8/revisions/v2/specs/production_spec.csv",
                "local_path": "/var/www/html/assets/pod/collections/8/revisions/v2/specs/production_spec.csv",
                "exists": true,
                "size_bytes": 1335,
                "width": null,
                "height": null,
                "mime": "text/csv"
            }
        },
        {
            "code": "production_manifest_json_exists",
            "level": "pass",
            "message": "Production manifest JSON exists",
            "path": "/assets/pod/collections/8/revisions/v2/specs/production_manifest.json",
            "details": {
                "public_path": "/assets/pod/collections/8/revisions/v2/specs/production_manifest.json",
                "local_path": "/var/www/html/assets/pod/collections/8/revisions/v2/specs/production_manifest.json",
                "exists": true,
                "size_bytes": 4616,
                "width": null,
                "height": null,
                "mime": "application/json"
            }
        },
        {
            "code": "production_manifest_json_parseable",
            "level": "pass",
            "message": "Production manifest JSON parseable",
            "path": "/assets/pod/collections/8/revisions/v2/specs/production_manifest.json",
            "details": []
        },
        {
            "code": "csv_has_rows",
            "level": "pass",
            "message": "CSV has rows",
            "path": "/assets/pod/collections/8/revisions/v2/specs/production_spec.csv",
            "details": {
                "rows": 6
            }
        }
    ],
    "warnings": [],
    "failures": [
        {
            "code": "latest_zip_exists",
            "level": "fail",
            "message": "Latest ZIP missing",
            "path": "",
            "details": []
        },
        {
            "code": "zip_size_gt_zero",
            "level": "fail",
            "message": "ZIP size is zero or unavailable",
            "path": "",
            "details": {
                "size_bytes": 0
            }
        },
        {
            "code": "manifest_exists",
            "level": "fail",
            "message": "Export manifest missing",
            "path": "",
            "details": {
                "public_path": "",
                "local_path": "",
                "exists": false,
                "size_bytes": 0,
                "width": null,
                "height": null,
                "mime": ""
            }
        },
        {
            "code": "zip_contains_manifest_json",
            "level": "fail",
            "message": "ZIP missing manifest.json",
            "path": "",
            "details": {
                "entry": "manifest.json"
            }
        },
        {
            "code": "zip_contains_readme",
            "level": "fail",
            "message": "ZIP missing README.txt",
            "path": "",
            "details": {
                "entry": "README.txt"
            }
        },
        {
            "code": "zip_contains_production_spec_html",
            "level": "fail",
            "message": "ZIP missing production_spec.html",
            "path": "",
            "details": {
                "entry": "production_spec.html"
            }
        },
        {
            "code": "zip_contains_production_spec_csv",
            "level": "fail",
            "message": "ZIP missing production_spec.csv",
            "path": "",
            "details": {
                "entry": "production_spec.csv"
            }
        },
        {
            "code": "zip_contains_production_manifest_json",
            "level": "fail",
            "message": "ZIP missing production_manifest.json",
            "path": "",
            "details": {
                "entry": "production_manifest.json"
            }
        }
    ],
    "generated_at": "2026-05-22T08:46:48+00:00"
}