Add Legendary Moses card and production guidance

This commit is contained in:
2026-09-17 09:26:45 -07:00
parent ee0113442d
commit 5e49435127
514 changed files with 9974 additions and 13 deletions

View File

@@ -0,0 +1,16 @@
# BP-001 — Moses — v04
**The Threshold — continuous cloud/presence.** Astra medium direction; built-in targeted image edit from v03’s master. The cloud changes from golden circular cells to rising pearl/ivory layers with cool internal shadows and restrained warm edges. Pending user artwork review.
- `review/art-card-size.png`: 500×700 artwork review.
- `review/art-review.png`: 1000×1400 artwork review.
- `review/illustration-review.md`: visual assessment and tradeoffs.
- `review/source-validation.json`: source, fit and v03 preservation checks.
- `source/art-native.png`: unchanged generated output.
- `source/art-master.png`: fitted 2000×2800 illustration.
- `source/edit-prompt.txt`: exact targeted prompt.
- `source/edit-reference.jpg`: actual edit reference derived from v03 master.
- `source/generation.json`: source/provenance and hashes.
- `source/art-fit.json`: uniform fit record.
Reproduce review images with `python3 source/fit-art.py`; verify with `python3 source/validate-art.py`. Native-path input failed sandbox initialization, so the edit used the retained conversation-visible reference derived from v03 master. No new card assembly assets were generated; v03 remains unchanged.

View File

@@ -0,0 +1,27 @@
{
"cardId": "BP-001",
"title": "Moses",
"name": "MOSES",
"rarity": "Legendary",
"folderName": "BP-001-moses",
"artApproval": null,
"reference": "Deuteronomy 34:10",
"translation": "ESV",
"referenceDisplay": "Deuteronomy 34:10 \u2022 ESV",
"excerpt": "And there has not arisen a prophet since in Israel like Moses, whom the LORD knew face to face",
"direction": "The Threshold",
"artStatus": "Provisional v04 cloud/presence refinement awaiting review",
"layoutStatus": "Art-only v04 cloud refinement. Prior v03 provisional layouts are preserved in v03; no layout rebuilt for this revision.",
"sceneConstraints": [
"Outside the tent of meeting after speaking with the Lord; divine cloud by the tent; Israelite camp recedes behind.",
"Calm, holy, weight-bearing; reverent intimacy, solemn responsibility, quiet authority, sacred awe.",
"No Red Sea or Sinai action; these belong to event cards."
],
"compositionApproval": {
"by": "user",
"scope": "v01 composition only; visual rendering requested to change"
},
"revisionIntent": "Edit only the cloud/presence to read as a continuous atmospheric pillar, not golden bubbles; preserve v03 composition and glass style.",
"art": "in-progress/cards/BP-001-moses/revisions/v04/source/art-master.png",
"artSHA256": "da9624d7f5c897fbcaaada9774b2fa8c11db65288b7885040e17ad16a71d925e"
}

View File

@@ -0,0 +1,57 @@
{
"schemaVersion": 1,
"cardId": "BP-001",
"folderName": "BP-001-moses",
"revision": "v04",
"stage": "art-review",
"approval": null,
"content": "card.json",
"files": {
"README.md": {
"sha256": "311a75b80ae042313a8479d295715ea6a1d12406964aad89537dc0b1d1ce0e1f"
},
"card.json": {
"sha256": "e10b36169c7e5c682c5e8741ee05340e8250fa3ff5d961f53546a28eb9fbc1f7"
},
"source/art-fit.json": {
"sha256": "c945ae1717313d1f83f94e7ddd563c05c63529fe3b0dd0d4e76f4d99f0bf2d0f"
},
"source/art-master.png": {
"sha256": "da9624d7f5c897fbcaaada9774b2fa8c11db65288b7885040e17ad16a71d925e"
},
"source/art-native.png": {
"sha256": "36f6b3ab7360b7e3d8eaf93ce1dd9edd259dfc77424ca1ef4ac729cfa126ade6"
},
"source/edit-prompt.txt": {
"sha256": "bd590461332bf9afec442d46ebef829978a64fd51c1a76074b140bd177cd56d9"
},
"source/edit-reference.jpg": {
"sha256": "29abc4ff23b6badc4a321b067735a4bed2eb31666759e4d12a35e4bdde69fcaa"
},
"source/fit-art.py": {
"sha256": "ae5418915f2bcfb464714b1898a9fdfa86e4117f2de226a01260be1fd841c611"
},
"source/generation.json": {
"sha256": "f6b2c5d8158aa8ef03544cf61eae75e4f4f120bf7f330e2b813f014a612a2c2a"
},
"source/prior-revision-hashes.json": {
"sha256": "435f9b4a7af82e53bec288fc74f7853e2cf4039b3509e4f5a6fcbf9e4a0df9b8"
},
"source/refinement.md": {
"sha256": "685f8e1f1875caa43fa9d1267835d096b02aa83ced550a28e8fa387fc3cd2c2e"
},
"source/validate-art.py": {
"sha256": "d6ccbe387f1dc91eac5b4c1753cdc0d475f34527530a915c68c6905dc07bd6a3"
},
"low/manifest.json": {
"sha256": "c6b4ddddd22832e4ea6e2201c12a90cf4a7a1d25594b5878f12c23f22987261b"
},
"med/manifest.json": {
"sha256": "e9cd197e91ccc2477ec18ccd62d903a29b166bc23b431dad8aa25ca60ef59ac6"
},
"high/manifest.json": {
"sha256": "7ec683bc1aaf3a6c3d941a9011c97c5681bd1f18a21a1ea359745f092bcf2b6a"
}
},
"compatibilityAliases": []
}

View File

@@ -0,0 +1,17 @@
{
"schemaVersion": 1,
"kind": "compact-card-revision",
"cardId": "BP-001",
"folderName": "BP-001-moses",
"revision": "v04",
"originalStage": "art-review",
"approval": null,
"reason": "superseded when v05 was accepted",
"originalManifest": "full-manifest.json",
"originalManifestSHA256": "c054d46d8ac354ee24170b42301e3698056a70f385be2cb2386e6f2f461fc78a",
"referenceResolution": "low",
"referenceImages": [
"review/art-reference.png"
],
"retention": "Text provenance plus one 500 x 700 card face per available printing; full current acceptance lives in artifacts/cards."
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 KiB

View File

@@ -0,0 +1,13 @@
# Moses v04 — cloud/presence review
**Art-review, not approved.** Astra medium directed a targeted built-in edit from the v03 master. Inspected the generated full image and saved 500×700 card-size artwork.
The bubble/orb reading is substantially reduced. The cloud is now an upward-connected atmospheric column made of irregular overlapping billows, elongated pale channels and cool blue-gray/lavender folds. Pearl and ivory occupy most of the body; warm champagne light sits along selected edges. The column continues above the tent roof and exits the upper edge, clarifying its vertical continuity. No literal divine figure appears.
The cloud retains stained-glass boundaries and pane-contained worked texture rather than becoming photographic vapor. Leading inside the cloud is gentler than the main structural outlines. Nested circular cells have largely been replaced by extended forms. Some rounded scalloped billow edges remain, especially above the roof, but they now join continuous layers rather than closed golden orbs. At card size the cool internal shadows make the cloud read as one luminous presence. Its visual luminosity is calmer and less gold-dominant than v03.
Moses’s face, lowered gaze, pose, stylized beard, folded hands, robe trim and silhouette appear preserved. Tent supports, entrance geometry, attached curtain/hem and camp remain visually stable. Generative editing can shift small details; non-cloud pixel identity is not claimed. The edit slightly expands some upper cloud contours and changes internal density within the original general footprint. Curtain-overlap feasibility is retained.
Tradeoff: the new cloud has broader, softer internal divisions and somewhat less small-pane intricacy than v03’s circular construction. This is useful for atmospheric continuity but should be judged with the user before any later assembly. No mask can substitute for this illustration decision.
No new card frame, backing, lettering, printing, finish mask or runtime fixture was generated. Existing v03 files were hash-checked unchanged. Source validation verifies native/master hashes, RGB dimensions and byte-identical deterministic fitting/review exports; it does not certify final card composition or GPU behavior.

View File

@@ -0,0 +1,28 @@
{
"status": "pass",
"scope": "Art source/fit/review only; no card assembly or material validation",
"priorRevision": "v03",
"priorFilesUnchanged": 200,
"nativeSourceHashVerified": true,
"masterHashVerified": true,
"reviewDimensions": {
"source/art-master.png": [
2000,
2800
],
"review/art-review.png": [
1000,
1400
],
"review/art-card-size.png": [
500,
700
],
"review/art-thumbnail.png": [
250,
350
]
},
"repeatableFitAndReviews": true,
"nonCloudPixelIdentity": "Not claimed; visually reviewed generative edit"
}

View File

@@ -0,0 +1,24 @@
{
"source": "art-native.png",
"sourceDimensions": [
1060,
1484
],
"canvas": [
2000,
2800
],
"method": "uniform centered cover fit",
"scale": 1.8867924528301887,
"scaledDimensions": [
2000.0,
2800.0
],
"cropOffset": [
0.0,
0.0
],
"resampling": "Pillow LANCZOS",
"sourceSHA256": "36f6b3ab7360b7e3d8eaf93ce1dd9edd259dfc77424ca1ef4ac729cfa126ade6",
"outputSHA256": "da9624d7f5c897fbcaaada9774b2fa8c11db65288b7885040e17ad16a71d925e"
}

View File

@@ -0,0 +1,11 @@
Use case: precise-object-edit
Asset type: Moses Legendary BP-001 v04 full-bleed illustration.
Edit target: the supplied v03 Moses art. Change ONLY the divine cloud/presence, currently the column of bright gold circular/scalloped shapes within the tent doorway at left and its connected continuation above the sloping tent roof. Preserve everything outside that cloud as closely as possible.
Problem to fix: the existing cloud reads as stacked golden bubbles, coins or glowing orbs instead of the divine Presence. Redesign it unmistakably as ONE continuous atmospheric pillar of cloud, rising from the threshold through the doorway and continuing upward beyond the roof and top edge.
New cloud design: irregular layered billows connected by long drifting, rising forms. Tall overlapping ivory and pearl ribbons of vapor, broad asymmetric bulges, slender branching wisps and elongated interlocking shapes. Varied scale and direction within a coherent upward movement. The overall existing cloud footprint stays in its current position beside Moses and behind the unchanged tent structure, but inside that footprint replace ALL repeated circles, nested rings, regular scallops and stacks of rounded cells. Its structure should resemble a continuous rising cloud bank, not beadwork, rosettes, cotton balls or discrete objects. Keep a luminous pearl/ivory body with clearly visible cool blue-gray and subtle lavender inner folds/shadows. Restrained pale champagne and warm gold only as thin localized illuminated rims or selected warm edges, NOT solid gold cloud bodies. Sacred radiance and atmospheric depth through color hierarchy inside bounded glass shapes, not neon or realistic smoke. Keep the cloud brighter than its cool internal shadows but do not make every cell glow as an individual light bulb.
Medium: exactly the established richly crafted stained-glass language. Meaningful lead divisions trace sweeping vapor layers and irregular atmospheric forms; thinner secondary leading selectively articulates the long cloud shapes. Large quiet panes mixed with a few intricate smaller shapes, pane-contained brushed/etched glass texture and subtle translucent color shifts. Glass construction stays visible. No photographic cloud pasted into the image, no vague airbrushed fog, no random cracks, no uniform tiny tessellation. Preserve the current Legendary intricacy in the rest of the art.
Strict invariants: Moses's face, expression, head angle, broad stylized skin planes, beard, hair, pose, folded hands and anatomy, robes and trim are unchanged. Tent poles, sloping roof/lintel, dark entrance geometry, attached burgundy curtain, its complete patterned hem and connection to the tent remain unchanged. Preserve camp, people, animal, vegetation, terrain, mountains, sky outside the specific cloud, framing, scale, palette and all existing non-cloud detail. Do not add props, symbols or other figures. Preserve 5:7 aspect and full-bleed art. No lettering, card frame, backing, watermark, literal divine figure or face, halo, lightning, particles or orbs.

View File

@@ -0,0 +1,16 @@
#!/usr/bin/env python3
"""Reproduce only the fitted art and review sizes; never assemble a card."""
from pathlib import Path
from PIL import Image, ImageOps
import hashlib,json
root=Path(__file__).resolve().parent.parent
native=root/'source/art-native.png'
with Image.open(native) as source:
im=source.convert('RGB');w,h=im.size
scale=max(2000/w,2800/h)
art=ImageOps.fit(im,(2000,2800),Image.Resampling.LANCZOS,centering=(.5,.5))
art.save(root/'source/art-master.png')
for name,size in [('art-review.png',(1000,1400)),('art-card-size.png',(500,700)),('art-thumbnail.png',(250,350))]:
art.resize(size,Image.Resampling.LANCZOS).save(root/'review'/name)
fit={'source':'art-native.png','sourceDimensions':[w,h],'canvas':[2000,2800],'method':'uniform centered cover fit','scale':scale,'scaledDimensions':[w*scale,h*scale],'cropOffset':[(w*scale-2000)/2,(h*scale-2800)/2],'resampling':'Pillow LANCZOS','sourceSHA256':hashlib.sha256(native.read_bytes()).hexdigest(),'outputSHA256':hashlib.sha256((root/'source/art-master.png').read_bytes()).hexdigest()}
(root/'source/art-fit.json').write_text(json.dumps(fit,indent=2)+'\n')

View File

@@ -0,0 +1,17 @@
{
"mode": "built-in imagegen edit",
"artDirectionModel": "gpt-6-astra",
"artDirectionReasoning": "medium",
"prompt": "edit-prompt.txt",
"native": "art-native.png",
"originalGeneratedPath": "/home/dkzver/.codex/generated_images/01a0acd6-0b11-7932-a7f3-c69f609e9974/exec-51715a57-b0ec-4350-b0dc-24a69fb429d8.png",
"reference": "edit-reference.jpg",
"referenceSHA256": "29abc4ff23b6badc4a321b067735a4bed2eb31666759e4d12a35e4bdde69fcaa",
"referenceProvenance": "1000x1400 JPEG quality 93 derived from v03 source/art-master.png and shown in conversation. Native-path image reference failed sandbox initialization; successful edit used num_last_images_to_include=1.",
"priorMaster": "../../v03/source/art-master.png",
"priorMasterSHA256": "73f933cf34719dfda09b719376948bcf072bec504a88329b5a22e4ac1ed76d85",
"fit": "art-fit.json",
"scope": "Cloud/presence region only requested; non-cloud preservation assessed visually, not asserted pixel-identical.",
"generationReproducibility": "Stochastic targeted edit; exact prompt, displayed reference and native bytes retained; deterministic fit and review sizing.",
"approval": null
}

View File

@@ -0,0 +1,202 @@
{
"README.md": "d8174612d3d3455ad9a5ff972cba19908df343bab5d9a15d25f641be1f8fbef2",
"card.json": "5aeddc9b7ad2412cf7d5785fa728e3158926c059fc3819e6259d273663a47335",
"high/manifest.json": "7ec683bc1aaf3a6c3d941a9011c97c5681bd1f18a21a1ea359745f092bcf2b6a",
"low/manifest.json": "c6b4ddddd22832e4ea6e2201c12a90cf4a7a1d25594b5878f12c23f22987261b",
"manifest.json": "b0b5443349cab2bdc9705aa388e45565ab60ed467d4c134f936b87bd274d0029",
"med/manifest.json": "e9cd197e91ccc2477ec18ccd62d903a29b166bc23b431dad8aa25ca60ef59ac6",
"review/art-review.png": "395f2e1fb10fe749bb9424aac0e043616dcfe42f3f6448aa2db7fd543c160cc9",
"review/art-thumbnail.png": "680317bf953d5f3b984e85c968388d03f710e0d82dd02a9cc1a815b7b769b38a",
"review/illustration-review.md": "c1399a3838afa2db0d0ce83940f56e365509df5c2eb81c35a166467821fa9ca7",
"review/layout-preview-astra-v3/README.md": "032739b971442f011bfb494be3481db906607e73899854c29d71a8f24b072018",
"review/layout-preview-astra-v3/border-backing-preview.png": "0c7960dbf90c534c10921b1234e84f55640f0f58a5ce528e15e174d51932f32e",
"review/layout-preview-astra-v3/border-backing-preview.svg": "0bf3c3be6e26ac656f5dff652d79c65d8b410dc19a03dba047c8b51da6167f9c",
"review/layout-preview-astra-v3/build-preview.py": "9026f5e67e1264f3e6d819ab0c9b4f613394f8d8ab327b5c3f3c9fb4e7099aa4",
"review/layout-preview-astra-v3/cloud-interaction-detail.png": "2f27955d889e1d102b4c8681a206e8bfd2b61e66c12e34d0b36dd605558399aa",
"review/layout-preview-astra-v3/composed-preview-1000.png": "1e0a21d705b43b1fdc8eeff36d01bef39b2ae074b98b0a4610cf30ef023df3c0",
"review/layout-preview-astra-v3/composed-preview-2000.png": "15dcac4fc1bee145de7ae2b4d3fc8c95b771720a40fd8b766419d13f687aa836",
"review/layout-preview-astra-v3/composed-preview-500.png": "35ec98353db0e2607637bdd3929fad6b0818f7ce4a54e1400caf21f569112378",
"review/layout-preview-astra-v3/composed-preview.svg": "3abac9c5f7e3bf9c9906bf7a654a989739fbc01fbfe27f4ce4707a31ed5d441b",
"review/layout-preview-astra-v3/curtain-comparison.png": "223c294bc572e53f4ddc95266a945cc4a471c0c1e88cb6f2fa2cf50af4b6f631",
"review/layout-preview-astra-v3/curtain-junction-detail.png": "6fae788bca47afb0cbdaf52b76f269c14e8190bdd05ae5fd9020a19b84831633",
"review/layout-preview-astra-v3/font-cache/037d20e60be746631d2b233d68ab4a1a-le64.cache-9": "464a2950361202013d83f869f3513422735df1d8e76f05a8ae4c2b0697091130",
"review/layout-preview-astra-v3/font-cache/0e14d11dfa32bcd8ea4cd43b2e352131-le64.cache-9": "0a387174a7a8c5be94a53f86e5789c77da44d9700bad89aba12d090c8a64697c",
"review/layout-preview-astra-v3/font-cache/a46a90b3114f4679f37745d4a8f3e608-le64.cache-9": "dec2022698647dc7bfd7f5354bc086c407992f4bc4ba0081d88ef03b55572264",
"review/layout-preview-astra-v3/font-cache/f53da1bd49ea03cb387bf10765c2bba8-le64.cache-9": "f7c8c19ff02b7c463e758031944bc3777bc86aa8ed2cd961e9b27d4ec295a260",
"review/layout-preview-astra-v3/fonts.conf": "64384d173deefb1043c4d62cbff3dec729d57e5066fbf21923148477340b3a6d",
"review/layout-preview-astra-v3/foreground-curtain.png": "1bcb6335dc4ce58f7be024595dcb4e95a636f00bbe49e8484a77753529d1c542",
"review/layout-preview-astra-v3/foreground-curtain.svg": "ce49f4db7c621484ca7659057fa8c82d9af2aae9fffc79e47525b6c45cfe3ba3",
"review/layout-preview-astra-v3/preview-validation.json": "2af1b6de742a24783e5d14ab673da748a502de871532077517897c43859a163c",
"review/layout-preview-astra-v3/reference-ink.png": "ad1d595d08725d0ea31e09d25b6b8084581fb10a9baca170fcb2b4b9c6c8579f",
"review/layout-preview-astra-v3/reference-ink.svg": "362bd19e588158d2e67ac3d9adb6ed5ff2b4e7cd64e9809c1d52af6d1bdaa41a",
"review/layout-preview-astra-v3/text-preview.png": "f2bde9899bf80b2a904dfad69cacca55070110db348b8664e428bf52152b8c45",
"review/layout-preview-astra-v3/text-preview.svg": "51f3a5f2bfed5f8ee6fdede5818a8f0d7afa954773ade715d38252bf37a746e0",
"review/layout-preview-astra-v3/title-ink.png": "cb0d3620a82d28fd50970e6bbba5be4318db418b2578c61c9209fcb655f060aa",
"review/layout-preview-astra-v3/title-ink.svg": "27d03213b219942a2800cba962d320c99b3ae9c8e91523587ff4ce95b45beaee",
"review/layout-preview-astra-v3/v2-v3-comparison.png": "262f8ae4004f9e4c85f7612a0c05802723451640608b07dc70e58ccddc19344e",
"review/layout-preview-astra-v3/verse-0-ink.png": "52691dbf58024400d4c9b833b5462fead3e591bfe42f5d6b4724899948837989",
"review/layout-preview-astra-v3/verse-0-ink.svg": "5f765f4a3737357d1dc729765c605156d25db7b2e61db41662a3973e6114c850",
"review/layout-preview-astra-v3/verse-1-ink.png": "8e2ea55c3dc5abede57b7e0b08c6687ff092d65763676ff28561fe9070c5ce2d",
"review/layout-preview-astra-v3/verse-1-ink.svg": "35fbf3657b3e2843bd590b66d8465eb6d2668f48603c28fcabb035e293cf1d33",
"review/layout-preview-astra-v3/verse-2-ink.png": "ea5aacebd89f9c6dd9fe75da842a362a64b2dbdaba3d833e86458fd81ae34f4a",
"review/layout-preview-astra-v3/verse-2-ink.svg": "0db7333d35aeb8c428f08b126dd8e0f8b7c4f963f39a2176dc6015081d4f3782",
"review/layout-preview-astra-v3/without-curtain-1000.png": "a42b0eada050563e56395f891b6dd3517b595223450f963c8e472d0ce16f1f44",
"review/layout-preview-astra-v3/without-curtain-2000.png": "6af2d52a3a2dc6bae5a2731b90b4f10221a26745f608beb30f25b01237f5beec",
"review/layout-preview-astra-v3/without-curtain-500.png": "cc157de6537e7a9055330c0a4d391c59d2b0924c1ff94061d69cf68a989953bc",
"review/layout-preview-astra-v3/without-curtain.svg": "fbd8c3598c547950c08730d52ef9d6b9f4af0f6107be121252001c47a4e896b0",
"review/layout-preview-astra-v4/README.md": "01b3499895bcb9c7a459ea47c5d7900d1d0eb7ced43764607cca4914690e9da6",
"review/layout-preview-astra-v4/border-backing-preview.png": "0c7960dbf90c534c10921b1234e84f55640f0f58a5ce528e15e174d51932f32e",
"review/layout-preview-astra-v4/border-backing-preview.svg": "ae3fcf414b48023dab4f12617c979ca85aeb6b453193697be1ac358867e8aa07",
"review/layout-preview-astra-v4/build-preview.py": "5720b67bc0a41ecc7be3e214e047764c6dca83ee2299c67f03d9e4709591cc4d",
"review/layout-preview-astra-v4/cloud-interaction-detail.png": "e4fd42aa95a28b4757d12449875cbae9cbf38d86810f3605390db308ec2026b1",
"review/layout-preview-astra-v4/composed-preview-1000.png": "5985c8945a053d76c6db9ce61d609eac8cd4c5610b2f8026809eb15bf6827828",
"review/layout-preview-astra-v4/composed-preview-2000.png": "e8cdec18a358f38a806cb83fb3042c1dba77a559701be2bf5bc07f1ea7414796",
"review/layout-preview-astra-v4/composed-preview-500.png": "f59509cec2b7d1ec6a60524af91f9d01505ca0a83ef12cf5760e7761d4b4c9a8",
"review/layout-preview-astra-v4/composed-preview.svg": "6ed89a3482798afbb4c1853584d4e2412d7efded7be05d5523f24835e6087826",
"review/layout-preview-astra-v4/curtain-comparison.png": "e7ceedf10c580ffc2779e5d752b74a306bb507931abead6d1d7fed5d9842b4a9",
"review/layout-preview-astra-v4/curtain-junction-detail.png": "7eb2eac11828069aee08df7a961fa7bf600256d931d199a6ff5055f076ec1d15",
"review/layout-preview-astra-v4/font-cache/037d20e60be746631d2b233d68ab4a1a-le64.cache-9": "464a2950361202013d83f869f3513422735df1d8e76f05a8ae4c2b0697091130",
"review/layout-preview-astra-v4/font-cache/0e14d11dfa32bcd8ea4cd43b2e352131-le64.cache-9": "0a387174a7a8c5be94a53f86e5789c77da44d9700bad89aba12d090c8a64697c",
"review/layout-preview-astra-v4/font-cache/a46a90b3114f4679f37745d4a8f3e608-le64.cache-9": "dec2022698647dc7bfd7f5354bc086c407992f4bc4ba0081d88ef03b55572264",
"review/layout-preview-astra-v4/font-cache/f53da1bd49ea03cb387bf10765c2bba8-le64.cache-9": "f7c8c19ff02b7c463e758031944bc3777bc86aa8ed2cd961e9b27d4ec295a260",
"review/layout-preview-astra-v4/fonts.conf": "3fecf336cb50d58261a01704b80ca2ebb0c26c9f5546ae7ef42c5a5139b1df1b",
"review/layout-preview-astra-v4/foreground-curtain.png": "9a2d9420dadf534d1e989997ae733a425e226a108ca63d6bad593e0de37f506d",
"review/layout-preview-astra-v4/foreground-curtain.svg": "c19142d4c8b2f5faed75a9d3260a2755f7609b01b190c48ad91672447e07c6ae",
"review/layout-preview-astra-v4/preview-validation.json": "9c154dd52ea9e5900c490415eadbe0d5296c1f5ae1531fd91cc4bc56cd15b1c8",
"review/layout-preview-astra-v4/reference-ink.png": "ad1d595d08725d0ea31e09d25b6b8084581fb10a9baca170fcb2b4b9c6c8579f",
"review/layout-preview-astra-v4/reference-ink.svg": "362bd19e588158d2e67ac3d9adb6ed5ff2b4e7cd64e9809c1d52af6d1bdaa41a",
"review/layout-preview-astra-v4/text-preview.png": "f2bde9899bf80b2a904dfad69cacca55070110db348b8664e428bf52152b8c45",
"review/layout-preview-astra-v4/text-preview.svg": "51f3a5f2bfed5f8ee6fdede5818a8f0d7afa954773ade715d38252bf37a746e0",
"review/layout-preview-astra-v4/title-ink.png": "cb0d3620a82d28fd50970e6bbba5be4318db418b2578c61c9209fcb655f060aa",
"review/layout-preview-astra-v4/title-ink.svg": "27d03213b219942a2800cba962d320c99b3ae9c8e91523587ff4ce95b45beaee",
"review/layout-preview-astra-v4/v3-v4-comparison.png": "165f5f255c83a5675958ef42731d3d07257e7a410efd45487dc27fad4af4fd40",
"review/layout-preview-astra-v4/v3-v4-junction-comparison.png": "68c6733de075d7b8af7f32fc70c63b705c3f9aff7db95925f3962758c65c70b1",
"review/layout-preview-astra-v4/verse-0-ink.png": "52691dbf58024400d4c9b833b5462fead3e591bfe42f5d6b4724899948837989",
"review/layout-preview-astra-v4/verse-0-ink.svg": "5f765f4a3737357d1dc729765c605156d25db7b2e61db41662a3973e6114c850",
"review/layout-preview-astra-v4/verse-1-ink.png": "8e2ea55c3dc5abede57b7e0b08c6687ff092d65763676ff28561fe9070c5ce2d",
"review/layout-preview-astra-v4/verse-1-ink.svg": "35fbf3657b3e2843bd590b66d8465eb6d2668f48603c28fcabb035e293cf1d33",
"review/layout-preview-astra-v4/verse-2-ink.png": "ea5aacebd89f9c6dd9fe75da842a362a64b2dbdaba3d833e86458fd81ae34f4a",
"review/layout-preview-astra-v4/verse-2-ink.svg": "0db7333d35aeb8c428f08b126dd8e0f8b7c4f963f39a2176dc6015081d4f3782",
"review/layout-preview-astra-v4/without-curtain-1000.png": "0d9792bcd074971f9c6e8e9d43ba62e0dc949dc91cae67b267439745fb321591",
"review/layout-preview-astra-v4/without-curtain-2000.png": "d1411a9b2edee91c8dcaeda10caf39bc45a245d478fa864b30f8a803d857cc09",
"review/layout-preview-astra-v4/without-curtain-500.png": "59502b9428e4f67a23c2fbc67229506d1bacb42864427a0d31a0dcf9ee40d383",
"review/layout-preview-astra-v4/without-curtain.svg": "494c942badd2b07f82fd68b33583982cb9a37b64d14c483d551c075f0900811b",
"review/layout-preview-astra-v5/README.md": "834ae192edcefb960d2ce1a955237faca4460ee39480131317d6911f15544858",
"review/layout-preview-astra-v5/border-backing-preview.png": "81d1982f18068c2d37d6b526ba91e2752729f2fea2254a787167bd88987c5616",
"review/layout-preview-astra-v5/border-backing-preview.svg": "9bdc25e80a6f3a4e0a38f0e18210f47bbc33daee90c66614b7339ce94f42dcc9",
"review/layout-preview-astra-v5/build-preview.py": "1e3127478ece35df94f04192323482d30a94290ed00028016645c6d3fea756a5",
"review/layout-preview-astra-v5/cloud-interaction-detail.png": "1b0f7e17cd650dffb2680084de454f46106be8fd522884019b623ba25949ec35",
"review/layout-preview-astra-v5/composed-preview-1000.png": "51cf1312f7613a8fe32952204e28eb0d41a73cc20c134d83d5b138e03c9914e3",
"review/layout-preview-astra-v5/composed-preview-2000.png": "e81cedd0d1df161a40d65f916724c0c3e852f990618159b2888f4731d3b3e4ef",
"review/layout-preview-astra-v5/composed-preview-500.png": "057b7ae9140005e88619711a026987ef7b48f865b73c550b083172666ea965d9",
"review/layout-preview-astra-v5/composed-preview.svg": "31ede5888735f11024d362fb79b9d622b3dec3fec470054d8e595ee407217298",
"review/layout-preview-astra-v5/curtain-comparison.png": "4fd017872d0f4cd03cccc2ddb1a66c9f1815c3454a581c33a9bf9cc9d7a22581",
"review/layout-preview-astra-v5/curtain-junction-detail.png": "29d02965d7d3fe78e0558c8746c1c509bd1e078ba0febe38dcd38915147da97a",
"review/layout-preview-astra-v5/font-cache/037d20e60be746631d2b233d68ab4a1a-le64.cache-9": "464a2950361202013d83f869f3513422735df1d8e76f05a8ae4c2b0697091130",
"review/layout-preview-astra-v5/font-cache/0e14d11dfa32bcd8ea4cd43b2e352131-le64.cache-9": "0a387174a7a8c5be94a53f86e5789c77da44d9700bad89aba12d090c8a64697c",
"review/layout-preview-astra-v5/font-cache/a46a90b3114f4679f37745d4a8f3e608-le64.cache-9": "dec2022698647dc7bfd7f5354bc086c407992f4bc4ba0081d88ef03b55572264",
"review/layout-preview-astra-v5/font-cache/f53da1bd49ea03cb387bf10765c2bba8-le64.cache-9": "f7c8c19ff02b7c463e758031944bc3777bc86aa8ed2cd961e9b27d4ec295a260",
"review/layout-preview-astra-v5/fonts.conf": "a405d10a74b35906d3fd8f997eef6c9f527b9630bf88b5c9594a9bf862ff1aba",
"review/layout-preview-astra-v5/foreground-curtain.png": "a69131c4ea105e610faff03a57ad7804f2eac420c03ac36c5cf4609d419bfd03",
"review/layout-preview-astra-v5/foreground-curtain.svg": "36d5b8255928e61b714e0821942ab710240969fa2c6cf306eac6545ed79dcc46",
"review/layout-preview-astra-v5/preview-validation.json": "9819289bf141bc108f0324717e0734168ae5104a77046567e4eada61d80f5666",
"review/layout-preview-astra-v5/reference-ink.png": "56513923c9aa8b2ca2617379999a43561c6b05a1aa4f42914ec0487d544fa743",
"review/layout-preview-astra-v5/reference-ink.svg": "6c2059d51c08679342ccde8db143c4a8cd68f4122b7b5a3781b4f0fac1490a38",
"review/layout-preview-astra-v5/text-preview.png": "ad5b99d82439d547dcc7d06a74e9431ddac40050ae1e820e9858eb4a2314e2e8",
"review/layout-preview-astra-v5/text-preview.svg": "ddfadbe9dc5f0e671a6856669315f245e8ba23f992347bad90f44d580d27c91c",
"review/layout-preview-astra-v5/title-ink.png": "cb0d3620a82d28fd50970e6bbba5be4318db418b2578c61c9209fcb655f060aa",
"review/layout-preview-astra-v5/title-ink.svg": "27d03213b219942a2800cba962d320c99b3ae9c8e91523587ff4ce95b45beaee",
"review/layout-preview-astra-v5/v4-v5-comparison.png": "e48166e93a2d23eb10f81e1cb87cab4c5766cfdbc09cf19050e61adb92ac59a1",
"review/layout-preview-astra-v5/v4-v5-junction-comparison.png": "d576298f859992ff6d1c38da14cbe653000313dacc28110aa7c36d0933462138",
"review/layout-preview-astra-v5/verse-0-ink.png": "ca240a715a006a87f40deef69a6de0c6e27e2f9a662b7971b5a8ee944062fba2",
"review/layout-preview-astra-v5/verse-0-ink.svg": "f00584994b39ebec0a04aedbe456aa9cd0ea283e0924ca280f9995bb803f4956",
"review/layout-preview-astra-v5/verse-1-ink.png": "ac92560704c2fdfdfe3194b3f390b5a91c68cc4db67e5396a9acf1286881eacd",
"review/layout-preview-astra-v5/verse-1-ink.svg": "191433d0459bced61d9d8e08345b76614e2b6ea4544bed1b19cc7a2257746daa",
"review/layout-preview-astra-v5/verse-2-ink.png": "b86f7608a18900abd66b95c4019969ce851439fd6699d9f579676d731b7e3a26",
"review/layout-preview-astra-v5/verse-2-ink.svg": "2cca7b142219050f36f8c3e3250b64e9bc30edfa7afb62c5eff2cd135e64457a",
"review/layout-preview-astra-v5/without-curtain-1000.png": "4db949f4d5a1ea8b56aa9dca27e2d1e038b0b175d3342d6ae88c70bb0d3f1620",
"review/layout-preview-astra-v5/without-curtain-2000.png": "a063b89297b6f6e1e4cf013b716125b97086e25d4e6a6d609be275f57faeed50",
"review/layout-preview-astra-v5/without-curtain-500.png": "0a2351848de37ba4b90a9e75fcc17d49bfc9a60e18d03a0b001c704cf9e7e4a2",
"review/layout-preview-astra-v5/without-curtain.svg": "1d890b8c2a75c2ce81572e397b3c1496ee802394f96810c652e7bbf7f39c554c",
"review/layout-preview-v1/README.md": "dd84b5f63ffedb84d0cad5b242a9d945b550e81df82bb4a71675cfbecf0495c1",
"review/layout-preview-v1/border-backing-preview.png": "5c335ab3425888f729f19608faf5909561a7c2087d1166a29b7fb6236aa7a9b1",
"review/layout-preview-v1/border-backing-preview.svg": "931e130a798a33be35a38752fcfea0f8c899e25bcafb9a40251497dc3c39fe30",
"review/layout-preview-v1/build-preview.py": "02c8b7b48caf63a6e6b06d0c67e5b0441c583beeda2d85ad30c349a729f86f5e",
"review/layout-preview-v1/composed-preview-1000.png": "30ac9768afe4b5839e894f478804da9957c5a3ab48c9263a4428da4edbd7a730",
"review/layout-preview-v1/composed-preview-2000.png": "0304b7d3d2bca3046b45d391d1093d150a4196bcf7d31552b0315f18621fa2fd",
"review/layout-preview-v1/composed-preview-500.png": "0e04b5d39270302c710c6d1ccdf99d51f2008c8c29f8b5ec29abb92e64e38907",
"review/layout-preview-v1/composed-preview.svg": "4797dd28f1330e5255ed53d9338ad4614d1a28bd1f5cc5268660482f95856d3f",
"review/layout-preview-v1/curtain-comparison.png": "870ff517d3f7a03f6ac29535add0bd814d019238c495d174b2edfa314bf8e47b",
"review/layout-preview-v1/curtain-junction-detail.png": "e699ad7f48542c076f9ba4636c38ad7df47582887835b1a1fa13f5277f87d322",
"review/layout-preview-v1/font-cache/037d20e60be746631d2b233d68ab4a1a-le64.cache-9": "464a2950361202013d83f869f3513422735df1d8e76f05a8ae4c2b0697091130",
"review/layout-preview-v1/font-cache/0e14d11dfa32bcd8ea4cd43b2e352131-le64.cache-9": "0a387174a7a8c5be94a53f86e5789c77da44d9700bad89aba12d090c8a64697c",
"review/layout-preview-v1/font-cache/a46a90b3114f4679f37745d4a8f3e608-le64.cache-9": "dec2022698647dc7bfd7f5354bc086c407992f4bc4ba0081d88ef03b55572264",
"review/layout-preview-v1/font-cache/f53da1bd49ea03cb387bf10765c2bba8-le64.cache-9": "f7c8c19ff02b7c463e758031944bc3777bc86aa8ed2cd961e9b27d4ec295a260",
"review/layout-preview-v1/fonts.conf": "d260a1075d0536ca7e42e6f0d4701e0015b13e2f49a7da256856fd4f07d06cf0",
"review/layout-preview-v1/foreground-curtain.png": "92be2d148c4f8581f48c659c7981880b9b4a1b27cadd5003d466d20bf8581f88",
"review/layout-preview-v1/foreground-curtain.svg": "aaac72b44c4423dae42308af6076017cc491d49dd8560f409ca944a9054b2f29",
"review/layout-preview-v1/preview-validation.json": "91b6200b2346805da9b2c797ed61f07975cafbfbf9e84f677746bf2bd3a4accf",
"review/layout-preview-v1/reference-ink.png": "b65779df016759845852ec705e9325b512c274037f2d4f44b71f4a86cd91248b",
"review/layout-preview-v1/reference-ink.svg": "fa5673866345f955c93df273de286946ad91def05f10c313a828a5b5caa4beec",
"review/layout-preview-v1/text-preview.png": "2e02ee337794e76f8414195f541ab126d825d4f2e84347c92f642e3913ab8f67",
"review/layout-preview-v1/text-preview.svg": "b027a50379222be7ad002b4a806f490ad35cbcf7639e079468badab3714c8081",
"review/layout-preview-v1/title-ink.png": "73b8c268f1604d956c56863e02684d66934d011fe3dab28f14e756a40f8ae024",
"review/layout-preview-v1/title-ink.svg": "b2ca810f03405ae03b05793418b65ea0df3599d6ff2a8395b7036ff806da8b9c",
"review/layout-preview-v1/verse-0-ink.png": "7e9061d4663a5495e54170987a76bd85bdf957ea1a8500e1afe0537bd56f7e80",
"review/layout-preview-v1/verse-0-ink.svg": "5a3d5b6d06f919099fe47e93930731f4a261b46025672aa77d595b6352a75f87",
"review/layout-preview-v1/verse-1-ink.png": "83271ea2d9f2e068dc419b80d6f58ceeda55acd06392abad9b74f5a014d0d747",
"review/layout-preview-v1/verse-1-ink.svg": "e5af9ff770b72c85da69e098da1fa4967157cec9bc5db13109bcdc1ef2be74bb",
"review/layout-preview-v1/verse-2-ink.png": "d22f1e3b1d67ade6d4021e73a314b675d3a6d1e92548fcf591cdd777b88a807c",
"review/layout-preview-v1/verse-2-ink.svg": "9027bc23acf2edc1ed2b5bce110324d396b94bda6d0fb5c332f298154b7988b9",
"review/layout-preview-v1/verse-3-ink.png": "9eaecd5c3d3eae12ac7c76bc691ec192f8645b5a7ac40aa74c8a7c7a96d8f4e4",
"review/layout-preview-v1/verse-3-ink.svg": "5f200c654ba47fd8fb54b4d6ffc7968de5bad6ef83ddf7b2a7cfd3c4a8b8ebb2",
"review/layout-preview-v1/without-curtain-1000.png": "17eedd7ffe471d185cb6c1dd6b090bfd1f06b4517714529bffad4c749f547619",
"review/layout-preview-v1/without-curtain-2000.png": "3b136d72dca4aa18ed4c952d59d0a87a71f9e8120958e3847474112676925bb6",
"review/layout-preview-v1/without-curtain-500.png": "2e057afca6bf3b14a745bd3328f1833ad402f37cb948ce5b671c83101fdc1183",
"review/layout-preview-v1/without-curtain.svg": "5ef5b40c113193cedd1eba63e0b5c70c60dd823a65159137940a533604344260",
"review/layout-preview-v2/README.md": "7029b973c35219c108ae191bbfd43bf19bd4c79b6b24849bb062c77a85687ff0",
"review/layout-preview-v2/backing-comparison.png": "54336c48917204033be863f5a97b292d43c402b694ca450e7621afd86a827756",
"review/layout-preview-v2/border-backing-preview.png": "f368fa3c4e3bb68ebfa138c5d19824c33bf94fb3365f6e6b31ac50f277a1bb2e",
"review/layout-preview-v2/border-backing-preview.svg": "a1695255614e204ce8c0180ae3646c4a8f449cc54d24dac817c3f285336077b0",
"review/layout-preview-v2/build-preview.py": "b380476cb1872db5517bbacf0f44d9881e181340870aff99d8a5ab75d4c1e0fd",
"review/layout-preview-v2/composed-preview-1000.png": "7ff672992bb597ce6f63d071c32fe755d9d9d47f9651fd10ff6aa83198e78563",
"review/layout-preview-v2/composed-preview-2000.png": "29d74f488bc935fe7c1100bc0e8dc74cfef8f2f09ac9833cc7e5f6698aba4d49",
"review/layout-preview-v2/composed-preview-500.png": "9a33f271bb1c3e9084f983d0a340675422dbbad6fa05900fcfcccd3734c9d7a8",
"review/layout-preview-v2/composed-preview.svg": "42ddf9f7ee2761fc32e1800e23dc6f34e7f13a24ebd68c29f9911cea2e3ca490",
"review/layout-preview-v2/curtain-comparison.png": "5b97cdc928704fd2f0d16a1470b1bfa9dcfdc4feacf829e4eb336506348b5d1a",
"review/layout-preview-v2/curtain-junction-detail.png": "57f4a2786f90d3bd5446ca12151bb55681635dc59454059b1ecb20bd0b5931d3",
"review/layout-preview-v2/font-cache/037d20e60be746631d2b233d68ab4a1a-le64.cache-9": "464a2950361202013d83f869f3513422735df1d8e76f05a8ae4c2b0697091130",
"review/layout-preview-v2/font-cache/0e14d11dfa32bcd8ea4cd43b2e352131-le64.cache-9": "0a387174a7a8c5be94a53f86e5789c77da44d9700bad89aba12d090c8a64697c",
"review/layout-preview-v2/font-cache/a46a90b3114f4679f37745d4a8f3e608-le64.cache-9": "dec2022698647dc7bfd7f5354bc086c407992f4bc4ba0081d88ef03b55572264",
"review/layout-preview-v2/font-cache/f53da1bd49ea03cb387bf10765c2bba8-le64.cache-9": "f7c8c19ff02b7c463e758031944bc3777bc86aa8ed2cd961e9b27d4ec295a260",
"review/layout-preview-v2/fonts.conf": "8737a504b7dbe041a6b3d5cf96ae3039d40b6bcbe0842c7fbc463738a13b061e",
"review/layout-preview-v2/foreground-curtain.png": "92be2d148c4f8581f48c659c7981880b9b4a1b27cadd5003d466d20bf8581f88",
"review/layout-preview-v2/foreground-curtain.svg": "aaac72b44c4423dae42308af6076017cc491d49dd8560f409ca944a9054b2f29",
"review/layout-preview-v2/preview-validation.json": "0176dfe18f5e61e201be699d22a77da9494d98ad137df4aaedac9bbb556f59cb",
"review/layout-preview-v2/reference-ink.png": "91cba7a3b3139efdaeecb01cc40abb34dc02035e015879a0df38bb62ccd4747c",
"review/layout-preview-v2/reference-ink.svg": "2b57ed78a89309e2d4a0281476d21b1b2c0ac99638075581f6873ce5a8022f5e",
"review/layout-preview-v2/text-preview.png": "d2559475d6d908fb8844132e2db1ababa84cc5d64d7eea16b89ad205507333ec",
"review/layout-preview-v2/text-preview.svg": "325e020f8ff1d529a5ef48c45bb396ec38d91a3aaace6de8e6202b10873cf27e",
"review/layout-preview-v2/title-ink.png": "73b8c268f1604d956c56863e02684d66934d011fe3dab28f14e756a40f8ae024",
"review/layout-preview-v2/title-ink.svg": "b2ca810f03405ae03b05793418b65ea0df3599d6ff2a8395b7036ff806da8b9c",
"review/layout-preview-v2/verse-0-ink.png": "3c772feed78b5cfc4b2669c6cf248ac4d4002b7b8ae3ab8d06ad39d3a51574a2",
"review/layout-preview-v2/verse-0-ink.svg": "39f20cf6bd9c4b2222b3c47c57c20a4f1a352498687878540947c6e30b6a3669",
"review/layout-preview-v2/verse-1-ink.png": "d4fa2d04df13023c346ddca5182edc4c0fe0901b8eb352fecdf50e0cbe7c3aff",
"review/layout-preview-v2/verse-1-ink.svg": "7be7f61dfab438fff3b1dae28fa00cebdbb27568cb9477af0dec99839f2a9232",
"review/layout-preview-v2/verse-2-ink.png": "2c35c89bcc4d4715ad813e0cedcc63dfef02325c2831d7d9f25dd4d6eb4f7f55",
"review/layout-preview-v2/verse-2-ink.svg": "03624c77c33bd6ef166cf3a3f8308a38f65d6440e3f46990087ac96b948a7d41",
"review/layout-preview-v2/verse-3-ink.png": "9eaecd5c3d3eae12ac7c76bc691ec192f8645b5a7ac40aa74c8a7c7a96d8f4e4",
"review/layout-preview-v2/verse-3-ink.svg": "5f200c654ba47fd8fb54b4d6ffc7968de5bad6ef83ddf7b2a7cfd3c4a8b8ebb2",
"review/layout-preview-v2/without-curtain-1000.png": "77140f7f393fbb2ba626e968fd661976f725fdda25ba56a0a84f31853451513a",
"review/layout-preview-v2/without-curtain-2000.png": "7832b597183f9925fe755fc21b7783ee3ab810b99c4dda73291fd7b388b31b97",
"review/layout-preview-v2/without-curtain-500.png": "cc396a823b18cfb80c9f523120ff822ca74ad7d6ef6b103d64f5fb4ad1a5b076",
"review/layout-preview-v2/without-curtain.svg": "ffff56dec49826e92a5bae026802afb77fd39e001ae0fd7a8c3c455eebe968a8",
"source/art-fit.json": "f06f3666c0add4fd52084a0998d9e48146ec84e0f04e51dddcfc5ca2aa396388",
"source/art-master.png": "73f933cf34719dfda09b719376948bcf072bec504a88329b5a22e4ac1ed76d85",
"source/art-native.png": "ab234b91b260dba3b1a6973d765fc987e59339c21ec790d0ce51528e8fd98157",
"source/edit-prompt.txt": "0bd8e3c5c40d59dd6f1f9caf9094371d0c3f52748e48a9cbd924609da1205e5a",
"source/edit-reference.jpg": "0f6754052e7e739cf00a8f8360cb922112b2aa8501b8adfe981d9544e314108f",
"source/fit-art.py": "f9aea5aa6b192591db9db7c8d26c6d0a1ee272ab977ed3940891ca32c17acd07",
"source/generation.json": "bf4cd2254dc45d51c79a5d29abe40613a9a8530fbf17a02d60448cf64a5a0e36",
"source/refinement.md": "ea3a4f27292be136543286d4d67d7780ceeb4fb986992f428736de749de6ff4d"
}

View File

@@ -0,0 +1,5 @@
# Moses v04 — continuous cloud/presence
User feedback: the golden cloud reads as bubbles or orbs, weakening the intended Presence. This is a base-illustration correction, not a finish-mask adjustment. Preserve all non-cloud subjects and structure as closely as possible. Replace circular/scalloped cloud cells with continuous rising irregular pearl/ivory vapor layers, cool shadows and restrained warm rim light.
Astra medium direction, built-in targeted image edit. The starting source is v03 `source/art-master.png`. Native-path reads failed sandbox initialization; the edit therefore uses the single conversation-visible 1000×1400 JPEG quality 93 derived from that master, retained as `edit-reference.jpg`. v03 remains preserved, and its pre-edit hashes are retained for a non-mutation check. No card assembly is authorized.

View File

@@ -0,0 +1,23 @@
#!/usr/bin/env python3
"""Validate retained art inputs, fit, review dimensions and v03 preservation only."""
from pathlib import Path
from PIL import Image
import hashlib,json,subprocess,sys
p=Path(__file__).resolve().parent.parent
sha=lambda f:hashlib.sha256(f.read_bytes()).hexdigest()
prior=json.loads((p/'source/prior-revision-hashes.json').read_text())
assert all(sha(p.parent/'v03'/f)==h for f,h in prior.items()), 'v03 changed'
fit=json.loads((p/'source/art-fit.json').read_text())
assert sha(p/'source/art-native.png')==fit['sourceSHA256']
assert sha(p/'source/art-master.png')==fit['outputSHA256']
expected={'source/art-master.png':[2000,2800],'review/art-review.png':[1000,1400],'review/art-card-size.png':[500,700],'review/art-thumbnail.png':[250,350]}
before={f:sha(p/f) for f in expected}
for f,size in expected.items():
with Image.open(p/f) as im:
assert list(im.size)==size
assert im.mode=='RGB'
subprocess.run([sys.executable,str(p/'source/fit-art.py')],check=True)
assert before=={f:sha(p/f) for f in expected}, 'fit not byte-repeatable'
result={'status':'pass','scope':'Art source/fit/review only; no card assembly or material validation','priorRevision':'v03','priorFilesUnchanged':len(prior),'nativeSourceHashVerified':True,'masterHashVerified':True,'reviewDimensions':expected,'repeatableFitAndReviews':True,'nonCloudPixelIdentity':'Not claimed; visually reviewed generative edit'}
(p/'review/source-validation.json').write_text(json.dumps(result,indent=2)+'\n')
print(json.dumps(result,indent=2))