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

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 MiB

View File

@@ -0,0 +1,52 @@
#!/usr/bin/env python3
"""Deterministic narrow post extension; original pixels untouched outside alpha."""
from pathlib import Path
from PIL import Image,ImageDraw,ImageFilter
import numpy as np,json,hashlib,shutil
p=Path(__file__).resolve().parent.parent
base=Image.open(p/'source/base-v04.png').convert('RGB');W,H=base.size
# Master coordinates: begin inside the final existing segment, terminate at socket.
box=(310,994,379,2652);s=4;x0,y0,x1,y1=box
layer=Image.new('RGBA',((x1-x0)*s,(y1-y0)*s));d=ImageDraw.Draw(layer)
def left(y):return 332.5-(y-975)*12.5/(2645-975)
def pt(x,y):return ((x-x0)*s,(y-y0)*s)
def poly(points,fill):d.polygon([pt(x,y) for x,y in points],fill=fill)
# Dark structural silhouette overlays the cloud, with a small shaped ground end.
poly([(left(994),994),(left(994)+42,994),(left(2626)+40,2626),(left(2645)+35,2645),(left(2645)+1,2640)],'#19190f')
# Unequal segment heights mirror the extant near and far posts.
edges=[994,1200,1417,1601,1818,2040,2259,2441,2628]
for i,(a,b) in enumerate(zip(edges,edges[1:])):
top=a+6 if i else a;bottom=b-7
l1,l2=left(top)+9,left(bottom)+9;wid=23
poly([(l1,top),(l1+wid,top+1),(l2+wid,bottom),(l2,bottom-1)],'#c08b28')
poly([(l1+3,top),(l1+wid-3,top+1),(l2+wid-3,bottom),(l2+3,bottom-1)],'#f0ca51')
poly([(l1+4,top+2),(l1+9,top+2),(l2+9,bottom-2),(l2+4,bottom-2)],'#f9e591')
# Inset diagonal pane break in selected longer segments, never across the outline.
if i in [2,5,7]:
mid=(top+bottom)/2;lx=left(mid)+9
d.line([pt(lx,mid-10),pt(lx+23,mid+11)],fill='#8b6726',width=2*s)
# Contained worked-glass variation sampled from the original source, not fresh noise.
arr=np.array(layer);gold=(arr[:,:,3]>0)&(arr[:,:,0]>100)
tex=base.crop((510,600,610,850)).resize(layer.size,Image.Resampling.BICUBIC)
t=np.asarray(tex,dtype=float).mean(axis=2);variation=np.clip((t-t.mean())*.26,-17,17)
rgb=arr[:,:,:3].astype(float);rgb[gold]+=variation[gold,None];arr[:,:,:3]=np.clip(rgb,0,255).astype('uint8')
layer=Image.fromarray(arr).filter(ImageFilter.GaussianBlur(1.6)).resize((x1-x0,y1-y0),Image.Resampling.LANCZOS)
overlay=Image.new('RGBA',(W,H));overlay.paste(layer,(x0,y0));overlay.save(p/'source/post-extension.png')
art=Image.alpha_composite(base.convert('RGBA'),overlay).convert('RGB');art.save(p/'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(p/'review'/name)
board=Image.new('RGB',(720,1020),'#ece5d5');dd=ImageDraw.Draw(board)
for j,(label,im) in enumerate([('v04 — interrupted',base),('v05 — continued',art)]):
dd.text((j*360+15,10),label,fill='#263f50')
detail=im.crop((265,870,440,2680));detail.thumbnail((340,960));board.paste(detail,(j*360+100,40))
board.save(p/'review/post-before-after.png')
join=Image.new('RGB',(840,660),'#ece5d5');dd=ImageDraw.Draw(join)
for j,(label,im) in enumerate([('v04',base),('v05',art)]):
dd.text((j*420+10,10),label,fill='#263f50')
for k,b in enumerate([(305,940,395,1085),(300,2490,390,2670)]):
crop=im.crop(b);crop.thumbnail((380,300));crop=crop.resize((180,290 if k==0 else 360));join.paste(crop,(j*420+110,35+k*290))
join.save(p/'review/post-join-detail.png')
sha=lambda f:hashlib.sha256(f.read_bytes()).hexdigest()
a=np.asarray(base);b=np.asarray(art);diff=np.any(a!=b,axis=2);ys,xs=np.where(diff)
assert not diff[:y0].any() and not diff[y1:].any() and not diff[:,:x0].any() and not diff[:,x1:].any()
report={'status':'pass','baseSHA256':sha(p/'source/base-v04.png'),'artSHA256':sha(p/'source/art-master.png'),'dimensions':[W,H],'changedPixels':int(diff.sum()),'changedFraction':float(diff.mean()),'differenceBoundsExclusive':[int(xs.min()),int(ys.min()),int(xs.max()+1),int(ys.max()+1)],'authorizedRegion':list(box),'allPixelsOutsidePostRegionIdentical':True,'method':'Deterministic authored overlay, antialiased at 4x; RGB compositing only inside overlay alpha','scope':'Art-only, no card assembly'}
(p/'review/source-validation.json').write_text(json.dumps(report,indent=2)+'\n');print(json.dumps(report))

Binary file not shown.

After

Width:  |  Height:  |  Size: 944 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 947 KiB

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2000" height="2800" viewBox="0 0 2000 2800"><defs>
<linearGradient id="paper" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#fbf3df" /><stop offset=".5" stop-color="#f4ead4" /><stop offset="1" stop-color="#e8d4b0" /></linearGradient>
<linearGradient id="gold" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#f0d47d" /><stop offset=".48" stop-color="#bd8b31" /><stop offset="1" stop-color="#71501e" /></linearGradient>
<pattern id="weave" width="44" height="44" patternUnits="userSpaceOnUse"><path d="M0 11H44 M0 33H44 M11 0V44 M33 0V44" stroke="#9d783d" stroke-width="1" opacity=".045" /><path d="M22 7l7 15-7 15-7-15Z" fill="none" stroke="#806438" stroke-width="1" opacity=".07" /></pattern>
<pattern id="lapis-band" width="34" height="34" patternUnits="userSpaceOnUse"><path d="M17 2L32 17 17 32 2 17Z" fill="#173e59" stroke="#d7b35a" stroke-width="3" /><circle cx="17" cy="17" r="4" fill="url(#gold)" /></pattern>
<clipPath id="curtain-clip"><path d="M-10-10 H770 C734 204 694 395 650 585 C610 770 566 972 522 1170 C474 1388 426 1604 378 1818 C338 2000 302 2190 286 2380 C276 2510 304 2640 412 2810 H-10Z" /></clipPath>
<clipPath id="shortened-textile"><path d="M-20 1970 L410 1870 L1110 2016.688 V2810 H-20Z" /></clipPath><linearGradient id="linen" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#f7edd4" /><stop offset=".55" stop-color="#f2e7cd" /><stop offset="1" stop-color="#e8d7b6" /></linearGradient><pattern id="linen-fibers" width="19" height="23" patternUnits="userSpaceOnUse"><path d="M0 3H19 M0 12H19 M0 20H19" stroke="#8d754d" stroke-width="1" opacity=".075" /><path d="M4 0V23 M13 0V23" stroke="#9b8359" stroke-width="1" opacity=".065" /><path d="M2 4H7 M10 13H17 M5 20H10" stroke="#fffaf0" stroke-width="1" opacity=".24" /></pattern><clipPath id="cloud-top"><path d="M1045 0 C1048 62 1012 102 971 105 C942 108 910 123 913 146 C916 166 952 176 967 209 C991 248 983 287 967 310 C956 325 971 347 959 371 C946 397 900 400 876 432 L780 490 H0 V0Z" /></clipPath><clipPath id="title-edge-zone"><path d="M700 62 H1900 Q1940 62 1940 102 V342 H700Z" /></clipPath><clipPath id="curtain-over-rail"><path d="M0 0H80 V2646 C45 2640 24 2634 0 2640Z" /></clipPath><clipPath id="sleeve-contour"><path d="M670 1280 C650 1390 671 1540 725 1650 C756 1730 791 1820 781 1910 C777 1960 789 1998 808 2020 C829 1982 867 1942 893 1900 C942 1828 970 1746 1002 1666 C1031 1589 1066 1520 1086 1480 L1120 1410 L1080 1330 L900 1190H650Z" /></clipPath><clipPath id="sleeve-panel-intersection"><path d="M17 1736 L410 1618 L1102 1774 L1050 2753 H17Z" /></clipPath></defs><g id="presence-foreground"><g clip-path="url(#cloud-top)"><image xlink:href="../art-master.png" width="2000" height="2800" /></g><g fill="none" stroke="#2b2116" stroke-width="8" stroke-linejoin="round" stroke-linecap="round"><path d="M1045 0 C1048 62 1012 102 971 105 C942 108 910 123 913 146 C916 166 952 176 967 209 C991 248 983 287 967 310 C956 325 971 347 959 371 C946 397 900 400 876 432" clip-path="url(#title-edge-zone)" /></g></g><g id="complete-blue-red-sleeve" clip-path="url(#sleeve-panel-intersection)"><g clip-path="url(#sleeve-contour)"><image xlink:href="../art-master.png" width="2000" height="2800" /></g><path d="M670 1280 C650 1390 671 1540 725 1650 C756 1730 791 1820 781 1910 C777 1960 789 1998 808 2020 C829 1982 867 1942 893 1900 C942 1828 970 1746 1002 1666 C1031 1589 1066 1520 1086 1480" fill="none" stroke="#20282c" stroke-width="6" stroke-linecap="round" stroke-linejoin="round" /></g></svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="2000" height="2800" viewBox="0 0 2000 2800"><defs>
<linearGradient id="paper" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#fbf3df" /><stop offset=".5" stop-color="#f4ead4" /><stop offset="1" stop-color="#e8d4b0" /></linearGradient>
<linearGradient id="gold" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#f0d47d" /><stop offset=".48" stop-color="#bd8b31" /><stop offset="1" stop-color="#71501e" /></linearGradient>
<pattern id="weave" width="44" height="44" patternUnits="userSpaceOnUse"><path d="M0 11H44 M0 33H44 M11 0V44 M33 0V44" stroke="#9d783d" stroke-width="1" opacity=".045" /><path d="M22 7l7 15-7 15-7-15Z" fill="none" stroke="#806438" stroke-width="1" opacity=".07" /></pattern>
<pattern id="lapis-band" width="34" height="34" patternUnits="userSpaceOnUse"><path d="M17 2L32 17 17 32 2 17Z" fill="#173e59" stroke="#d7b35a" stroke-width="3" /><circle cx="17" cy="17" r="4" fill="url(#gold)" /></pattern>
<clipPath id="curtain-clip"><path d="M-10-10 H770 C734 204 694 395 650 585 C610 770 566 972 522 1170 C474 1388 426 1604 378 1818 C338 2000 302 2190 286 2380 C276 2510 304 2640 412 2810 H-10Z" /></clipPath>
<clipPath id="shortened-textile"><path d="M-20 1970 L410 1870 L1110 2016.688 V2810 H-20Z" /></clipPath><linearGradient id="linen" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#f7edd4" /><stop offset=".55" stop-color="#f2e7cd" /><stop offset="1" stop-color="#e8d7b6" /></linearGradient><pattern id="linen-fibers" width="19" height="23" patternUnits="userSpaceOnUse"><path d="M0 3H19 M0 12H19 M0 20H19" stroke="#8d754d" stroke-width="1" opacity=".075" /><path d="M4 0V23 M13 0V23" stroke="#9b8359" stroke-width="1" opacity=".065" /><path d="M2 4H7 M10 13H17 M5 20H10" stroke="#fffaf0" stroke-width="1" opacity=".24" /></pattern><clipPath id="cloud-top"><path d="M1045 0 C1048 62 1012 102 971 105 C942 108 910 123 913 146 C916 166 952 176 967 209 C991 248 983 287 967 310 C956 325 971 347 959 371 C946 397 900 400 876 432 L780 490 H0 V0Z" /></clipPath><clipPath id="title-edge-zone"><path d="M700 62 H1900 Q1940 62 1940 102 V342 H700Z" /></clipPath><clipPath id="curtain-over-rail"><path d="M0 0H80 V2646 C45 2640 24 2634 0 2640Z" /></clipPath><clipPath id="sleeve-contour"><path d="M670 1280 C650 1390 671 1540 725 1650 C756 1730 791 1820 781 1910 C777 1960 789 1998 808 2020 C829 1982 867 1942 893 1900 C942 1828 970 1746 1002 1666 C1031 1589 1066 1520 1086 1480 L1120 1410 L1080 1330 L900 1190H650Z" /></clipPath><clipPath id="sleeve-panel-intersection"><path d="M17 1736 L410 1618 L1102 1774 L1050 2753 H17Z" /></clipPath></defs><g id="title-backing"><path d="M700 62 H1900 Q1940 62 1940 102 V342 H700Z" fill="url(#paper)" stroke="#62421e" stroke-width="9" /><path d="M700 62 H1900 Q1940 62 1940 102 V342 H700Z" fill="url(#weave)" stroke="url(#gold)" stroke-width="4" /><path d="M710 82 H1898 Q1920 82 1920 104 V320 H710" fill="none" stroke="#bb9040" stroke-width="3" /><path d="M1070 301H1870" stroke="#c5a257" stroke-width="2" /></g><g id="verse-backing"><g clip-path="url(#shortened-textile)"><path d="M23 1740 L410 1630 L1090 1780 L1040 2745 H23Z" transform="translate(3 6)" fill="#211b15" opacity=".6" /><path d="M23 1740 L410 1630 L1090 1780 L1040 2745 H23Z" fill="url(#linen)" stroke="#79552b" stroke-width="4" /><path d="M23 1740 L410 1630 L1090 1780 L1040 2745 H23Z" fill="url(#linen-fibers)" /><path d="M57 1977L412 1904 1038 2025" fill="none" stroke="#ab8950" stroke-width="6" stroke-linejoin="round" /><path d="M61 1988L412 1917 1030 2036" fill="none" stroke="#7a3d48" stroke-width="3" stroke-linejoin="round" /><path d="M66 1999L412 1930 1020 2047" fill="none" stroke="#344d63" stroke-width="2" stroke-dasharray="6 10" /><path d="M61 1810V2690H1006" fill="none" stroke="#b89a64" stroke-width="2" stroke-dasharray="5 11" /><path d="M68 2702H1015" stroke="#743443" stroke-width="5" /><path d="M68 2713H1010" stroke="#244961" stroke-width="4" /><path d="M68 2722H1006" stroke="#c39b4c" stroke-width="2" /></g><path d="M23 1960L410 1870L1078.083 2010" fill="none" stroke="#79552b" stroke-width="4" /></g><g fill="none" stroke-linecap="round"><path d="M17 1960 C35 1948 46 1952 58 1964" stroke="#342619" stroke-width="11" /><path d="M17 1960 C35 1948 46 1952 58 1964" stroke="#d8b56d" stroke-width="6" /><path d="M17 2695 C35 2683 46 2687 58 2699" stroke="#342619" stroke-width="11" /><path d="M17 2695 C35 2683 46 2687 58 2699" stroke="#d8b56d" stroke-width="6" /></g><path d="M398 1881 C383 1856 412 1847 421 1872 C428 1886 411 1893 398 1881Z" fill="none" stroke="#705332" stroke-width="5" /><path d="M403 1879C392 1860 410 1857 417 1873" fill="none" stroke="#d7b878" stroke-width="3" /></svg>

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" width="2000" height="2800" viewBox="0 0 2000 2800"><defs>
<linearGradient id="paper" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#fbf3df" /><stop offset=".5" stop-color="#f4ead4" /><stop offset="1" stop-color="#e8d4b0" /></linearGradient>
<linearGradient id="gold" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#f0d47d" /><stop offset=".48" stop-color="#bd8b31" /><stop offset="1" stop-color="#71501e" /></linearGradient>
<pattern id="weave" width="44" height="44" patternUnits="userSpaceOnUse"><path d="M0 11H44 M0 33H44 M11 0V44 M33 0V44" stroke="#9d783d" stroke-width="1" opacity=".045" /><path d="M22 7l7 15-7 15-7-15Z" fill="none" stroke="#806438" stroke-width="1" opacity=".07" /></pattern>
<pattern id="lapis-band" width="34" height="34" patternUnits="userSpaceOnUse"><path d="M17 2L32 17 17 32 2 17Z" fill="#173e59" stroke="#d7b35a" stroke-width="3" /><circle cx="17" cy="17" r="4" fill="url(#gold)" /></pattern>
<clipPath id="curtain-clip"><path d="M-10-10 H770 C734 204 694 395 650 585 C610 770 566 972 522 1170 C474 1388 426 1604 378 1818 C338 2000 302 2190 286 2380 C276 2510 304 2640 412 2810 H-10Z" /></clipPath>
<clipPath id="shortened-textile"><path d="M-20 1970 L410 1870 L1110 2016.688 V2810 H-20Z" /></clipPath><linearGradient id="linen" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#f7edd4" /><stop offset=".55" stop-color="#f2e7cd" /><stop offset="1" stop-color="#e8d7b6" /></linearGradient><pattern id="linen-fibers" width="19" height="23" patternUnits="userSpaceOnUse"><path d="M0 3H19 M0 12H19 M0 20H19" stroke="#8d754d" stroke-width="1" opacity=".075" /><path d="M4 0V23 M13 0V23" stroke="#9b8359" stroke-width="1" opacity=".065" /><path d="M2 4H7 M10 13H17 M5 20H10" stroke="#fffaf0" stroke-width="1" opacity=".24" /></pattern><clipPath id="cloud-top"><path d="M1045 0 C1048 62 1012 102 971 105 C942 108 910 123 913 146 C916 166 952 176 967 209 C991 248 983 287 967 310 C956 325 971 347 959 371 C946 397 900 400 876 432 L780 490 H0 V0Z" /></clipPath><clipPath id="title-edge-zone"><path d="M700 62 H1900 Q1940 62 1940 102 V342 H700Z" /></clipPath><clipPath id="curtain-over-rail"><path d="M0 0H80 V2646 C45 2640 24 2634 0 2640Z" /></clipPath><clipPath id="sleeve-contour"><path d="M670 1280 C650 1390 671 1540 725 1650 C756 1730 791 1820 781 1910 C777 1960 789 1998 808 2020 C829 1982 867 1942 893 1900 C942 1828 970 1746 1002 1666 C1031 1589 1066 1520 1086 1480 L1120 1410 L1080 1330 L900 1190H650Z" /></clipPath><clipPath id="sleeve-panel-intersection"><path d="M17 1736 L410 1618 L1102 1774 L1050 2753 H17Z" /></clipPath></defs><g id="legendary-frame"><rect x="19" y="19" width="1962" height="2762" rx="28" fill="none" stroke="#251c15" stroke-width="21" /><rect x="23" y="23" width="1954" height="2754" rx="23" fill="none" stroke="url(#gold)" stroke-width="11" /><rect x="43" y="43" width="1914" height="2714" rx="15" fill="none" stroke="#e2bf6c" stroke-width="3" /></g></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1,44 @@
{
"id": "BP-001-moses-legendary-tent-textile-v1",
"canvas": [
2000,
2800
],
"selectedProof": "in-progress/cards/BP-001-moses/revisions/v05/review/vertical-text-prototype-v7",
"titleBacking": "upper-right paper plaque beneath the source cloud crown",
"verseBacking": "shortened left tent textile with shallow pitched seam",
"depthOrder": [
"base-art",
"frame",
"curtain-over-rail",
"backings",
"cloud-crown-and-complete-blue-red-sleeve",
"text"
],
"printingComponents": {
"normal": [
"base-art",
"frame",
"curtain-over-rail",
"backing",
"adapted-foreground",
"text"
],
"boundless": [
"base-art"
],
"borderless": [
"base-art",
"backing",
"adapted-foreground",
"text"
],
"textless": [
"base-art",
"frame",
"curtain-over-rail",
"cloud-crown-over-frame"
]
},
"foregroundScope": "Normal and Borderless restore the source cloud crown plus complete blue outer sleeve and red inner lining ending at the low V. Textless restores the tent/cloud crown over the top-left rail. The separate lower red shard stays behind the backing."
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2000" height="2800" viewBox="0 0 2000 2800"><defs>
<linearGradient id="paper" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#fbf3df"/><stop offset=".5" stop-color="#f4ead4"/><stop offset="1" stop-color="#e8d4b0"/></linearGradient>
<linearGradient id="gold" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#f0d47d"/><stop offset=".48" stop-color="#bd8b31"/><stop offset="1" stop-color="#71501e"/></linearGradient>
<pattern id="weave" width="44" height="44" patternUnits="userSpaceOnUse"><path d="M0 11H44 M0 33H44 M11 0V44 M33 0V44" stroke="#9d783d" stroke-width="1" opacity=".045"/><path d="M22 7l7 15-7 15-7-15Z" fill="none" stroke="#806438" stroke-width="1" opacity=".07"/></pattern>
<pattern id="lapis-band" width="34" height="34" patternUnits="userSpaceOnUse"><path d="M17 2L32 17 17 32 2 17Z" fill="#173e59" stroke="#d7b35a" stroke-width="3"/><circle cx="17" cy="17" r="4" fill="url(#gold)"/></pattern>
<clipPath id="curtain-clip"><path d="M-10-10 H770 C734 204 694 395 650 585 C610 770 566 972 522 1170 C474 1388 426 1604 378 1818 C338 2000 302 2190 286 2380 C276 2510 304 2640 412 2810 H-10Z"/></clipPath>
<clipPath id="shortened-textile"><path d="M-20 1970 L410 1870 L1110 2016.688 V2810 H-20Z"/></clipPath><linearGradient id="linen" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#f7edd4"/><stop offset=".55" stop-color="#f2e7cd"/><stop offset="1" stop-color="#e8d7b6"/></linearGradient><pattern id="linen-fibers" width="19" height="23" patternUnits="userSpaceOnUse"><path d="M0 3H19 M0 12H19 M0 20H19" stroke="#8d754d" stroke-width="1" opacity=".075"/><path d="M4 0V23 M13 0V23" stroke="#9b8359" stroke-width="1" opacity=".065"/><path d="M2 4H7 M10 13H17 M5 20H10" stroke="#fffaf0" stroke-width="1" opacity=".24"/></pattern><clipPath id="cloud-top"><path d="M1045 0 C1048 62 1012 102 971 105 C942 108 910 123 913 146 C916 166 952 176 967 209 C991 248 983 287 967 310 C956 325 971 347 959 371 C946 397 900 400 876 432 L780 490 H0 V0Z"/></clipPath><clipPath id="title-edge-zone"><path d="M700 62 H1900 Q1940 62 1940 102 V342 H700Z"/></clipPath><clipPath id="curtain-over-rail"><path d="M0 0H80 V2646 C45 2640 24 2634 0 2640Z"/></clipPath><clipPath id="sleeve-contour"><path d="M670 1280 C650 1390 671 1540 725 1650 C756 1730 791 1820 781 1910 C777 1960 789 1998 808 2020 C829 1982 867 1942 893 1900 C942 1828 970 1746 1002 1666 C1031 1589 1066 1520 1086 1480 L1120 1410 L1080 1330 L900 1190H650Z"/></clipPath><clipPath id="sleeve-panel-intersection"><path d="M17 1736 L410 1618 L1102 1774 L1050 2753 H17Z"/></clipPath></defs><g id="legendary-frame"><rect x="19" y="19" width="1962" height="2762" rx="28" fill="none" stroke="#251c15" stroke-width="21"/><rect x="23" y="23" width="1954" height="2754" rx="23" fill="none" stroke="url(#gold)" stroke-width="11"/><rect x="43" y="43" width="1914" height="2714" rx="15" fill="none" stroke="#e2bf6c" stroke-width="3"/></g><g id="title-backing"><path d="M700 62 H1900 Q1940 62 1940 102 V342 H700Z" fill="url(#paper)" stroke="#62421e" stroke-width="9"/><path d="M700 62 H1900 Q1940 62 1940 102 V342 H700Z" fill="url(#weave)" stroke="url(#gold)" stroke-width="4"/><path d="M710 82 H1898 Q1920 82 1920 104 V320 H710" fill="none" stroke="#bb9040" stroke-width="3"/><path d="M1070 301H1870" stroke="#c5a257" stroke-width="2"/></g><g id="verse-backing"><g clip-path="url(#shortened-textile)"><path d="M23 1740 L410 1630 L1090 1780 L1040 2745 H23Z" transform="translate(3 6)" fill="#211b15" opacity=".6"/><path d="M23 1740 L410 1630 L1090 1780 L1040 2745 H23Z" fill="url(#linen)" stroke="#79552b" stroke-width="4"/><path d="M23 1740 L410 1630 L1090 1780 L1040 2745 H23Z" fill="url(#linen-fibers)"/><path d="M57 1977L412 1904 1038 2025" fill="none" stroke="#ab8950" stroke-width="6" stroke-linejoin="round"/><path d="M61 1988L412 1917 1030 2036" fill="none" stroke="#7a3d48" stroke-width="3" stroke-linejoin="round"/><path d="M66 1999L412 1930 1020 2047" fill="none" stroke="#344d63" stroke-width="2" stroke-dasharray="6 10"/><path d="M61 1810V2690H1006" fill="none" stroke="#b89a64" stroke-width="2" stroke-dasharray="5 11"/><path d="M68 2702H1015" stroke="#743443" stroke-width="5"/><path d="M68 2713H1010" stroke="#244961" stroke-width="4"/><path d="M68 2722H1006" stroke="#c39b4c" stroke-width="2"/></g><path d="M23 1960L410 1870L1078.083 2010" fill="none" stroke="#79552b" stroke-width="4"/></g><g fill="none" stroke-linecap="round"><path d="M17 1960 C35 1948 46 1952 58 1964" stroke="#342619" stroke-width="11"/><path d="M17 1960 C35 1948 46 1952 58 1964" stroke="#d8b56d" stroke-width="6"/><path d="M17 2695 C35 2683 46 2687 58 2699" stroke="#342619" stroke-width="11"/><path d="M17 2695 C35 2683 46 2687 58 2699" stroke="#d8b56d" stroke-width="6"/></g><path d="M398 1881 C383 1856 412 1847 421 1872 C428 1886 411 1893 398 1881Z" fill="none" stroke="#705332" stroke-width="5"/><path d="M403 1879C392 1860 410 1857 417 1873" fill="none" stroke="#d7b878" stroke-width="3"/></svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

View File

@@ -0,0 +1,23 @@
{
"README.md": "311a75b80ae042313a8479d295715ea6a1d12406964aad89537dc0b1d1ce0e1f",
"card.json": "e10b36169c7e5c682c5e8741ee05340e8250fa3ff5d961f53546a28eb9fbc1f7",
"high/manifest.json": "7ec683bc1aaf3a6c3d941a9011c97c5681bd1f18a21a1ea359745f092bcf2b6a",
"low/manifest.json": "c6b4ddddd22832e4ea6e2201c12a90cf4a7a1d25594b5878f12c23f22987261b",
"manifest.json": "c054d46d8ac354ee24170b42301e3698056a70f385be2cb2386e6f2f461fc78a",
"med/manifest.json": "e9cd197e91ccc2477ec18ccd62d903a29b166bc23b431dad8aa25ca60ef59ac6",
"review/art-card-size.png": "d90c69285530282d7f72ad60ae5fb2b02b2eb130dfc85738e19a00daafb50f43",
"review/art-review.png": "931f22f0883c56fd3a87540864e3c79858fde87cd0ae30dcc7955d9940282445",
"review/art-thumbnail.png": "1d65a13ce32a5100b36e0475b920f8f78bafda7097807603e459d5502764ec1d",
"review/illustration-review.md": "e79bf7b260142fbb767d85b1389e4111fd33c65010883b513409efff4db4a358",
"review/source-validation.json": "ae30dc558fe34aa8cdd88f90f23915ae5cfc78f091e8ae0c53493e0290264476",
"source/art-fit.json": "c945ae1717313d1f83f94e7ddd563c05c63529fe3b0dd0d4e76f4d99f0bf2d0f",
"source/art-master.png": "da9624d7f5c897fbcaaada9774b2fa8c11db65288b7885040e17ad16a71d925e",
"source/art-native.png": "36f6b3ab7360b7e3d8eaf93ce1dd9edd259dfc77424ca1ef4ac729cfa126ade6",
"source/edit-prompt.txt": "bd590461332bf9afec442d46ebef829978a64fd51c1a76074b140bd177cd56d9",
"source/edit-reference.jpg": "29abc4ff23b6badc4a321b067735a4bed2eb31666759e4d12a35e4bdde69fcaa",
"source/fit-art.py": "ae5418915f2bcfb464714b1898a9fdfa86e4117f2de226a01260be1fd841c611",
"source/generation.json": "f6b2c5d8158aa8ef03544cf61eae75e4f4f120bf7f330e2b813f014a612a2c2a",
"source/prior-revision-hashes.json": "435f9b4a7af82e53bec288fc74f7853e2cf4039b3509e4f5a6fcbf9e4a0df9b8",
"source/refinement.md": "685f8e1f1875caa43fa9d1267835d096b02aa83ced550a28e8fa387fc3cd2c2e",
"source/validate-art.py": "d6ccbe387f1dc91eac5b4c1753cdc0d475f34527530a915c68c6905dc07bd6a3"
}

View File

@@ -0,0 +1,38 @@
{
"selectedProof": "in-progress/cards/BP-001-moses/revisions/v05/review/vertical-text-prototype-v7",
"files": {
"normal": {
"path": "in-progress/cards/BP-001-moses/revisions/v05/review/vertical-text-prototype-v7/composed-preview-2000.png",
"sha256": "0bef4f96859790f5c42bc782a26f45a0835134338f35feaccbd60d4827c5d14d"
},
"overlaySvg": {
"path": "in-progress/cards/BP-001-moses/revisions/v05/review/vertical-text-prototype-v7/border-backing-preview.svg",
"sha256": "c2ca725ac8821a62d8af8176cd25ecf5e4a9c317dc62947cc8242a77c8f53e00"
},
"foreground": {
"path": "in-progress/cards/BP-001-moses/revisions/v05/review/vertical-text-prototype-v7/foreground-curtain.png",
"sha256": "094ec94400a21dd78f8e237104ebf11bf8cafc868f27c1ef78b640b7b3d5f857"
},
"foregroundSvg": {
"path": "in-progress/cards/BP-001-moses/revisions/v05/review/vertical-text-prototype-v7/foreground-curtain.svg",
"sha256": "2b2947ad99c922fa56becbbb1a1e8a8aec5f9cffcaacc8e63f1ec40ae3c164cc"
},
"text": {
"path": "in-progress/cards/BP-001-moses/revisions/v05/review/vertical-text-prototype-v7/text-preview.png",
"sha256": "2623f00ffe8d9e5883215e08452f2ecd51eb21bb55ab79f485ce6ca82f1e1155"
},
"textSvg": {
"path": "in-progress/cards/BP-001-moses/revisions/v05/review/vertical-text-prototype-v7/text-preview.svg",
"sha256": "57c51e06cfb8732f1500311936f95b4f4e0255af35b0218341f1126ce8370741"
},
"validation": {
"path": "in-progress/cards/BP-001-moses/revisions/v05/review/vertical-text-prototype-v7/preview-validation.json",
"sha256": "e5fe7a009d03ecc33ee6a92b1c357f78992b39e88e58c51079eb5675546c7772"
}
},
"fonts": {
"P052-Bold.otf": "ba6503baaf0f9e4e40a69cc4c0e57049fbde313fe183aba8fe823208337a94af",
"SanctificationP052-Medium.otf": "1e0e1f7f4a5b2899374de51e40f15446a04a5c0163d6a1943155f964c1ace1fb"
},
"finishRecipeSHA256": "23331ce56a717edb4e6f85956d11fdd98397009c4e6dd230d8c334c77571dd18"
}

View File

@@ -0,0 +1,27 @@
{
"method": "Deterministic authored raster overlay; no image generation",
"artDirectionModel": "gpt-6-astra",
"artDirectionReasoning": "medium",
"base": "base-v04.png",
"baseOrigin": "../../v04/source/art-master.png",
"baseSHA256": "da9624d7f5c897fbcaaada9774b2fa8c11db65288b7885040e17ad16a71d925e",
"authoringSource": "build-art.py",
"overlay": "post-extension.png",
"result": "art-master.png",
"request": "Continue the near/left golden entrance post down through the cloud to its ground socket. Preserve all other pixels.",
"reference": "v03/review/layout-preview-astra-v5/build-preview.py near-entrance-post geometry reviewed; redrawn narrowly from existing v04 upper segment rather than replacing entire post.",
"transform": {
"canvas": [
2000,
2800
],
"baseScale": 1,
"baseOffset": [
0,
0
],
"crop": null
},
"validation": "../review/source-validation.json",
"approval": null
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 MiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2000" height="2800" viewBox="0 0 2000 2800"><text id="title" x="1458" y="244" font-family="P052" font-weight="700" font-size="142" text-anchor="middle" fill="#263f50">MOSES</text><text id="verse-0" x="530" y="2189" font-family="Sanctification P052" font-weight="500" font-size="66" text-anchor="middle" fill="#263f50">And there has not arisen</text><text id="verse-1" x="530" y="2299" font-family="Sanctification P052" font-weight="500" font-size="66" text-anchor="middle" fill="#263f50">a prophet since in Israel</text><text id="verse-2" x="530" y="2409" font-family="Sanctification P052" font-weight="500" font-size="66" text-anchor="middle" fill="#263f50">like Moses, whom the LORD</text><text id="verse-3" x="530" y="2519" font-family="Sanctification P052" font-weight="500" font-size="66" text-anchor="middle" fill="#263f50">knew face to face</text><text id="reference" x="530" y="2640" font-family="Sanctification P052" font-weight="500" font-size="48" text-anchor="middle" fill="#263f50">Deuteronomy 34:10 • ESV</text></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

View File

@@ -0,0 +1,42 @@
{
"canvas": [
2000,
2800
],
"policy": "Bespoke Legendary coordinates; semantic four-line verse; actual ink centered in the reserved band.",
"titleAnchor": [
1458,
244
],
"verseAnchorX": 530,
"verseBaselines": [
2189,
2299,
2409,
2519
],
"referenceBaseline": 2640,
"fontSizes": {
"title": 142,
"verse": 66,
"reference": 48
},
"verseLines": [
"And there has not arisen",
"a prophet since in Israel",
"like Moses, whom the LORD",
"knew face to face"
],
"reference": "Deuteronomy 34:10 \u2022 ESV",
"measured": {
"verseInkUnion": [
112,
2140,
948,
2521
],
"upperFlourishToVerseInk": 84,
"verseInkToReferenceLineBox": 84,
"centeringDifference": 0
}
}