# Collection Preflight Report

FAIL Score: 0

Collection ID | 45
Generated at | 2026-06-12T15:09:47+00:00
Pass | 94
Warning | 7
Fail | 18

## Failures

- master_print_path_exists: Master print missing
- item_mockup_exists: Item mockup missing
- item_print_exists: Item print missing
- public_url_resolvable: Public path cannot be resolved to local file
- item_mockup_exists: Item mockup missing
- item_print_exists: Item print missing
- public_url_resolvable: Public path cannot be resolved to local file
- item_mockup_exists: Item mockup missing
- item_print_exists: Item print missing
- public_url_resolvable: Public path cannot be resolved to local file
- latest_zip_exists: Latest ZIP missing
- zip_size_gt_zero: ZIP size is zero or unavailable
- manifest_exists: Export manifest missing
- zip_contains_manifest_json: ZIP missing manifest.json
- zip_contains_readme: ZIP missing README.txt
- zip_contains_production_spec_html: ZIP missing production_spec.html
- zip_contains_production_spec_csv: ZIP missing production_spec.csv
- zip_contains_production_manifest_json: ZIP missing production_manifest.json

## Warnings

- print_file_is_png_or_supported: Print file extension may not be supported
- image_dimensions_readable: Image dimensions not readable
- print_file_is_png_or_supported: Print file extension may not be supported
- image_dimensions_readable: Image dimensions not readable
- print_file_is_png_or_supported: Print file extension may not be supported
- image_dimensions_readable: Image dimensions not readable
- collection_items_completed: Some collection items are not completed

## Suggestions

- If panel prints are missing, regenerate panel files.
- If spec files are missing, rebuild the production spec sheet.
- If ZIP files are missing, rebuild ZIP export.
- If print size is too small, regenerate high-resolution print files.

## Checks

Code | Level | Message | Path | Details
--- | --- | --- | --- | ---
collection_exists | PASS | Collection exists |  | {"collection_id":45}
collection_has_title | PASS | Collection title exists |  | []
master_artwork_path_exists | PASS | Master artwork exists | /assets/pod/acceptance/product-set-source.png | {"public_path":"/assets/pod/acceptance/product-set-source.png","local_path":"/var/www/html/assets/pod/acceptance/product-set-source.png","exists":true,"size_bytes":4884,"width":360,"height":240,"mime":"image/png"}
master_print_path_exists | FAIL | Master print missing |  | {"public_path":"","local_path":"","exists":false,"size_bytes":0,"width":null,"height":null,"mime":""}
collection_has_items | PASS | Collection has items |  | {"item_count":11}
item_has_template_id | PASS | Item 155 template_id check |  | {"item_id":155,"template_id":34}
item_has_apply_mode | PASS | Item 155 apply_mode check |  | {"item_id":155,"apply_mode":"schema_multi_region"}
item_mockup_exists | PASS | Item mockup exists | /assets/pod/output/2/mockup/266_schema_mockup.png | {"item_id":155,"public_path":"/assets/pod/output/2/mockup/266_schema_mockup.png","local_path":"/var/www/html/assets/pod/output/2/mockup/266_schema_mockup.png","exists":true,"size_bytes":86826,"width":1000,"height":720,"mime":"image/png"}
item_print_exists | PASS | Item print exists | /assets/pod/output/2/print/266_schema_print.png | {"item_id":155,"public_path":"/assets/pod/output/2/print/266_schema_print.png","local_path":"/var/www/html/assets/pod/output/2/print/266_schema_print.png","exists":true,"size_bytes":106270,"width":3000,"height":2200,"mime":"image/png"}
mockup_and_print_are_not_same_role | PASS | Mockup and print paths are distinct |  | {"item_id":155}
print_file_is_png_or_supported | PASS | Print file extension is supported | /assets/pod/output/2/print/266_schema_print.png | {"item_id":155,"mime":"image/png"}
image_dimensions_readable | PASS | Image dimensions readable | /assets/pod/output/2/print/266_schema_print.png | {"item_id":155,"width":3000,"height":2200}
image_min_size | PASS | Print image size is acceptable | /assets/pod/output/2/print/266_schema_print.png | {"item_id":155,"width":3000,"height":2200}
public_url_resolvable | PASS | Public path resolves to local file | /assets/pod/output/2/print/266_schema_print.png | {"item_id":155}
item_has_template_id | PASS | Item 156 template_id check |  | {"item_id":156,"template_id":35}
item_has_apply_mode | PASS | Item 156 apply_mode check |  | {"item_id":156,"apply_mode":"schema_multi_region"}
item_mockup_exists | PASS | Item mockup exists | /assets/pod/output/2/mockup/267_schema_mockup.png | {"item_id":156,"public_path":"/assets/pod/output/2/mockup/267_schema_mockup.png","local_path":"/var/www/html/assets/pod/output/2/mockup/267_schema_mockup.png","exists":true,"size_bytes":88894,"width":1000,"height":760,"mime":"image/png"}
item_print_exists | PASS | Item print exists | /assets/pod/output/2/print/267_schema_print.png | {"item_id":156,"public_path":"/assets/pod/output/2/print/267_schema_print.png","local_path":"/var/www/html/assets/pod/output/2/print/267_schema_print.png","exists":true,"size_bytes":106264,"width":3000,"height":2200,"mime":"image/png"}
mockup_and_print_are_not_same_role | PASS | Mockup and print paths are distinct |  | {"item_id":156}
print_file_is_png_or_supported | PASS | Print file extension is supported | /assets/pod/output/2/print/267_schema_print.png | {"item_id":156,"mime":"image/png"}
image_dimensions_readable | PASS | Image dimensions readable | /assets/pod/output/2/print/267_schema_print.png | {"item_id":156,"width":3000,"height":2200}
image_min_size | PASS | Print image size is acceptable | /assets/pod/output/2/print/267_schema_print.png | {"item_id":156,"width":3000,"height":2200}
public_url_resolvable | PASS | Public path resolves to local file | /assets/pod/output/2/print/267_schema_print.png | {"item_id":156}
item_has_template_id | PASS | Item 157 template_id check |  | {"item_id":157,"template_id":36}
item_has_apply_mode | PASS | Item 157 apply_mode check |  | {"item_id":157,"apply_mode":"schema_multi_region"}
item_mockup_exists | PASS | Item mockup exists | /assets/pod/output/2/mockup/268_schema_mockup.png | {"item_id":157,"public_path":"/assets/pod/output/2/mockup/268_schema_mockup.png","local_path":"/var/www/html/assets/pod/output/2/mockup/268_schema_mockup.png","exists":true,"size_bytes":84285,"width":1000,"height":860,"mime":"image/png"}
item_print_exists | PASS | Item print exists | /assets/pod/output/2/print/268_schema_print.png | {"item_id":157,"public_path":"/assets/pod/output/2/print/268_schema_print.png","local_path":"/var/www/html/assets/pod/output/2/print/268_schema_print.png","exists":true,"size_bytes":211829,"width":3000,"height":2200,"mime":"image/png"}
mockup_and_print_are_not_same_role | PASS | Mockup and print paths are distinct |  | {"item_id":157}
print_file_is_png_or_supported | PASS | Print file extension is supported | /assets/pod/output/2/print/268_schema_print.png | {"item_id":157,"mime":"image/png"}
image_dimensions_readable | PASS | Image dimensions readable | /assets/pod/output/2/print/268_schema_print.png | {"item_id":157,"width":3000,"height":2200}
image_min_size | PASS | Print image size is acceptable | /assets/pod/output/2/print/268_schema_print.png | {"item_id":157,"width":3000,"height":2200}
public_url_resolvable | PASS | Public path resolves to local file | /assets/pod/output/2/print/268_schema_print.png | {"item_id":157}
item_has_template_id | PASS | Item 158 template_id check |  | {"item_id":158,"template_id":37}
item_has_apply_mode | PASS | Item 158 apply_mode check |  | {"item_id":158,"apply_mode":"schema_multi_region"}
item_mockup_exists | PASS | Item mockup exists | /assets/pod/output/2/mockup/269_schema_mockup.png | {"item_id":158,"public_path":"/assets/pod/output/2/mockup/269_schema_mockup.png","local_path":"/var/www/html/assets/pod/output/2/mockup/269_schema_mockup.png","exists":true,"size_bytes":88218,"width":1000,"height":850,"mime":"image/png"}
item_print_exists | PASS | Item print exists | /assets/pod/output/2/print/269_schema_print.png | {"item_id":158,"public_path":"/assets/pod/output/2/print/269_schema_print.png","local_path":"/var/www/html/assets/pod/output/2/print/269_schema_print.png","exists":true,"size_bytes":211933,"width":3000,"height":2200,"mime":"image/png"}
mockup_and_print_are_not_same_role | PASS | Mockup and print paths are distinct |  | {"item_id":158}
print_file_is_png_or_supported | PASS | Print file extension is supported | /assets/pod/output/2/print/269_schema_print.png | {"item_id":158,"mime":"image/png"}
image_dimensions_readable | PASS | Image dimensions readable | /assets/pod/output/2/print/269_schema_print.png | {"item_id":158,"width":3000,"height":2200}
image_min_size | PASS | Print image size is acceptable | /assets/pod/output/2/print/269_schema_print.png | {"item_id":158,"width":3000,"height":2200}
public_url_resolvable | PASS | Public path resolves to local file | /assets/pod/output/2/print/269_schema_print.png | {"item_id":158}
item_has_template_id | PASS | Item 159 template_id check |  | {"item_id":159,"template_id":38}
item_has_apply_mode | PASS | Item 159 apply_mode check |  | {"item_id":159,"apply_mode":"schema_multi_region"}
item_mockup_exists | PASS | Item mockup exists | /assets/pod/output/2/mockup/270_schema_mockup.png | {"item_id":159,"public_path":"/assets/pod/output/2/mockup/270_schema_mockup.png","local_path":"/var/www/html/assets/pod/output/2/mockup/270_schema_mockup.png","exists":true,"size_bytes":32415,"width":900,"height":900,"mime":"image/png"}
item_print_exists | PASS | Item print exists | /assets/pod/output/2/print/270_schema_print.png | {"item_id":159,"public_path":"/assets/pod/output/2/print/270_schema_print.png","local_path":"/var/www/html/assets/pod/output/2/print/270_schema_print.png","exists":true,"size_bytes":106264,"width":3000,"height":2200,"mime":"image/png"}
mockup_and_print_are_not_same_role | PASS | Mockup and print paths are distinct |  | {"item_id":159}
print_file_is_png_or_supported | PASS | Print file extension is supported | /assets/pod/output/2/print/270_schema_print.png | {"item_id":159,"mime":"image/png"}
image_dimensions_readable | PASS | Image dimensions readable | /assets/pod/output/2/print/270_schema_print.png | {"item_id":159,"width":3000,"height":2200}
image_min_size | PASS | Print image size is acceptable | /assets/pod/output/2/print/270_schema_print.png | {"item_id":159,"width":3000,"height":2200}
public_url_resolvable | PASS | Public path resolves to local file | /assets/pod/output/2/print/270_schema_print.png | {"item_id":159}
item_has_template_id | PASS | Item 160 template_id check |  | {"item_id":160,"template_id":39}
item_has_apply_mode | PASS | Item 160 apply_mode check |  | {"item_id":160,"apply_mode":"schema_multi_region"}
item_mockup_exists | PASS | Item mockup exists | /assets/pod/output/2/mockup/271_schema_mockup.png | {"item_id":160,"public_path":"/assets/pod/output/2/mockup/271_schema_mockup.png","local_path":"/var/www/html/assets/pod/output/2/mockup/271_schema_mockup.png","exists":true,"size_bytes":37035,"width":1100,"height":620,"mime":"image/png"}
item_print_exists | PASS | Item print exists | /assets/pod/output/2/print/271_schema_print.png | {"item_id":160,"public_path":"/assets/pod/output/2/print/271_schema_print.png","local_path":"/var/www/html/assets/pod/output/2/print/271_schema_print.png","exists":true,"size_bytes":120229,"width":3000,"height":2200,"mime":"image/png"}
mockup_and_print_are_not_same_role | PASS | Mockup and print paths are distinct |  | {"item_id":160}
print_file_is_png_or_supported | PASS | Print file extension is supported | /assets/pod/output/2/print/271_schema_print.png | {"item_id":160,"mime":"image/png"}
image_dimensions_readable | PASS | Image dimensions readable | /assets/pod/output/2/print/271_schema_print.png | {"item_id":160,"width":3000,"height":2200}
image_min_size | PASS | Print image size is acceptable | /assets/pod/output/2/print/271_schema_print.png | {"item_id":160,"width":3000,"height":2200}
public_url_resolvable | PASS | Public path resolves to local file | /assets/pod/output/2/print/271_schema_print.png | {"item_id":160}
item_has_template_id | PASS | Item 161 template_id check |  | {"item_id":161,"template_id":41}
item_has_apply_mode | PASS | Item 161 apply_mode check |  | {"item_id":161,"apply_mode":"schema_multi_region"}
item_mockup_exists | FAIL | Item mockup missing |  | {"item_id":161,"public_path":"","local_path":"","exists":false,"size_bytes":0,"width":null,"height":null,"mime":""}
item_print_exists | FAIL | Item print missing |  | {"item_id":161,"public_path":"","local_path":"","exists":false,"size_bytes":0,"width":null,"height":null,"mime":""}
mockup_and_print_are_not_same_role | PASS | Mockup and print paths are distinct |  | {"item_id":161}
print_file_is_png_or_supported | WARNING | Print file extension may not be supported |  | {"item_id":161,"mime":""}
image_dimensions_readable | WARNING | Image dimensions not readable |  | {"item_id":161,"width":null,"height":null}
image_min_size | PASS | Print image size is acceptable |  | {"item_id":161,"width":null,"height":null}
public_url_resolvable | FAIL | Public path cannot be resolved to local file |  | {"item_id":161}
item_has_template_id | PASS | Item 162 template_id check |  | {"item_id":162,"template_id":42}
item_has_apply_mode | PASS | Item 162 apply_mode check |  | {"item_id":162,"apply_mode":"schema_multi_region"}
item_mockup_exists | PASS | Item mockup exists | /assets/pod/output/2/mockup/273_schema_mockup.png | {"item_id":162,"public_path":"/assets/pod/output/2/mockup/273_schema_mockup.png","local_path":"/var/www/html/assets/pod/output/2/mockup/273_schema_mockup.png","exists":true,"size_bytes":62134,"width":800,"height":800,"mime":"image/png"}
item_print_exists | PASS | Item print exists | /assets/pod/output/2/print/273_schema_print.png | {"item_id":162,"public_path":"/assets/pod/output/2/print/273_schema_print.png","local_path":"/var/www/html/assets/pod/output/2/print/273_schema_print.png","exists":true,"size_bytes":106270,"width":3000,"height":2200,"mime":"image/png"}
mockup_and_print_are_not_same_role | PASS | Mockup and print paths are distinct |  | {"item_id":162}
print_file_is_png_or_supported | PASS | Print file extension is supported | /assets/pod/output/2/print/273_schema_print.png | {"item_id":162,"mime":"image/png"}
image_dimensions_readable | PASS | Image dimensions readable | /assets/pod/output/2/print/273_schema_print.png | {"item_id":162,"width":3000,"height":2200}
image_min_size | PASS | Print image size is acceptable | /assets/pod/output/2/print/273_schema_print.png | {"item_id":162,"width":3000,"height":2200}
public_url_resolvable | PASS | Public path resolves to local file | /assets/pod/output/2/print/273_schema_print.png | {"item_id":162}
item_has_template_id | PASS | Item 163 template_id check |  | {"item_id":163,"template_id":43}
item_has_apply_mode | PASS | Item 163 apply_mode check |  | {"item_id":163,"apply_mode":"schema_multi_region"}
item_mockup_exists | PASS | Item mockup exists | /assets/pod/output/2/mockup/274_schema_mockup.png | {"item_id":163,"public_path":"/assets/pod/output/2/mockup/274_schema_mockup.png","local_path":"/var/www/html/assets/pod/output/2/mockup/274_schema_mockup.png","exists":true,"size_bytes":76319,"width":1000,"height":1000,"mime":"image/png"}
item_print_exists | PASS | Item print exists | /assets/pod/output/2/print/274_schema_print.png | {"item_id":163,"public_path":"/assets/pod/output/2/print/274_schema_print.png","local_path":"/var/www/html/assets/pod/output/2/print/274_schema_print.png","exists":true,"size_bytes":106270,"width":3000,"height":2200,"mime":"image/png"}
mockup_and_print_are_not_same_role | PASS | Mockup and print paths are distinct |  | {"item_id":163}
print_file_is_png_or_supported | PASS | Print file extension is supported | /assets/pod/output/2/print/274_schema_print.png | {"item_id":163,"mime":"image/png"}
image_dimensions_readable | PASS | Image dimensions readable | /assets/pod/output/2/print/274_schema_print.png | {"item_id":163,"width":3000,"height":2200}
image_min_size | PASS | Print image size is acceptable | /assets/pod/output/2/print/274_schema_print.png | {"item_id":163,"width":3000,"height":2200}
public_url_resolvable | PASS | Public path resolves to local file | /assets/pod/output/2/print/274_schema_print.png | {"item_id":163}
item_has_template_id | PASS | Item 164 template_id check |  | {"item_id":164,"template_id":44}
item_has_apply_mode | PASS | Item 164 apply_mode check |  | {"item_id":164,"apply_mode":"schema_multi_region"}
item_mockup_exists | FAIL | Item mockup missing |  | {"item_id":164,"public_path":"","local_path":"","exists":false,"size_bytes":0,"width":null,"height":null,"mime":""}
item_print_exists | FAIL | Item print missing |  | {"item_id":164,"public_path":"","local_path":"","exists":false,"size_bytes":0,"width":null,"height":null,"mime":""}
mockup_and_print_are_not_same_role | PASS | Mockup and print paths are distinct |  | {"item_id":164}
print_file_is_png_or_supported | WARNING | Print file extension may not be supported |  | {"item_id":164,"mime":""}
image_dimensions_readable | WARNING | Image dimensions not readable |  | {"item_id":164,"width":null,"height":null}
image_min_size | PASS | Print image size is acceptable |  | {"item_id":164,"width":null,"height":null}
public_url_resolvable | FAIL | Public path cannot be resolved to local file |  | {"item_id":164}
item_has_template_id | PASS | Item 165 template_id check |  | {"item_id":165,"template_id":45}
item_has_apply_mode | PASS | Item 165 apply_mode check |  | {"item_id":165,"apply_mode":"schema_multi_region"}
item_mockup_exists | FAIL | Item mockup missing |  | {"item_id":165,"public_path":"","local_path":"","exists":false,"size_bytes":0,"width":null,"height":null,"mime":""}
item_print_exists | FAIL | Item print missing |  | {"item_id":165,"public_path":"","local_path":"","exists":false,"size_bytes":0,"width":null,"height":null,"mime":""}
mockup_and_print_are_not_same_role | PASS | Mockup and print paths are distinct |  | {"item_id":165}
print_file_is_png_or_supported | WARNING | Print file extension may not be supported |  | {"item_id":165,"mime":""}
image_dimensions_readable | WARNING | Image dimensions not readable |  | {"item_id":165,"width":null,"height":null}
image_min_size | PASS | Print image size is acceptable |  | {"item_id":165,"width":null,"height":null}
public_url_resolvable | FAIL | Public path cannot be resolved to local file |  | {"item_id":165}
collection_items_completed | WARNING | Some collection items are not completed |  | []
latest_zip_exists | FAIL | Latest ZIP missing |  | []
zip_size_gt_zero | FAIL | ZIP size is zero or unavailable |  | {"size_bytes":0}
manifest_exists | FAIL | Export manifest missing |  | {"public_path":"","local_path":"","exists":false,"size_bytes":0,"width":null,"height":null,"mime":""}
zip_contains_manifest_json | FAIL | ZIP missing manifest.json |  | {"entry":"manifest.json"}
zip_contains_readme | FAIL | ZIP missing README.txt |  | {"entry":"README.txt"}
zip_contains_production_spec_html | FAIL | ZIP missing production_spec.html |  | {"entry":"production_spec.html"}
zip_contains_production_spec_csv | FAIL | ZIP missing production_spec.csv |  | {"entry":"production_spec.csv"}
zip_contains_production_manifest_json | FAIL | ZIP missing production_manifest.json |  | {"entry":"production_manifest.json"}
zip_contains_panel_prints_if_multi_panel | PASS | No multi-panel item requires panel ZIP entries |  | []
production_spec_html_exists | PASS | Production spec HTML exists | /assets/pod/collections/45/specs/production_spec.html | {"public_path":"/assets/pod/collections/45/specs/production_spec.html","local_path":"/var/www/html/assets/pod/collections/45/specs/production_spec.html","exists":true,"size_bytes":6858,"width":null,"height":null,"mime":"text/html"}
production_spec_csv_exists | PASS | Production spec CSV exists | /assets/pod/collections/45/specs/production_spec.csv | {"public_path":"/assets/pod/collections/45/specs/production_spec.csv","local_path":"/var/www/html/assets/pod/collections/45/specs/production_spec.csv","exists":true,"size_bytes":4815,"width":null,"height":null,"mime":"text/csv"}
production_manifest_json_exists | PASS | Production manifest JSON exists | /assets/pod/collections/45/specs/production_manifest.json | {"public_path":"/assets/pod/collections/45/specs/production_manifest.json","local_path":"/var/www/html/assets/pod/collections/45/specs/production_manifest.json","exists":true,"size_bytes":16642,"width":null,"height":null,"mime":"application/json"}
production_manifest_json_parseable | PASS | Production manifest JSON parseable | /assets/pod/collections/45/specs/production_manifest.json | []
csv_has_rows | PASS | CSV has rows | /assets/pod/collections/45/specs/production_spec.csv | {"rows":24}