Example 1 / 5
A tiny crop should not invent new colors.
Each 768 × 480 crop contains ten complete 48px periods and the same exact RGB histogram. Width normalization does not resample these inputs. This tests color stability only.
| Case | Before | After |
|---|---|---|
| Origin +0px | 100 | 100 |
| Origin +1px | 91.4 | 100 |
| Origin +2px | 92.2 | 100 |
| Origin +3px | 98.04 | 100 |
| Origin +4px | 94.12 | 100 |
Before · b7139a2
- Layout score, +1px
85.59- Mode
widget
After · dirty snapshot fa35542962f7
- Layout score, +1px
85.59- Mode
widget
Read the color row separately from layout. Shifting the crop can change structure even when its color proportions stay the same. Widget mode intentionally skips registration.
Inputs, settings and raw evidence
color_periodic_crop_0px
Crop ten complete 48px periods from origin y=0. Exact RGB histogram is unchanged; canonical width avoids normalization interpolation. Only color invariance is expected, not identical layout/overall.
{
"reference": "fixtures/color-periodic-crop-0px.png",
"candidate": "fixtures/color-periodic-crop-0px.png",
"params": {
"mode": "widget",
"return_visuals": false
},
"fixtures": {
"fixtures/color-periodic-crop-0px.png": {
"mode": "RGB",
"pixels_sha256": "3ebc0f90308e6cb579bce2ffc1dfa66e7e327e8a88c064ba439bcfa0cebdf3b5",
"rgb_histogram_sha256": "3197a16134e9b764faae450c5803381b6773a184f1f519a89860d0f71a84c461",
"sha256": "d728f90dbc867b1a04559685a854f5ace1d8679b8fe6a19405fd43127b8ae6d9",
"shape": [
480,
768,
3
]
}
},
"baseline": {
"effective_params": {
"mode": "widget",
"return_visuals": false
},
"unsupported_metadata_params": [],
"alignment": {
"fallback": true,
"method": "identity",
"mode": "widget",
"note": "widget mode assumes a pre-aligned crop"
},
"canvas": {
"candidate": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"height": 480,
"ignore_input_space": "reference_original_pixels",
"ignore_space": "canonical_768",
"reference": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"width": 768
}
},
"current": {
"effective_params": {
"mode": "widget",
"return_visuals": false
},
"alignment": {
"fallback": true,
"method": "identity",
"mode": "widget",
"note": "widget mode assumes a pre-aligned crop",
"outcome": "not_requested",
"reason": "widget_identity"
},
"canvas": {
"candidate": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"height": 480,
"ignore_input_space": "reference_original_pixels",
"ignore_space": "canonical_768",
"reference": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"width": 768
},
"diagnostics": {
"capture": {
"candidate": {
"gray_stddev": 70.47827178790368,
"near_uniform": false,
"rgb_stddev_max": 104.36968347637487
},
"reference": {
"gray_stddev": 70.47827178790368,
"near_uniform": false,
"rgb_stddev_max": 104.36968347637487
}
},
"issues": [],
"layout_identity_score": 100,
"scope": {
"compared_fraction": 1,
"ignored_fraction": 0
},
"status": "ok",
"version": 1
},
"provenance": {
"comparison_key": "76b5b88d001843df08c48a9e8c041ee998a3e9ea1953cbe30cc9ee047072c857",
"inputs": {
"candidate": {
"height": 480,
"rgb_sha256": "7e135dc2abc50deb2055fd01e19bd1d39667fa608128b265017e733aff8c681f",
"width": 768
},
"reference": {
"height": 480,
"rgb_sha256": "7e135dc2abc50deb2055fd01e19bd1d39667fa608128b265017e733aff8c681f",
"width": 768
}
},
"run_key": "8a4468d6d53f758bcfb4d9bde958cf226c9d2786c92aa7803064368159ada87d",
"settings": {
"alignment_policy": "ecc-translation-guards-v1",
"canonical_width": 768,
"comparison_context": null,
"engine_revision": "sha256:af00e69615847f5fbdbbb23c9edf742ae6d38fb785ab518ba658eb7e63498144",
"ignore_policy": "reference-boxes-per-image-modal-fill-v1",
"ignore_regions": [],
"mode": "widget",
"normalization_policy": "independent-width-modal-bottom-pad-v1",
"preset": "default",
"runtime_versions": {
"Pillow": "12.3.0",
"numpy": "2.5.1",
"opencv": "5.0.0",
"python": "3.13.7",
"scikit-image": "0.26.0",
"scikit-learn": "1.9.0",
"scipy": "1.18.0"
},
"weights": {
"color": 0.2,
"content": 0.15,
"layout": 0.35,
"spacing": 0.15,
"typography": 0.15
}
},
"version": 1
}
}
}color_periodic_crop_1px
Crop ten complete 48px periods from origin y=1. Exact RGB histogram is unchanged; canonical width avoids normalization interpolation. Only color invariance is expected, not identical layout/overall.
{
"reference": "fixtures/color-periodic-crop-0px.png",
"candidate": "fixtures/color-periodic-crop-1px.png",
"params": {
"mode": "widget",
"return_visuals": false
},
"fixtures": {
"fixtures/color-periodic-crop-0px.png": {
"mode": "RGB",
"pixels_sha256": "3ebc0f90308e6cb579bce2ffc1dfa66e7e327e8a88c064ba439bcfa0cebdf3b5",
"rgb_histogram_sha256": "3197a16134e9b764faae450c5803381b6773a184f1f519a89860d0f71a84c461",
"sha256": "d728f90dbc867b1a04559685a854f5ace1d8679b8fe6a19405fd43127b8ae6d9",
"shape": [
480,
768,
3
]
},
"fixtures/color-periodic-crop-1px.png": {
"mode": "RGB",
"pixels_sha256": "015ac45c9cfb2a78b1a210eb0b9dc0f3b000aa4872db688150c302f6f2a967e5",
"rgb_histogram_sha256": "3197a16134e9b764faae450c5803381b6773a184f1f519a89860d0f71a84c461",
"sha256": "8ec8a1b13d5235c5be9ea788527199fb1568e09c3aebd1d5ce99cb8cf804c4f1",
"shape": [
480,
768,
3
]
}
},
"baseline": {
"effective_params": {
"mode": "widget",
"return_visuals": false
},
"unsupported_metadata_params": [],
"alignment": {
"fallback": true,
"method": "identity",
"mode": "widget",
"note": "widget mode assumes a pre-aligned crop"
},
"canvas": {
"candidate": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"height": 480,
"ignore_input_space": "reference_original_pixels",
"ignore_space": "canonical_768",
"reference": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"width": 768
}
},
"current": {
"effective_params": {
"mode": "widget",
"return_visuals": false
},
"alignment": {
"fallback": true,
"method": "identity",
"mode": "widget",
"note": "widget mode assumes a pre-aligned crop",
"outcome": "not_requested",
"reason": "widget_identity"
},
"canvas": {
"candidate": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"height": 480,
"ignore_input_space": "reference_original_pixels",
"ignore_space": "canonical_768",
"reference": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"width": 768
},
"diagnostics": {
"capture": {
"candidate": {
"gray_stddev": 70.47827178790368,
"near_uniform": false,
"rgb_stddev_max": 104.36968347637487
},
"reference": {
"gray_stddev": 70.47827178790368,
"near_uniform": false,
"rgb_stddev_max": 104.36968347637487
}
},
"issues": [],
"layout_identity_score": 85.58682074911846,
"scope": {
"compared_fraction": 1,
"ignored_fraction": 0
},
"status": "ok",
"version": 1
},
"provenance": {
"comparison_key": "76b5b88d001843df08c48a9e8c041ee998a3e9ea1953cbe30cc9ee047072c857",
"inputs": {
"candidate": {
"height": 480,
"rgb_sha256": "33ca9437e3afe01f25df2a5f0d4cbc33aab8e13d60af151f6ae822c3fb1c0116",
"width": 768
},
"reference": {
"height": 480,
"rgb_sha256": "7e135dc2abc50deb2055fd01e19bd1d39667fa608128b265017e733aff8c681f",
"width": 768
}
},
"run_key": "ee098fbb1f715970bcd3559168a0d2ec4f8c6fc3865b0212359230bced9233fe",
"settings": {
"alignment_policy": "ecc-translation-guards-v1",
"canonical_width": 768,
"comparison_context": null,
"engine_revision": "sha256:af00e69615847f5fbdbbb23c9edf742ae6d38fb785ab518ba658eb7e63498144",
"ignore_policy": "reference-boxes-per-image-modal-fill-v1",
"ignore_regions": [],
"mode": "widget",
"normalization_policy": "independent-width-modal-bottom-pad-v1",
"preset": "default",
"runtime_versions": {
"Pillow": "12.3.0",
"numpy": "2.5.1",
"opencv": "5.0.0",
"python": "3.13.7",
"scikit-image": "0.26.0",
"scikit-learn": "1.9.0",
"scipy": "1.18.0"
},
"weights": {
"color": 0.2,
"content": 0.15,
"layout": 0.35,
"spacing": 0.15,
"typography": 0.15
}
},
"version": 1
}
}
}color_periodic_crop_2px
Crop ten complete 48px periods from origin y=2. Exact RGB histogram is unchanged; canonical width avoids normalization interpolation. Only color invariance is expected, not identical layout/overall.
{
"reference": "fixtures/color-periodic-crop-0px.png",
"candidate": "fixtures/color-periodic-crop-2px.png",
"params": {
"mode": "widget",
"return_visuals": false
},
"fixtures": {
"fixtures/color-periodic-crop-0px.png": {
"mode": "RGB",
"pixels_sha256": "3ebc0f90308e6cb579bce2ffc1dfa66e7e327e8a88c064ba439bcfa0cebdf3b5",
"rgb_histogram_sha256": "3197a16134e9b764faae450c5803381b6773a184f1f519a89860d0f71a84c461",
"sha256": "d728f90dbc867b1a04559685a854f5ace1d8679b8fe6a19405fd43127b8ae6d9",
"shape": [
480,
768,
3
]
},
"fixtures/color-periodic-crop-2px.png": {
"mode": "RGB",
"pixels_sha256": "439de9b2896c8e0a188cd56d67abb772dd35c6ac1fef56ecb291af923d176f6d",
"rgb_histogram_sha256": "3197a16134e9b764faae450c5803381b6773a184f1f519a89860d0f71a84c461",
"sha256": "508f3683361a547a090eecef4376e8410ca0b847546ad53470c39c6e64ba27ff",
"shape": [
480,
768,
3
]
}
},
"baseline": {
"effective_params": {
"mode": "widget",
"return_visuals": false
},
"unsupported_metadata_params": [],
"alignment": {
"fallback": true,
"method": "identity",
"mode": "widget",
"note": "widget mode assumes a pre-aligned crop"
},
"canvas": {
"candidate": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"height": 480,
"ignore_input_space": "reference_original_pixels",
"ignore_space": "canonical_768",
"reference": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"width": 768
}
},
"current": {
"effective_params": {
"mode": "widget",
"return_visuals": false
},
"alignment": {
"fallback": true,
"method": "identity",
"mode": "widget",
"note": "widget mode assumes a pre-aligned crop",
"outcome": "not_requested",
"reason": "widget_identity"
},
"canvas": {
"candidate": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"height": 480,
"ignore_input_space": "reference_original_pixels",
"ignore_space": "canonical_768",
"reference": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"width": 768
},
"diagnostics": {
"capture": {
"candidate": {
"gray_stddev": 70.47827178790368,
"near_uniform": false,
"rgb_stddev_max": 104.36968347637487
},
"reference": {
"gray_stddev": 70.47827178790368,
"near_uniform": false,
"rgb_stddev_max": 104.36968347637487
}
},
"issues": [],
"layout_identity_score": 76.07982467965742,
"scope": {
"compared_fraction": 1,
"ignored_fraction": 0
},
"status": "ok",
"version": 1
},
"provenance": {
"comparison_key": "76b5b88d001843df08c48a9e8c041ee998a3e9ea1953cbe30cc9ee047072c857",
"inputs": {
"candidate": {
"height": 480,
"rgb_sha256": "f2c0c21003dd1461f641e582264a434131364e52339e592285f2ed68f0598be9",
"width": 768
},
"reference": {
"height": 480,
"rgb_sha256": "7e135dc2abc50deb2055fd01e19bd1d39667fa608128b265017e733aff8c681f",
"width": 768
}
},
"run_key": "5897f6a7d03c748d8199c3f3b98c2437d9d0824f09612ac864118e197905eea7",
"settings": {
"alignment_policy": "ecc-translation-guards-v1",
"canonical_width": 768,
"comparison_context": null,
"engine_revision": "sha256:af00e69615847f5fbdbbb23c9edf742ae6d38fb785ab518ba658eb7e63498144",
"ignore_policy": "reference-boxes-per-image-modal-fill-v1",
"ignore_regions": [],
"mode": "widget",
"normalization_policy": "independent-width-modal-bottom-pad-v1",
"preset": "default",
"runtime_versions": {
"Pillow": "12.3.0",
"numpy": "2.5.1",
"opencv": "5.0.0",
"python": "3.13.7",
"scikit-image": "0.26.0",
"scikit-learn": "1.9.0",
"scipy": "1.18.0"
},
"weights": {
"color": 0.2,
"content": 0.15,
"layout": 0.35,
"spacing": 0.15,
"typography": 0.15
}
},
"version": 1
}
}
}color_periodic_crop_3px
Crop ten complete 48px periods from origin y=3. Exact RGB histogram is unchanged; canonical width avoids normalization interpolation. Only color invariance is expected, not identical layout/overall.
{
"reference": "fixtures/color-periodic-crop-0px.png",
"candidate": "fixtures/color-periodic-crop-3px.png",
"params": {
"mode": "widget",
"return_visuals": false
},
"fixtures": {
"fixtures/color-periodic-crop-0px.png": {
"mode": "RGB",
"pixels_sha256": "3ebc0f90308e6cb579bce2ffc1dfa66e7e327e8a88c064ba439bcfa0cebdf3b5",
"rgb_histogram_sha256": "3197a16134e9b764faae450c5803381b6773a184f1f519a89860d0f71a84c461",
"sha256": "d728f90dbc867b1a04559685a854f5ace1d8679b8fe6a19405fd43127b8ae6d9",
"shape": [
480,
768,
3
]
},
"fixtures/color-periodic-crop-3px.png": {
"mode": "RGB",
"pixels_sha256": "731b65b8d18f5bfe43eb2d2ae55bba46900adf4abd6ec77a7f17fc5685227e49",
"rgb_histogram_sha256": "3197a16134e9b764faae450c5803381b6773a184f1f519a89860d0f71a84c461",
"sha256": "f1b58c02c72ff0b018937efde803c9a154f99a04c12e006e284e7d9401a9b957",
"shape": [
480,
768,
3
]
}
},
"baseline": {
"effective_params": {
"mode": "widget",
"return_visuals": false
},
"unsupported_metadata_params": [],
"alignment": {
"fallback": true,
"method": "identity",
"mode": "widget",
"note": "widget mode assumes a pre-aligned crop"
},
"canvas": {
"candidate": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"height": 480,
"ignore_input_space": "reference_original_pixels",
"ignore_space": "canonical_768",
"reference": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"width": 768
}
},
"current": {
"effective_params": {
"mode": "widget",
"return_visuals": false
},
"alignment": {
"fallback": true,
"method": "identity",
"mode": "widget",
"note": "widget mode assumes a pre-aligned crop",
"outcome": "not_requested",
"reason": "widget_identity"
},
"canvas": {
"candidate": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"height": 480,
"ignore_input_space": "reference_original_pixels",
"ignore_space": "canonical_768",
"reference": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"width": 768
},
"diagnostics": {
"capture": {
"candidate": {
"gray_stddev": 70.47827178790368,
"near_uniform": false,
"rgb_stddev_max": 104.36968347637487
},
"reference": {
"gray_stddev": 70.47827178790368,
"near_uniform": false,
"rgb_stddev_max": 104.36968347637487
}
},
"issues": [],
"layout_identity_score": 69.74407627838826,
"scope": {
"compared_fraction": 1,
"ignored_fraction": 0
},
"status": "ok",
"version": 1
},
"provenance": {
"comparison_key": "76b5b88d001843df08c48a9e8c041ee998a3e9ea1953cbe30cc9ee047072c857",
"inputs": {
"candidate": {
"height": 480,
"rgb_sha256": "2d4d034d2586619f5961aaedd3545948317d53a4bd2ddafb7a2a2f963ac811cd",
"width": 768
},
"reference": {
"height": 480,
"rgb_sha256": "7e135dc2abc50deb2055fd01e19bd1d39667fa608128b265017e733aff8c681f",
"width": 768
}
},
"run_key": "7e7b2f147e1c15a472ffa8578a41cd67a57934b972efa74504526970d2bea894",
"settings": {
"alignment_policy": "ecc-translation-guards-v1",
"canonical_width": 768,
"comparison_context": null,
"engine_revision": "sha256:af00e69615847f5fbdbbb23c9edf742ae6d38fb785ab518ba658eb7e63498144",
"ignore_policy": "reference-boxes-per-image-modal-fill-v1",
"ignore_regions": [],
"mode": "widget",
"normalization_policy": "independent-width-modal-bottom-pad-v1",
"preset": "default",
"runtime_versions": {
"Pillow": "12.3.0",
"numpy": "2.5.1",
"opencv": "5.0.0",
"python": "3.13.7",
"scikit-image": "0.26.0",
"scikit-learn": "1.9.0",
"scipy": "1.18.0"
},
"weights": {
"color": 0.2,
"content": 0.15,
"layout": 0.35,
"spacing": 0.15,
"typography": 0.15
}
},
"version": 1
}
}
}color_periodic_crop_4px
Crop ten complete 48px periods from origin y=4. Exact RGB histogram is unchanged; canonical width avoids normalization interpolation. Only color invariance is expected, not identical layout/overall.
{
"reference": "fixtures/color-periodic-crop-0px.png",
"candidate": "fixtures/color-periodic-crop-4px.png",
"params": {
"mode": "widget",
"return_visuals": false
},
"fixtures": {
"fixtures/color-periodic-crop-0px.png": {
"mode": "RGB",
"pixels_sha256": "3ebc0f90308e6cb579bce2ffc1dfa66e7e327e8a88c064ba439bcfa0cebdf3b5",
"rgb_histogram_sha256": "3197a16134e9b764faae450c5803381b6773a184f1f519a89860d0f71a84c461",
"sha256": "d728f90dbc867b1a04559685a854f5ace1d8679b8fe6a19405fd43127b8ae6d9",
"shape": [
480,
768,
3
]
},
"fixtures/color-periodic-crop-4px.png": {
"mode": "RGB",
"pixels_sha256": "c825ea1b85cc672b30754042455171b7e6fcbe19ba45d8efbc5ee81b4027a01e",
"rgb_histogram_sha256": "3197a16134e9b764faae450c5803381b6773a184f1f519a89860d0f71a84c461",
"sha256": "ed42e41c59f499b944c623050ca00793ec0b524d0931d3145df5adaeb858e9c3",
"shape": [
480,
768,
3
]
}
},
"baseline": {
"effective_params": {
"mode": "widget",
"return_visuals": false
},
"unsupported_metadata_params": [],
"alignment": {
"fallback": true,
"method": "identity",
"mode": "widget",
"note": "widget mode assumes a pre-aligned crop"
},
"canvas": {
"candidate": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"height": 480,
"ignore_input_space": "reference_original_pixels",
"ignore_space": "canonical_768",
"reference": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"width": 768
}
},
"current": {
"effective_params": {
"mode": "widget",
"return_visuals": false
},
"alignment": {
"fallback": true,
"method": "identity",
"mode": "widget",
"note": "widget mode assumes a pre-aligned crop",
"outcome": "not_requested",
"reason": "widget_identity"
},
"canvas": {
"candidate": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"height": 480,
"ignore_input_space": "reference_original_pixels",
"ignore_space": "canonical_768",
"reference": {
"orig_h": 480,
"orig_w": 768,
"scale": 1
},
"width": 768
},
"diagnostics": {
"capture": {
"candidate": {
"gray_stddev": 70.47827178790368,
"near_uniform": false,
"rgb_stddev_max": 104.36968347637487
},
"reference": {
"gray_stddev": 70.47827178790368,
"near_uniform": false,
"rgb_stddev_max": 104.36968347637487
}
},
"issues": [],
"layout_identity_score": 64.30254643036633,
"scope": {
"compared_fraction": 1,
"ignored_fraction": 0
},
"status": "ok",
"version": 1
},
"provenance": {
"comparison_key": "76b5b88d001843df08c48a9e8c041ee998a3e9ea1953cbe30cc9ee047072c857",
"inputs": {
"candidate": {
"height": 480,
"rgb_sha256": "e1a1416dc8a814abb08833c5dc0639dfb29ed78ba1d2216f3720eea7e0360e2e",
"width": 768
},
"reference": {
"height": 480,
"rgb_sha256": "7e135dc2abc50deb2055fd01e19bd1d39667fa608128b265017e733aff8c681f",
"width": 768
}
},
"run_key": "9f3ca281f4a9cdd56c79942453638ff103acfb655067ba15f5687ecd49c70723",
"settings": {
"alignment_policy": "ecc-translation-guards-v1",
"canonical_width": 768,
"comparison_context": null,
"engine_revision": "sha256:af00e69615847f5fbdbbb23c9edf742ae6d38fb785ab518ba658eb7e63498144",
"ignore_policy": "reference-boxes-per-image-modal-fill-v1",
"ignore_regions": [],
"mode": "widget",
"normalization_policy": "independent-width-modal-bottom-pad-v1",
"preset": "default",
"runtime_versions": {
"Pillow": "12.3.0",
"numpy": "2.5.1",
"opencv": "5.0.0",
"python": "3.13.7",
"scikit-image": "0.26.0",
"scikit-learn": "1.9.0",
"scipy": "1.18.0"
},
"weights": {
"color": 0.2,
"content": 0.15,
"layout": 0.35,
"spacing": 0.15,
"typography": 0.15
}
},
"version": 1
}
}
}



























