Figure composite · 3 photographs · frieze · 3 unit placements per side · 6 total · 8366×2048px · no AI — deterministic photographic composite · draft checks passed
Click the artwork for the full-resolution master. Below: how it was made, stage by stage.
What happened: 3 photographs fingerprinted, matched to the signed attestation, orientation-normalized, and stripped of private metadata.
Output: 3 protected working copies with fingerprints.
→
→
→
What happened: 3 figure groups cut from the black mirror with their real reflections; mirror lines detected for alignment.
Output: the recipe — mirror row (frieze) using DSCF0639.jpg, C77I0396.JPG, DSCF1298.jpg; 3 unit placements per side, 6 total (spacing 0.06, gap at axis 0.02, unit height 0.62).



What happened: source units were placed on the left half from the axis outward with mirror lines aligned, then the right half was produced as an exact mirror.
Output: the artwork above.


What happened: the artwork was checked automatically before anything was signed.
Output: all checks passed.
| ✓ | No close pHash match detected against the source photographs (closest distance 25; anything under 12 would fail this preliminary check) |
| ✓ | Image has real content (luminance spread 0.1053; under 0.04 would fail) |
| ✓ | Symmetry exact — the right half is a bit-exact mirror of the left |
| ✓ | Colour scheme stays within the photographs' own (artwork chroma 0.003 vs source 0.004; over 1.005 would fail) |
{
"near_copy": {
"distances": {
"C77I0396.JPG": 25,
"DSCF0212.jpg": 35,
"DSCF0639.jpg": 29,
"DSCF1298.jpg": 29,
"DSCF1988-2.jpg": 33,
"DSCF2382-2.JPG": 29,
"DSCF4196.jpg": 33,
"DSCF7531.JPG": 31
},
"min_distance": 25,
"passed": true,
"threshold": 12,
"note": "pHash only \u2014 add copy-detection embedding lane before production"
},
"blank": {
"luminance_std": 0.1053,
"passed": true,
"threshold": 0.04
},
"symmetry": {
"mirror_exact": true,
"passed": true,
"threshold": "bit-exact"
},
"color_scheme": {
"canvas_chroma_p99": 0.003,
"source_chroma_p99": 0.004,
"passed": true,
"threshold": 1.005
}
}What happened: the recipe, source fingerprints, every contribution, and the final hash were recorded in a manifest containing the signed artist attestation.
Output: a manifest and this offline verification report — DRAFT CHECKS PASSED.
artwork hash matches · development attestation signature valid · 3 of 3 photographs attested and contributing · no platform signature yet (dev run)
| assertion | level | detail |
|---|---|---|
| final_artifact_hash | cryptographically_verified | 54deef0451335f4363b0414861f91717a650f51f500b07f263cb0e19b3f3fd0c |
| artist_attestation | artist_attested | Ed25519 signature valid — manually witnessed ceremony, not institutional identity proofing |
| source_attested:figure | cryptographically_verified | 7204d42e9c965182 |
| source_attested:figure | cryptographically_verified | c6799ba1d425373e |
| source_attested:figure | cryptographically_verified | dfba5e11ff81d140 |
| source_file:figure | cryptographically_verified | DSCF1298.jpg |
| source_file:figure | cryptographically_verified | DSCF0639.jpg |
| source_file:figure | cryptographically_verified | C77I0396.JPG |
| source_contributes:7204d42e9c96 | cryptographically_verified | has material deterministic contribution |
| source_contributes:c6799ba1d425 | cryptographically_verified | has material deterministic contribution |
| source_contributes:dfba5e11ff81 | cryptographically_verified | has material deterministic contribution |
| contribution:figure | cryptographically_verified | op=figure_cutout_placement materiality={'affected_area_pct': 3.04, 'mean_delta': 0.2749} post_genera |
| contribution:figure | cryptographically_verified | op=figure_cutout_placement materiality={'affected_area_pct': 3.14, 'mean_delta': 0.1712} post_genera |
| contribution:figure | cryptographically_verified | op=figure_cutout_placement materiality={'affected_area_pct': 6.78, 'mean_delta': 0.2321} post_genera |
| platform_signature | not_collected | no platform signature in bundle (unsigned draft) |
program mirror_frieze v0.1.0 · family symmetry_guaranteed · assignment grammar · model none · output 8366×2048px · final sha256 54deef0451335f4363b0414861f91717a650f51f500b07f263cb0e19b3f3fd0c
| t | stage | op | tool | detail | |
|---|---|---|---|---|---|
| 0.0s | 1 · Ingest & Trust | sha256_original | hashlib (stdlib) | C77I0396.JPG → dfba5e11ff81d140… | |
| 0.0s | 1 · Ingest & Trust | attestation_check | Ed25519 (cryptography) | C77I0396.JPG: hash covered by signed attestation ✓ | |
| 0.1s | 1 · Ingest & Trust | perceptual_hash | imagehash (DCT pHash) | C77I0396.JPG → cc3333cecc393263 | |
| 0.6s | 1 · Ingest & Trust | normalize_working_copy | Pillow (exif_transpose · LANCZOS · PNG) | C77I0396.JPG → working_dfba5e11ff81.png (EXIF/GPS stripped, 1800px) sha 693b27fa39588848… | ![]() |
| 0.6s | 1 · Ingest & Trust | sha256_original | hashlib (stdlib) | DSCF0212.jpg → 32da524753227f13… | |
| 0.6s | 1 · Ingest & Trust | attestation_check | Ed25519 (cryptography) | DSCF0212.jpg: hash covered by signed attestation ✓ | |
| 0.7s | 1 · Ingest & Trust | perceptual_hash | imagehash (DCT pHash) | DSCF0212.jpg → ceb0317c98c7c63c | |
| 1.9s | 1 · Ingest & Trust | normalize_working_copy | Pillow (exif_transpose · LANCZOS · PNG) | DSCF0212.jpg → working_32da52475322.png (EXIF/GPS stripped, 1800px) sha d135301258988be5… | ![]() |
| 1.9s | 1 · Ingest & Trust | sha256_original | hashlib (stdlib) | DSCF0639.jpg → c6799ba1d425373e… | |
| 1.9s | 1 · Ingest & Trust | attestation_check | Ed25519 (cryptography) | DSCF0639.jpg: hash covered by signed attestation ✓ | |
| 2.1s | 1 · Ingest & Trust | perceptual_hash | imagehash (DCT pHash) | DSCF0639.jpg → cb6d3096c6593b2c | |
| 3.0s | 1 · Ingest & Trust | normalize_working_copy | Pillow (exif_transpose · LANCZOS · PNG) | DSCF0639.jpg → working_c6799ba1d425.png (EXIF/GPS stripped, 1800px) sha b61f7865ea99bd66… | ![]() |
| 3.0s | 1 · Ingest & Trust | sha256_original | hashlib (stdlib) | DSCF1298.jpg → 7204d42e9c965182… | |
| 3.0s | 1 · Ingest & Trust | attestation_check | Ed25519 (cryptography) | DSCF1298.jpg: hash covered by signed attestation ✓ | |
| 3.4s | 1 · Ingest & Trust | perceptual_hash | imagehash (DCT pHash) | DSCF1298.jpg → 8c3271ccb3916e67 | |
| 5.0s | 1 · Ingest & Trust | normalize_working_copy | Pillow (exif_transpose · LANCZOS · PNG) | DSCF1298.jpg → working_7204d42e9c96.png (EXIF/GPS stripped, 1800px) sha b337beb27392a715… | ![]() |
| 5.0s | 1 · Ingest & Trust | sha256_original | hashlib (stdlib) | DSCF1988-2.jpg → 47a9866d38f9cd9c… | |
| 5.0s | 1 · Ingest & Trust | attestation_check | Ed25519 (cryptography) | DSCF1988-2.jpg: hash covered by signed attestation ✓ | |
| 5.0s | 1 · Ingest & Trust | perceptual_hash | imagehash (DCT pHash) | DSCF1988-2.jpg → 8c93646cb36c27d3 | |
| 5.2s | 1 · Ingest & Trust | normalize_working_copy | Pillow (exif_transpose · LANCZOS · PNG) | DSCF1988-2.jpg → working_47a9866d38f9.png (EXIF/GPS stripped, 1800px) sha 3402109c240276b8… | ![]() |
| 5.2s | 1 · Ingest & Trust | sha256_original | hashlib (stdlib) | DSCF2382-2.JPG → 4db561142cf00a12… | |
| 5.2s | 1 · Ingest & Trust | attestation_check | Ed25519 (cryptography) | DSCF2382-2.JPG: hash covered by signed attestation ✓ | |
| 5.8s | 1 · Ingest & Trust | perceptual_hash | imagehash (DCT pHash) | DSCF2382-2.JPG → cce1e3e1c1e0e4e3 | |
| 6.9s | 1 · Ingest & Trust | normalize_working_copy | Pillow (exif_transpose · LANCZOS · PNG) | DSCF2382-2.JPG → working_4db561142cf0.png (EXIF/GPS stripped, 1800px) sha 1ff349f6b2d6d610… | ![]() |
| 6.9s | 1 · Ingest & Trust | sha256_original | hashlib (stdlib) | DSCF4196.jpg → 7394d814a5c78b82… | |
| 6.9s | 1 · Ingest & Trust | attestation_check | Ed25519 (cryptography) | DSCF4196.jpg: hash covered by signed attestation ✓ | |
| 7.4s | 1 · Ingest & Trust | perceptual_hash | imagehash (DCT pHash) | DSCF4196.jpg → c7b238878798b761 | |
| 8.9s | 1 · Ingest & Trust | normalize_working_copy | Pillow (exif_transpose · LANCZOS · PNG) | DSCF4196.jpg → working_7394d814a5c7.png (EXIF/GPS stripped, 1800px) sha 6438ef2e040be352… | ![]() |
| 8.9s | 1 · Ingest & Trust | sha256_original | hashlib (stdlib) | DSCF7531.JPG → a641e6f05271ccb7… | |
| 8.9s | 1 · Ingest & Trust | attestation_check | Ed25519 (cryptography) | DSCF7531.JPG: hash covered by signed attestation ✓ | |
| 9.0s | 1 · Ingest & Trust | perceptual_hash | imagehash (DCT pHash) | DSCF7531.JPG → 8f916c68b2368dcd | |
| 9.8s | 1 · Ingest & Trust | normalize_working_copy | Pillow (exif_transpose · LANCZOS · PNG) | DSCF7531.JPG → working_a641e6f05271.png (EXIF/GPS stripped, 1800px) sha 50cf52bb0081c6e8… | ![]() |
| 11.8s | 2 · Recipe | extract_figure_unit | figure.py (luminance ramp × component mask) | DSCF0212.jpg → unit 722×1285px, coverage 12.01%, waterline 0.7027 | ![]() |
| 13.0s | 2 · Recipe | extract_figure_unit | figure.py (luminance ramp × component mask) | DSCF1988-2.jpg → unit 629×1161px, coverage 13.64%, waterline 0.5099 | ![]() |
| 14.8s | 2 · Recipe | extract_figure_unit | figure.py (luminance ramp × component mask) | DSCF2382-2.JPG → unit 424×1494px, coverage 5.64%, waterline 0.51 | ![]() |
| 17.7s | 2 · Recipe | extract_figure_unit | figure.py (luminance ramp × component mask) | DSCF1298.jpg → unit 1412×1301px, coverage 15.34%, waterline 0.6257 | ![]() |
| 19.7s | 2 · Recipe | extract_figure_unit | figure.py (luminance ramp × component mask) | DSCF4196.jpg → unit 636×1370px, coverage 7.95%, waterline 0.5277 | ![]() |
| 21.1s | 2 · Recipe | extract_figure_unit | figure.py (luminance ramp × component mask) | DSCF7531.JPG → unit 619×1434px, coverage 13.68%, waterline 0.606 | ![]() |
| 23.6s | 2 · Recipe | extract_figure_unit | figure.py (luminance ramp × component mask) | DSCF0639.jpg → unit 1091×1336px, coverage 7.69%, waterline 0.4222 | ![]() |
| 25.2s | 2 · Recipe | extract_figure_unit | figure.py (luminance ramp × component mask) | C77I0396.JPG → unit 829×935px, coverage 5.76%, waterline 0.4877 | ![]() |
| 26.2s | 2 · Recipe | canonical_recipe | rfc8785 (JCS) · hashlib | pattern=frieze source_units=['DSCF0639.jpg', 'C77I0396.JPG', 'DSCF1298.jpg'] placements_per_half=3 · source chroma envelope p99 0.004 — stage 2 complete | |
| 29.3s | 3 · Compose | compose_half | figure.py (deterministic placement) | frieze: 3 unit placements on the fundamental domain, waterlines aligned | ![]() |
| 34.3s | 3 · Compose | mirror_complete | figure.py (NumPy concat) | right half = exact flip of left half | ![]() |
| 37.0s | 4 · Evaluate | deterministic_gate | gate.py (pHash · mirror-exact · luminance · LAB chroma) | PASS | |
| 37.0s | 5 · Provenance | manifest_written | rfc8785 · hashlib · pydantic | final sha 54deef0451335f43… → manifest.json | ![]() |
{
"manifest": {
"schema_version": "1.5.0",
"family": "symmetry_guaranteed",
"program": "mirror_frieze",
"program_version": "0.1.0",
"grammar": {
"pattern": "frieze",
"k": 3,
"spacing_frac": 0.06,
"axis_gap_frac": 0.02,
"fig_h_frac": 0.62,
"alternate": true,
"figure_order": [
"DSCF0639.jpg",
"C77I0396.JPG",
"DSCF1298.jpg"
]
},
"parent_works": [],
"symmetry_program_version": "0.1.0",
"recipe_sha256": "93793687e64b4103e0cafc963ba0634d76dd8aa64df33053020236f8377b9f0c",
"sources": [
{
"roles": [
"figure"
],
"original_sha256": "7204d42e9c965182c4e29be9d7a4c65d108058c699fc423ecdccf3804fe92443",
"working_copy_sha256": "b337beb27392a715927118bd178740e82c0f28cc8a8d65cd2536087f8847607d",
"asset_id": "7204d42e9c965182c4e29be9d7a4c65d108058c699fc423ecdccf3804fe92443",
"role_scores": {}
},
{
"roles": [
"figure"
],
"original_sha256": "c6799ba1d425373efae26267d23716ff8d30f80162b79b02249d6e645d1c58d7",
"working_copy_sha256": "b61f7865ea99bd668b9789a528ba0a0a435e9b9c4dd542a654c13c149c2cf651",
"asset_id": "c6799ba1d425373efae26267d23716ff8d30f80162b79b02249d6e645d1c58d7",
"role_scores": {}
},
{
"roles": [
"figure"
],
"original_sha256": "dfba5e11ff81d140e573da56c615980cc2b5380e54f4dbba093ddede7ebd2e67",
"working_copy_sha256": "693b27fa3958884836fc0db16653912346f6a5d8474f0c2f92ee4e27a375273d",
"asset_id": "dfba5e11ff81d140e573da56c615980cc2b5380e54f4dbba093ddede7ebd2e67",
"role_scores": {}
}
],
"contributions": [
{
"role": "figure",
"source_sha256": "c6799ba1d425373efae26267d23716ff8d30f80162b79b02249d6e645d1c58d7",
"tier": "deterministically_incorporated",
"artifact_sha256": "e569d9bcc6a437f8b833da5f476643292249e7f264f03b5c5ddb4c9685130069",
"op": "figure_cutout_placement",
"op_params": {
"pattern": "frieze",
"waterline": 0.4222,
"placement_count_per_half": 1,
"materiality_metric": "leave_one_source_out_mean_abs_rgb_delta"
},
"materiality": {
"affected_area_pct": 3.04,
"mean_delta": 0.2749
},
"post_generative": true,
"receipt_sha256": "not_collected"
},
{
"role": "figure",
"source_sha256": "dfba5e11ff81d140e573da56c615980cc2b5380e54f4dbba093ddede7ebd2e67",
"tier": "deterministically_incorporated",
"artifact_sha256": "6612a3d60489af1db56703516e33ffb26af5419dd5f2fe3f16a4268d3a77109c",
"op": "figure_cutout_placement",
"op_params": {
"pattern": "frieze",
"waterline": 0.4877,
"placement_count_per_half": 1,
"materiality_metric": "leave_one_source_out_mean_abs_rgb_delta"
},
"materiality": {
"affected_area_pct": 3.14,
"mean_delta": 0.1712
},
"post_generative": true,
"receipt_sha256": "not_collected"
},
{
"role": "figure",
"source_sha256": "7204d42e9c965182c4e29be9d7a4c65d108058c699fc423ecdccf3804fe92443",
"tier": "deterministically_incorporated",
"artifact_sha256": "25e243c4dc4000a54a5e36b75e6ce8bb18615d7fb6ede22edbf5671d931270c2",
"op": "figure_cutout_placement",
"op_params": {
"pattern": "frieze",
"waterline": 0.6257,
"placement_count_per_half": 1,
"materiality_metric": "leave_one_source_out_mean_abs_rgb_delta"
},
"materiality": {
"affected_area_pct": 6.78,
"mean_delta": 0.2321
},
"post_generative": true,
"receipt_sha256": "not_collected"
}
],
"model_calls": [],
"intermediate_sha256s": [
"d5f2b64e2ce683d77ddce3e5de71d49af8bd304fb726d6a55b790b08c1dcd9ac"
],
"evaluations": [
{
"evaluator": "deterministic",
"passed": true,
"checks": {
"near_copy": {
"distances": {
"C77I0396.JPG": 25,
"DSCF0212.jpg": 35,
"DSCF0639.jpg": 29,
"DSCF1298.jpg": 29,
"DSCF1988-2.jpg": 33,
"DSCF2382-2.JPG": 29,
"DSCF4196.jpg": 33,
"DSCF7531.JPG": 31
},
"min_distance": 25,
"passed": true,
"threshold": 12,
"note": "pHash only \u2014 add copy-detection embedding lane before production"
},
"blank": {
"luminance_std": 0.1053,
"passed": true,
"threshold": 0.04
},
"symmetry": {
"mirror_exact": true,
"passed": true,
"threshold": "bit-exact"
},
"color_scheme": {
"canvas_chroma_p99": 0.003,
"source_chroma_p99": 0.004,
"passed": true,
"threshold": 1.005
}
}
}
],
"human_approval": "not_collected",
"artist_attestation": {
"artist_pubkey_b64": "bGAayhjZWs4GhVnN4UThcVqmF5ZgaPkudAzZhm84j8c=",
"ceremony_ref": "NONE-DEV",
"payload_sha256": "8cc49ff357eaff8f5040056f4c1250c53597b9facc60c7f6b8ea5df2e32f1ca6",
"signature_b64": "ffN38I3DOucKBZauKHgbRrL7RVjPlC1tX1EZmBPa4IO8iALrUF8b04M/o3PaVj6rzw5o4oXuboTBtz420nrOBQ=="
},
"container_image_digest": "not_collected",
"final_master_sha256": "54deef0451335f4363b0414861f91717a650f51f500b07f263cb0e19b3f3fd0c",
"created_at": "2026-09-03T18:26:37+00:00"
},
"attestation_payload": {
"statement": "DEV-ONLY attestation for pipeline testing; no ceremony performed.",
"artist": "Dev Preview (unwitnessed)",
"source_sha256s": [
"dfba5e11ff81d140e573da56c615980cc2b5380e54f4dbba093ddede7ebd2e67",
"32da524753227f133dd07136c64c3c285fc823f418c4190e0a5188f0e708fa67",
"c6799ba1d425373efae26267d23716ff8d30f80162b79b02249d6e645d1c58d7",
"7204d42e9c965182c4e29be9d7a4c65d108058c699fc423ecdccf3804fe92443",
"47a9866d38f9cd9c9fa434a11d58aebcd45bdacf22c0a737ebc674f9cb415dd3",
"4db561142cf00a12a7b26cd98dbe58f372b28e1758de7e7d51f43bb3be8abd1a",
"7394d814a5c78b824b66898954efa4f564f2c0a150eb7eae76529a8244259146",
"a641e6f05271ccb73e04b269e3aeb574a7d49bdf2009790b78be8542143d74ea"
],
"source_names": [
"C77I0396.JPG",
"DSCF0212.jpg",
"DSCF0639.jpg",
"DSCF1298.jpg",
"DSCF1988-2.jpg",
"DSCF2382-2.JPG",
"DSCF4196.jpg",
"DSCF7531.JPG"
],
"attested_at": "2026-09-03T18:25:31+00:00",
"ceremony_ref": "NONE-DEV"
}
}