77 - ' tools/truth_foundry/blender_corpus370_operational_palette_independent_court_v1.py'
88 - ' tools/corpus/compile_corpus370_operational_palette_joint_v1.py'
99 - ' tests/corpus/test_corpus370_operational_palette_joint_v1.py'
10+ - ' tools/corpus/court_corpus370_operational_palette_pixel_consequence_v1.py'
11+ - ' tools/truth_foundry/blender_corpus370_operational_palette_physical_render_v1.py'
12+ - ' tools/truth_foundry/blender_corpus370_operational_palette_physical_independent_ray_court_v1.py'
13+ - ' tests/corpus/test_corpus370_operational_palette_pixel_consequence_v1.py'
1014 - ' .github/workflows/corpus370-operational-shader-palette-source-v1.yml'
1115 workflow_dispatch :
1216permissions :
2529 python-version : ' 3.11'
2630 - run : python -m pip install 'numpy>=1.26,<3' 'pytest>=8,<10'
2731 - run : |
28- python -m pytest -q tests/corpus/test_corpus370_operational_edit_algebra_v1.py tests/corpus/test_corpus370_operational_native_support_v1.py tests/corpus/test_corpus370_operational_palette_joint_v1.py
32+ python -m pytest -q tests/corpus/test_corpus370_operational_edit_algebra_v1.py tests/corpus/test_corpus370_operational_native_support_v1.py tests/corpus/test_corpus370_operational_palette_joint_v1.py tests/corpus/test_corpus370_operational_palette_pixel_consequence_v1.py
2933 original-blender-palette :
3034 needs : joint-contracts
3135 runs-on : ubuntu-24.04
@@ -114,6 +118,7 @@ jobs:
114118 (d/('source.'+os.environ['EXT'])).write_bytes(source)
115119 (d/'rest.npz').write_bytes(exact(lambda p:sid in p and p.endswith('/SOURCE_REST_GEOMETRY_V1.npz')))
116120 (d/'policy.json').write_bytes(exact(lambda p:sid in p and p.endswith('/SOURCE_REST_RENDER_CANDIDATE.json')))
121+ (d/'camera.json').write_bytes(exact(lambda p:sid in p and p.endswith('/camera_bundle.json')))
117122 # Restore exact GLB texture dependency if present; no texture replacement or synthesis.
118123 if os.environ['SUBJECT']=='CAT':
119124 material=exact(lambda p:p.endswith('/Models/GLB format/Textures/colormap.png'))
@@ -131,6 +136,15 @@ jobs:
131136 "$BLENDER_EXE" --background --factory-startup --threads 2 --python-exit-code 1 --python tools/truth_foundry/blender_corpus370_operational_palette_v1.py -- --source "$D/source.$EXT" --source-sha256 "$SOURCE_SHA" --v18a-npz "$D/v18a.npz" --rest-npz "$D/rest.npz" --source-policy "$D/policy.json" --output-dir "$RUNNER_TEMP/od-palette-out-$SUBJECT"
132137 "$BLENDER_EXE" --background --factory-startup --threads 2 --python-exit-code 1 --python tools/truth_foundry/blender_corpus370_operational_palette_independent_court_v1.py -- --source "$D/source.$EXT" --source-sha256 "$SOURCE_SHA" --v18a-npz "$D/v18a.npz" --reference-rest-npz "$D/rest.npz" --source-policy "$D/policy.json" --facts "$RUNNER_TEMP/od-palette-out-$SUBJECT/PRIVATE_ORIGINAL_SHADER_CONSTANT_PALETTE_FACTS_V1.json" --output-dir "$RUNNER_TEMP/od-palette-out-$SUBJECT"
133138 python -m tools.corpus.compile_corpus370_operational_palette_joint_v1 --native-evidence "$D/native.json" --source-palette "$RUNNER_TEMP/od-palette-out-$SUBJECT/PRIVATE_ORIGINAL_SHADER_CONSTANT_PALETTE_FACTS_V1.json" --palette-court "$RUNNER_TEMP/od-palette-out-$SUBJECT/PRIVATE_INDEPENDENT_ORIGINAL_SHADER_PALETTE_COURT_V1.json" --v18a-npz "$D/v18a.npz" --joint-evidence "$RUNNER_TEMP/od-palette-out-$SUBJECT/PRIVATE_PALETTE_NATIVE_JOINT_EVIDENCE_V1.json" --joint-decision "$RUNNER_TEMP/od-palette-out-$SUBJECT/PRIVATE_PALETTE_NATIVE_JOINT_DECISION_V1.json" --summary "$RUNNER_TEMP/od-palette-out-$SUBJECT/PRIVATE_PALETTE_NATIVE_JOINT_SUMMARY_V1.json"
139+ - name : Real Triceratops physical palette edit and independent original source-ray court
140+ if : matrix.subject == 'TRICERATOPS'
141+ run : |
142+ set -euo pipefail
143+ umask 077
144+ P="$RUNNER_TEMP/od-physical-TRICERATOPS"
145+ C="$RUNNER_TEMP/od-physical-source-court-TRICERATOPS"
146+ "$BLENDER_EXE" --background --factory-startup --threads 2 --python-exit-code 1 --python tools/truth_foundry/blender_corpus370_operational_palette_physical_render_v1.py -- --source "$D/source.$EXT" --source-sha256 "$SOURCE_SHA" --source-policy "$D/policy.json" --camera-bundle "$D/camera.json" --source-palette "$RUNNER_TEMP/od-palette-out-$SUBJECT/PRIVATE_ORIGINAL_SHADER_CONSTANT_PALETTE_FACTS_V1.json" --v18a-npz "$D/v18a.npz" --output-dir "$P"
147+ "$BLENDER_EXE" --background --factory-startup --threads 2 --python-exit-code 1 --python tools/truth_foundry/blender_corpus370_operational_palette_physical_independent_ray_court_v1.py -- --source "$D/source.$EXT" --source-sha256 "$SOURCE_SHA" --source-policy "$D/policy.json" --camera-bundle "$D/camera.json" --source-palette "$RUNNER_TEMP/od-palette-out-$SUBJECT/PRIVATE_ORIGINAL_SHADER_CONSTANT_PALETTE_FACTS_V1.json" --render-manifest "$P/PRIVATE_ORIGINAL_PHYSICAL_PALETTE_RENDER_MANIFEST_V1.json" --render-root "$P" --output-dir "$C"
134148 - name : Immutable private upload and checksum readback
135149 run : |
136150 set -euo pipefail
@@ -151,4 +165,29 @@ jobs:
151165 done
152166 test "$GOT" = 1
153167 done
168+ if [ "$SUBJECT" = TRICERATOPS ]; then
169+ SRC="$RUNNER_TEMP/od-physical-TRICERATOPS"
170+ COURT="$RUNNER_TEMP/od-physical-source-court-TRICERATOPS"
171+ OUT="$DEST/physical_source_edit"
172+ for F in "PRIVATE_ORIGINAL_PHYSICAL_PALETTE_RENDER_MANIFEST_V1.json" "PRIVATE_INDEPENDENT_ORIGINAL_PHYSICAL_PALETTE_RAY_COURT_V1.json"; do
173+ case "$F" in
174+ PRIVATE_INDEPENDENT*) FROM="$COURT/$F" ;;
175+ *) FROM="$SRC/$F" ;;
176+ esac
177+ rclone copyto "$FROM" "$OUT/$F" --checksum --retries 3
178+ rclone cat "$OUT/$F" > "$D/physical-readback-$F"
179+ cmp "$FROM" "$D/physical-readback-$F"
180+ done
181+ for V in 0 2 4 6; do
182+ for LABEL in BASELINE EDIT_0 EDIT_1 EDIT_2; do
183+ FROM="$SRC/$LABEL/V$V.png"
184+ TO="$OUT/$LABEL/V$V.png"
185+ test -s "$FROM"
186+ rclone copyto "$FROM" "$TO" --checksum --retries 3
187+ rclone cat "$TO" > "$D/physical-readback-$LABEL-V$V.png"
188+ cmp "$FROM" "$D/physical-readback-$LABEL-V$V.png"
189+ done
190+ done
191+ echo "TRICERATOPS_ORIGINAL_PHYSICAL_EDIT_SOURCE_RAY_COURT_SEALED__NO_OWNER_AUTHORITY"
192+ fi
154193 echo "SOURCE_PALETTE_JOINT_SHA_READBACK_VERIFIED__NO_GRAPHICS_OWNER"
0 commit comments